资源描述:
《个人形象、礼仪培训》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第三章汇编语言程序设计(2)格式#伪指令#╳DOS/BIOS调用(简单了解)重点:数据结构表示变量、指针程序结构程序流控制(条件、分支、循环)程序设计方法AssemblyLanguageProgramming(2)1编辑、汇编与链接程序编辑器(Editor)程序设计汇编器(Assembler)汇编语言(与机器有关)MASM/ASM/TASM链接器(Linker)待装配的BIN指令代码可执行BIN指令代码(.OBJ,.LIB,etc)(XXXX.EXE,(.DLL),)20000:0~3FF环境与代码运行FFFF:0堆栈段数据段
2、代码段CS:IPDSSS:SP系统起始运行程序中断向量区(系统专用)栈底最多4个活动段分段结构ES3STACK1SEGMENTPARASTACK‘STACK’DB512dup(?);定义堆栈段STACK1512字节STACK1ENDSDATASEGMENT;定义数据段DATAMESSAGEDB‘ThisASampleProgram’,LFCR$DB0DH,0AH,’$’AnyDATADW100,..DATAENDS;数据段DATA结束CODESEGMENT;定义代码段CODEASSUMECS:CODE,DS:DATA;说明汇编
3、程序活动段范围汇编语言源程序格式(例)段名段说明保留字标号.2864汇编语言例程(续1)MAINPROCFAR;MS-DOS模板语句START:PUSHDSXORAX,AXPUSHAX;保存返回指针DS:0START1:MOVAX,DATAMOVDS,AXLEABX,MESSAGELOOP1:CMPBYTEPTR[BX],’$’;24HJZNEXT;是结束符CALLPRINT_ACHAR;输出该字符INCBXJMPSHORTLOOP1;继续5汇编语言例程(续2)NEXT:……RET;返回OSMAINENDPPRINT_A_CH
4、ARPROCMOVAH,5MOVDL,[BX];子程序,NEARINT21HRETPRINT_A_CHARENDP…….CODEENDSENDSTART;汇编结束,运行从START开始6伪操作命令例1BV1DB30,20H,111110BBV2DB3DUP(xx/?);DB?,?BV3DB‘Thisisaexample’BV4DB..WV1DWBV1,BV2,BV3;近指针变量WV2DDBV4,..;远指针变量DWV1DDWV1,WV2,..;指针的指针变量DP1DDPRC1,PRC2;PRC1,PRC2为过程名BV2LEQU
5、BV4-BV3MOVBX,MV1+4MOVAL,[BX];AL=?JMPFARPTRDP1+4;;执行??7MYDATASEGMENTAT8A00HBV1DB30,20H,111110BBV2DB3DUP(20H);DB?,?BV3DB‘Thisisaexample$’BV4DB‘ItisaProblem$’WV1DWBV1,BV2,BV3WV2DWBV4DWV1DDWV1,WV2DW2DD..MYDATAENDSBV2的地址=?DW2的地址=?8A00:0003H8A00:003AH;-------0000;-------0
6、003H;-------0006H;-------0008H;-------001AH;-------002AH;-------0030H;-------0032H;-------003AH伪操作命令例1分析8CODESEGMENTPRC1PROCFAR;8B00:0000:PRC1ENDPPRC2PROCFAR;8B00:2C20:PRC2ENDPDP1DDPRC1,PRC2;8B00:3000;DP1内容=?ASSUMECS:CODE,DS:DATAJMPFARPTRDP1+4;目标地址=?=伪操作命令例2分析00,00,
7、00,8B,20,2C,00,8B8B00:2C20JMPFARPTRCS:[3004H]9汇编语言程序设计—方法回顾步骤:分析、建模---算法-单任务同其它语言:判断框条件?终止框过程/执行框起始/准备框流程图各框的表示法存储空间单元----编程----调试(DEBUG版)反复----运行/发行(Release)版设计方法:自顶向下,逐步细化,层层分解具体小任务;模块化程序设计:相对独立、功能单一、I/O关系明确:合作、排障;Global/Local变量(CS:xxx/Auto/Static)10汇编语言程序设计—结构(P
8、166)质量评估内存容量(效率)、速度、源代码(复杂性)、可维护性、可靠性基本结构(单任务):顺序、分支、循环语句1语句2语句3语句n乱序?MOVAX,100MOVBX,200MOVCX,8000ADDBX,CX……CMPBX,1000JZNEXT11汇编语言程序设计—分支结