资源描述:
《第六章 汇编语言及其程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章汇编语言及其程序设计主要内容汇编程序及其开发过程指令格式及寻址方式8086汇编语言的基本语法顺序、分支、循环结构程序设计子程序设计汇编语言程序及开发过程基本概念汇编语言:是一种面向机器的程序设计语言,它是机器语言的符号化描述。特点:代码短、空间省、效率高汇编语言源程序:用汇编语言编写的程序目标程序:汇编语言经翻译程序翻译成的代码程序(即机器语言的程序)。汇编程序:把源程序转变为相应目标程序的翻译程序宏汇编:不仅包含一般汇编语言的功能,而且采用了高级语言使用的数据结构,是一种接近高级语言的汇编语言。汇编语言程序的开发过程编写源程序:EDIT(DOS),TextPad(
2、Windows)将源程序保存为XXXX.asm文件使用MASM生成目标程序XXXX.OBJ使用LINK生成可执行程序XXXX.EXE源程序XXXX.asm目标程序XXXX.obj可执行程序XXXX.exe设计编辑用MASM汇编用LINK连接执行使用汇编语言的过程基本汇编语言程序实例(1)DATASEGMENT(2)StringDB‘程序设计’,”$”(3)DATAENDS(4)CODESEGMENT(5)ASSUMECS:CODE,DS:DATA,SS:STACK(6)START:MOVAX,DATA(7)MOVDS,AX(8)MOVDX,OFFSETString(9)M
3、OVAH,9(10)INT21H(11)MOVAX,4C00H(12)INT21H(13)CODEENDS(14)STACKSEGMENTSTACK(15)DB256DUP(?)(16)STACKENDS(17)ENDSTARTAH=9功能:显示字符串DS:DX=串地址字符串以“$”结尾AH=4C功能:带返回码终止AL=返回码汇编语言程序的开发过程开始结束用编辑工具编辑源程序源程序XXXX.asm用MASM进行汇编有语法错误?YN目标文件XXXX.obj用LINK连接有错误?YN执行可执行文件XXXX.exe正确?NY用DEBUG调试结构化程序设计程序设计的基本步骤分析问
4、题确定处理方案确定具体操作步骤,绘制流程图编写程序调试并运行程序,得到预期结果整理输出结果,写出有关文档资料流程图的画法起止框执行框流程线条件满足?条件满足?YYNN判断框AA连接点指令格式及寻址方式指令格式操作码操作数OPCODEDW0127形式1OPCODEDW0127形式2OPCODEDW0127形式3DATA/DISPDATA/DISP1~2个字节1~2个字节MODREGR/MDATA/DISPDATA/DISP1~2个字节1~2个字节方向位,0:REG字段指出的寄存器为源操作数寄存器1:REG字段指出的寄存器为目的操作数寄存器字位,0:参加运算的操作数为字节操作
5、数1:参加运算的操作数为字操作数MOD含义MOD含义00存储器方式,无位移量01存储器方式,有8位位移量10存储器方式,有16位位移量11寄存器方式,无位移量MOD字段编码表REGW=1W=0REGW=1W=0000AXAL100SPAH001CXCL101BPCH010DXDL110SIDH011BXBL111DIBHREG字段编码表存储器方式寄存器方式有效地址的计算公式W=0W=100011011000(BX)+(SI)(BX)+(SI)+D8(BX)+(SI)+D16ALAX001(BX)+(DI)(BX)+(DI)+D8(BX)+(DI)+D16CLCX010(B
6、P)+(SI)(BP)+(SI)+D8(BP)+(SI)+D16DLDX011(BP)+(DI)(BP)+(DI)+D8(BP)+(DI)+D16BLBX100(SI)(SI)+D8(SI)+D16AHSP101(DI)(DI)+D8(DI)+D16CHBP110D16(BP)+D8(BP)+D16DHSI111(BX)(BX)+D8(BX)+D16BHDIMODR/M8086/8088常用指令集数据传送指令(14条)传送MOV堆栈操作PUSH,POP交换XCHG输入、输出IN,OUT转换XLAT地址传送LEA,LDS,LES标志传送PUSHF,POPF,LAHF,SAH
7、F算术运算指令(20条)加法ADD,ADC,AAA,DAA加“1”INC减法SUB,SBB,AAS,DAS减“1”DEC比较CMP求补NEG乘法MUL,IMUL,AAM除法DIV,IDIV,AAD符号扩展CBW,CWD逻辑运算指令(13条)求反NOT逻辑乘AND逻辑加OR异或XOR测试位TEST左/右移位SHL,SHR,SAL,SAR左/右循环移位ROL,ROR,RCL,RCR字符串指令(10条)传送串MOVS,MOVSB/MOVSW串比较CMPS,CMPSB/CMPSW串扫描SCAS,SCASB/SCASW取字符串LODS,