汇编语言程序设计第05章顺序结构程序.ppt
《汇编语言程序设计第05章顺序结构程序.ppt》由会员分享,可在线阅读,更多相关《汇编语言程序设计第05章顺序结构程序.ppt(95页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编语言程序设计齐志儒 高福祥 主编东北大学出版社第五章第五章 顺序结构程序顺序结构程序5.1 程序设计的步骤5.2 流程图的应用5.3 程序的基本控制结构5.4 数据传送指令5.5 算术运算指令5.6 逻辑操作指令5.7 移位操作指令5.8 状态标志位操作指令5.9 简单的I/O功能调用5.10 顺序结构程序举例5.1 5.1 程序设计的步骤程序设计的步骤 1.分析问题2.建立数学模型3.设计算法4.编制程序5.上机调试5.2 5.2 流程图的应用流程图的应用(1)流程线(2)端点框(3)判断框(4)处理框(5)连接框5.3 5.3 程序的基本控制结构程序的基本控制结构S1S2S3S2S1Y
2、N条件=真S1条件=真NY条件=真S1S2YN(1)顺序结构(2)分支(选择)结构(3)循环(迭代)结构5.4 5.4 数据传送指令数据传送指令数据传送指令共有12条:MOV PUSHPOP XCHGXLAT LEALDS LESLAHF SAHFPUSHF POPF指令汇编格式指令汇编格式:MOV dest,src 操作操作:将一个源操作数(字节或字)传送到目标操作数中。dest(src)受影响的状态标志位:没有说明:指令中dest和src不能同时为存储器操作数;CS不能做为目标操作数使用,段寄存器之间不能互相传送,立即数不能送入段寄存器。1.MOV(move)1.MOV(move)传送传送
3、11.MOV(move)1.MOV(move)传送指令传送指令(举例举例)MOV ALPHA_W,AXMOV BETA_B,ALMOV AL,ES:BX+SI+1000HMOV BX,1000HMOV DS,BXMOV BX+10,ALMOV BX,10HMOV DS,10HMOV CS,AX21.MOV(move)1.MOV(move)传送指令传送指令(举例举例)MOV ALPHA_W,AXMOV BETA_B,ALMOV AL,ES:BX+SI+1000HMOV BX,1000HMOV DS,BXMOV BX+10,ALMOV BYTE PTR BX,10HMOV WORD PTR BX,
4、10H32.PUSH(push word onto stack)2.PUSH(push word onto stack)进栈进栈指令汇编格式指令汇编格式:PUSH src操作操作:堆栈指示器减 2 SPSP-2 将给定的操作数存放到由SP指出的栈顶中。(SP+1,SP)(src)受影响的状态标志位:没有说明:PUSH指令的目标地址一定在当前堆栈中。SS内容为段基址,偏移量由堆栈指针SP指出。操作数一定是16位的寄存器或存储器操作数。12.PUSH 2.PUSH 指令举例指令举例假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是:PUSH A
5、XPUSH BX22.PUSH 2.PUSH 指令举例指令举例PUSH AXPUSH BX3假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是3.POP(pop word off stack into 3.POP(pop word off stack into destination)destination)出栈出栈指令汇编格式指令汇编格式:POP dest操作操作:(1)将堆栈栈顶中存放的字传送到操作数中。dest(SP+1,SP)(2)堆栈指针加2 SPSP+2受影响的状态标志位:没有说明说明:目标操作数只能是16位的存储器或寄存器操作
6、数(CS除外)。13.POP 3.POP 指令举例指令举例假定在执行指令:POP CX POP DX之前,堆栈的状态如图所示。指令执行后CX,DX的内容及堆栈的状态?233.POP 3.POP 指令举例指令举例 假定SI=1234H,DI=5678H,则执行下列指令后DS,ES的内容是?PUSHSIPUSHDIPOP DSPOP ES4.XCHG(eXCHanGe)4.XCHG(eXCHanGe)交换交换指令汇编格式指令汇编格式:XCHG dest,src 操作操作:dest的内容与src的内容互换。(dest)(src)受影响的状态标志位:没有说明说明:dest和src不能同时为存储器操作数
7、。段寄存器、立即数不能作为操作数。4.XCHG4.XCHG指令举例指令举例XCHG AL,BLXCHG CL,BXXCHG BL,BX+SI+10XCHG AX,AXXCHG AL,SIXCHG SI,BX+10XCHG DX,DSXCHG AL,1025.XLAT(translate)5.XLAT(translate)转换表转换表指令汇编格式指令汇编格式:XLAT操作操作:BX和AL内容之和指出的内存字节单元的内容送到AL中。AL(BX+AL)受影响的状态标志位受影响的状态标志位:没有说明说明:XLAT指令用于查表。表的开始地址即表头地址由BX寄存器给出。AL中的原始值是要寻址的表中元素地址
8、的位移量,规定表中第一个字节的位移量为0。这是一种特殊的基址变址寻址方式,基址寄存器为BX,变址寄存器为AL。看如下的一种加密方式(替代加密):A B C D E F G H I J K L M N O P QY Z D M R N H X J L I O Q U W A CR S T U V W X Y ZB E G F K P T S V明文:THIS IS A COMPUTER密文:GXJE JE Y DWQAFGRB5.XLAT 5.XLAT 应用举例应用举例25.XLAT 5.XLAT 应用举例应用举例JMTAB DB YZDMRNHXJLIOQ DB UWACBEGFKPTSV M
9、OV AX,SEG JMTAB MOV DS,AX MOV BX,OFFSET JMTAB MOV AL,T;SUB AL,A MOV AH,0 ADD BX,AX MOV AL,BX35.XLAT 5.XLAT 应用举例应用举例JMTAB DB YZDMRNHXJLIOQ DB UWACBEGFKPTSV MOV AX,SEG JMTAB MOV DS,AX MOV BX,OFFSET JMTAB MOV AL,T;SUB AL,A XLAT56.LEA(load effective address)6.LEA(load effective address)取有效地址取有效地址指令汇编格式指
10、令汇编格式:LEA dest,src操作操作:将指令中给出的存储器操作数的有效地址(即地址的偏移量)送到指定的寄存器中。destEA受影响的状态标志位受影响的状态标志位:没有说明说明:LEA指令是将源操作数地址的偏移量,即有效地址传送到目标操作数中。源操作数必须是一个存储器操作数,标操作数可以是任一16位通用寄存器、指针寄存器或变址寄存器。16.LEA6.LEA指令举例指令举例DATA1 DB 10H LEA BX,DATA1 MOV BX,OFFSET DATA1 MOV BX,1000H MOV DI,2000H LEA AX,BX+1243H LEA DX,BX+SI+1234H27.7
11、.LDS(load data segment LDS(load data segment register)register)加载数据段寄存器加载数据段寄存器指令汇编格式指令汇编格式:LDS dest,src操作操作:(1)将双字长存储器操作数中的低地址字传送到指定的寄存器中。dest(EA)(2)将双字长存储器操作数中的高地址字传送到DS寄存器中。DS(EA+2)受影响的状态标志位受影响的状态标志位:没有说明说明:LDS是将src指出的连续两个字的内容,即一个32位的指针变量传送到一对16位的目标寄存器中。高位字为段基地址,LDS指令将其传送到数据段寄存器DS中,低位字为偏移量,传送到由de
12、st指出的一个通用寄存器,指针寄存器或变址寄存器中,但不能是段寄存器。8.8.LES(load data segment LES(load data segment register)register)加载附加段寄存器加载附加段寄存器指令汇编格式指令汇编格式:LES dest,src操作操作:(1)将双字长存储器操作数中的低地址字传送到指定的寄存器中。dest(EA)(2)将双字长存储器操作数中的高地址字传送到ES寄存器中。ES(EA+2)受影响的状态标志位受影响的状态标志位:没有说明说明:LDS是将src指出的连续两个字的内容,即一个32位的指针变量传送到一对16位的目标寄存器中。高位字为段
13、基地址,LDS指令将其传送到附加段寄存器ES中,低位字为偏移量,传送到由dest指出的一个通用寄存器,指针寄存器或变址寄存器中,但不能是段寄存器。9.LAHF(load AH from flags)9.LAHF(load AH from flags)取取标志标志指令汇编格式指令汇编格式:LAHF操作操作:标志寄存器低8 位的状态标志填写在AH寄存器相应位中。AHSF:ZF:AF:PF:CF受影响的状态标志位受影响的状态标志位:没有说明说明:此指令在80 x86中几乎无用,主要是为了保证与8080/8085向下兼容,才保留了该指令.10.SAHF(store AH into 10.SAHF(st
14、ore AH into flags)flags)存标志存标志指令汇编格式指令汇编格式:SAHF操作操作:将AH寄存器中的相应位传送到状态标志寄存器相应位中。SF:ZF:AF:PF:CFAH受影响的状态标志位受影响的状态标志位:SF,ZF,AF,PF,CF说明说明:此指令在80 x86中几乎无用,主要是为了保证与8080/8085向下兼容,才保留了该指令.11.PUSHF(push flags onto stack)11.PUSHF(push flags onto stack)标志进栈标志进栈指令汇编格式指令汇编格式:PUSHF操作操作:将堆栈指针减2,然后将标志寄存器F中的值存储到栈顶字的对应
15、位中;SPSP-2 (SP+1,SP)F 受影响的状态标志位受影响的状态标志位:没有12.POPF(pop flags off stack)12.POPF(pop flags off stack)标志出栈标志出栈指令汇编格式指令汇编格式:POPF操作操作:将位于堆栈栈顶字中的对应位写入标志寄存器F中,然后将堆栈指针加2。F(SP+1,SP)SPSP+2受影响的状态标志位受影响的状态标志位:所有标志位5.5 算术运算指令算术运算指令5.5.1 加法运算指令5.5.2 减法运算指令5.5.3 乘法运算指令5.5.4 除法运算指令5.5.1 加法运算指令加法运算指令1.ADD(addition)加法
16、2.ADC(addition with carry)带进位加3.INC(increment by 1)增11.ADD(addition)1.ADD(addition)加法加法指令汇编格式指令汇编格式:ADD dest,src操作操作:两个操作数求和,结果存目标操作数中。dest(dest)+(src)受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:dest和src不能同时为存储器操作数和段寄存器。例例:ADD AL,3 ADD CX,MEM_W ADD GAMABPDI,BL ADD BP+DI+OFFSET GAMA,BL2.ADC(addition wit
17、h 2.ADC(addition with carry)carry)带进位加法带进位加法指令汇编格式指令汇编格式:ADC dest,src操作操作:两个操作数相加的同时,再加上CF。结果存入目标操作数中。dest(dest)+(src)+CF受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:ADC指令主要用于多精度数据相加。例:ADC AL,3 ADC DX,BX+102.ADC 2.ADC 指令应用指令应用3字节数据相减:123456H+789ABCH=8ACF12H00010010 00110100 0101011001111000 10011010 101111001000
18、1010 11001111 00010010 ADC ADC ADD+MOV AL,56HMOV AH,34HMOV BL,12HADD AL,0BCHADC AH,9AHADC BL,78H2.ADC 2.ADC 指令应用指令应用3字节数据相减:123456H+789ABCH=8ACF12H00010010 00110100 0101011001111000 10011010 1011110010001010 11001111 00010010 ADC ADC ADD+MOV AL,56HMOV AH,34HMOV BL,12HADD AL,0BCHADC AH,9AHADC BL,79HM
19、OV AX,3456HADD AX,9ABCH3.INC(increment by one)3.INC(increment by one)增增1 1指令汇编格式指令汇编格式:INC dest操作操作:将指定的操作数加1,并将结果回送到目标操作数中。dest(dest)+1受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF说明说明:INC 指令不影响CF。例例:INC AL INC BX INC DATA1 INC BX3.INC(increment by one)3.INC(increment by one)增增1 1指令汇编格式指令汇编格式:INC dest操作操作:将指定的
20、操作数加1,并将结果回送到目标操作数中。dest(dest)+1受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF说明说明:INC 指令不影响CF。例例:INC AL INC BX INC DATA1 INC BXINC WORD PTRBX5.5.2 减法运算指令减法运算指令1.SUB(subtract)减法2.SBB(subtract with borrow)带借位加3.DEC(decrement by 1)减14.NEG(negate)取补5.CMP(compare)比较1.SUB(subtract)1.SUB(subtract)减法减法指令汇编格式指令汇编格式:SUB
21、dest,src操作操作:从目标操作数减去源操作数,结果存入目标操作数中。dest(dest)-(src)受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF例例:SUB AL,10H SUB AL,BX+10H SUB AL,AL2.SBB(subtract with borrow)2.SBB(subtract with borrow)带带借位减法借位减法指令汇编格式指令汇编格式:SBB dest,src操作操作:从目标操作数中减去源操作数和CF,结果存入目标操作数中。dest(dest)-(src)-CF受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF
22、,CF说明说明:SBB 指令主要用于多精度数据减法。例例:SBB AL,0 SBB DL,CL3.DEC(decrement by one)3.DEC(decrement by one)减减1 1指令汇编格式指令汇编格式:DEC dest操作操作:将指定的操作数减1,并将结果送回到目标操作数中。dest(dest)-1受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF说明说明:DEC指令不影响CF。例例:DEC BX DEC BYTE PTR BX+SI+1000H DEC SP4.NEG(negate)4.NEG(negate)取补取补(取负取负)指令汇编格式指令汇编格式:N
23、EG dest操作操作:从0中减去指令中给定的操作数,最后将结果送回到给定的操作数中。dest0-(dest)受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:NEG 指令对于带符号的数来说是取负,即改变操作数的符号.例:NEG AX NEG BYTE PTR BX+105.CMP(compare)5.CMP(compare)比较比较指令汇编格式指令汇编格式:CMP dest,src操作操作:从目标操作数中减去源操作数 (dest)-(src)受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF说明说明:CMP 将两个操作数相减,两个操作数保持原值不变,但与S
24、UB指令一样影响标志。例例:CMP AL,BL CMP DL,10H 5.5.3 乘法运算指令乘法运算指令 乘法指令共有两条,分别对应无符号整数的乘法和带符号整数的乘法.1.MUL(multiply,unsigned)无符号乘法2.IMUL(integer multiply,signed)带符号乘法1.MUL 1.MUL 无符号乘法无符号乘法指令汇编格式指令汇编格式:MUL src操作操作:源操作数与累加器的内容相乘。如果源操作数是字节数据,就与AL中的数据相乘,乘积为字,存放在AX中。如果源操作数是字数据,就与AX中的数相乘,乘积为双字,存放在DX和AX中。两个字节数相乘:AXAL*(src
25、)两个字数据相乘:DX,AXAX*(src)受影响的状态标志位受影响的状态标志位:OF,CF说明说明:源操作数src不能是立即数。如果乘积的高半部 不为零时,CF和OF被置位,否则将被清除。1.MUL 1.MUL 无符号乘法无符号乘法ALsrcAXAXsrc AXDX例:MUL BL MUL DX MUL BYTE PTR SI+BX+1000H2.IMUL 2.IMUL 带符号乘法带符号乘法指令汇编格式指令汇编格式:IMUL src操作操作:将源操作数与累加器的内容相乘。如果源操作数是字节数据,就与AL中的数相乘,乘积为字,存放在AX中。如果源操作数是字数据,那么就与AX数相乘,乘积为双字,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 05 顺序 结构 程序
限制150内