汇编语言程序设计第05章_顺序结构程序

上传人:豆浆 文档编号:5185727 上传时间:2017-08-06 格式:PPT 页数:95 大小:781.50KB
返回 下载 相关 举报
汇编语言程序设计第05章_顺序结构程序_第1页
第1页 / 共95页
汇编语言程序设计第05章_顺序结构程序_第2页
第2页 / 共95页
汇编语言程序设计第05章_顺序结构程序_第3页
第3页 / 共95页
汇编语言程序设计第05章_顺序结构程序_第4页
第4页 / 共95页
汇编语言程序设计第05章_顺序结构程序_第5页
第5页 / 共95页
点击查看更多>>
资源描述

《汇编语言程序设计第05章_顺序结构程序》由会员分享,可在线阅读,更多相关《汇编语言程序设计第05章_顺序结构程序(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 程序设计的步骤,1. 分析问题2. 建立数学模型3. 设计算法4. 编制程序5. 上机调试,5.2 流程图的应用,(1) 流程线(2) 端点框 (3) 判断框(4) 处理框(5) 连接框,5.3 程序的基本控制结构,(1) 顺序结构,(2) 分支(选择)结构,(3) 循环(迭代)结构,

2、5.4 数据传送指令,数据传送指令共有12条:MOV PUSHPOP XCHGXLAT LEALDS LESLAHF SAHFPUSHF POPF,指令汇编格式: MOV dest,src 操作: 将一个源操作数(字节或字) 传送到目标操作数中。 dest(src)受影响的状态标志位: 没有说明: 指令中dest和src不能同时为存储器操作数; CS不能做为目标操作数使用,段寄存器之间不能互相传送,立即数不能送入段寄存器。,1. MOV(move)传送,1,1. MOV(move)传送指令(举例),MOV ALPHA_W,AXMOV BETA_B,ALMOV AL,ES:BX+SI+1000H

3、MOV BX,1000HMOV DS,BXMOV BX+10,ALMOV BX,10HMOV DS,10HMOV CS,AX,2,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,10HMOVWORD PTR BX,10H,3,2.PUSH(push word onto stack)进栈,指令汇编格式: PUSH src操作:堆栈指示器减 2 SPSP-2 将给定的操作数存放到由SP指出的栈顶中。 (SP+1,

4、SP)(src)受影响的状态标志位: 没有说明: PUSH指令的目标地址一定在当前堆栈中。SS内容为段基址,偏移量由堆栈指针SP指出。操作数一定是16位的寄存器或存储器操作数。,1,2.PUSH 指令举例,假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是:,PUSH AXPUSH BX,2,2.PUSH 指令举例,PUSH AXPUSH BX,3,假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是,3. POP (pop word off stack into destination)

5、 出栈,指令汇编格式: POP dest操作:(1)将堆栈栈顶中存放的字传送到操作数中。 dest(SP+1,SP) (2) 堆栈指针加2 SPSP+2受影响的状态标志位: 没有说明:目标操作数只能是16位的存储器或寄存器操作数(CS除外)。,1,3.POP 指令举例,假定在执行指令:POP CX POP DX之前,堆栈的状态如图所示。指令执行后CX,DX的内容及堆栈的状态?,2,3,3.POP 指令举例,假定SI=1234H,DI=5678H,则执行下列指令后DS,ES的内容是?,PUSHSIPUSHDIPOP DSPOP ES,4. XCHG (eXCHanGe) 交换,指令汇编格式: X

6、CHG dest,src 操作: dest的内容与src的内容互换。 (dest)(src)受影响的状态标志位: 没有说明: dest和src不能同时为存储器操作数。段寄存器、立即数不能作为操作数。,4. XCHG指令举例,XCHG AL,BLXCHG CL,BXXCHG BL,BX+SI+10XCHG AX,AXXCHG AL,SIXCHG SI,BX+10XCHG DX,DSXCHG AL,10,2,5. XLAT (translate) 转换表,指令汇编格式: XLAT操作:BX和AL内容之和指出的内存字节单元的内容送到AL中。AL(BX+AL)受影响的状态标志位: 没有说明: XLAT

7、指令用于查表。表的开始地址即表头地址由BX寄存器给出。AL中的原始值是要寻址的表中元素地址的位移量,规定表中第一个字节的位移量为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 DWQAFGRB,5. XLAT 应用举例,2,5. XLAT 应用举例,JMTAB DB YZ

8、DMRNHXJLIOQ DB UWACBEGFKPTSV MOV AX,SEG JMTAB MOV DS,AX MOV BX,OFFSET JMTAB MOV AL,T; SUB AL,A MOV AH,0 ADD BX,AX MOV AL,BX,3,5. XLAT 应用举例,JMTAB DB YZDMRNHXJLIOQ DB UWACBEGFKPTSV MOV AX,SEG JMTAB MOV DS,AX MOV BX,OFFSET JMTAB MOV AL,T; SUB AL,A XLAT,5,6. LEA (load effective address) 取有效地址,指令汇编格式: LE

9、A dest,src操作: 将指令中给出的存储器操作数的有效地址(即地址的偏移量)送到指定的寄存器中。 destEA受影响的状态标志位: 没有说明: LEA指令是将源操作数地址的偏移量,即有效地址传送到目标操作数中。源操作数必须是一个存储器操作数,标操作数可以是任一16位通用寄存器、指针寄存器或变址寄存器。,1,6. 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+1234H,2,7.LDS (load data segmen

10、t register) 加载数据段寄存器,指令汇编格式: LDS dest,src操作:(1)将双字长存储器操作数中的低地址字传送到指定的寄存器中。 dest(EA) (2)将双字长存储器操作数中的高地址字传送到DS寄存器中。 DS(EA+2)受影响的状态标志位: 没有说明: LDS是将src指出的连续两个字的内容,即一个32位的指针变量传送到一对16位的目标寄存器中。高位字为段基地址,LDS指令将其传送到数据段寄存器DS中,低位字为偏移量,传送到由dest指出的一个通用寄存器,指针寄存器或变址寄存器中,但不能是段寄存器。,8.LES (load data segment register)

11、加载附加段寄存器,指令汇编格式: LES dest,src操作:(1)将双字长存储器操作数中的低地址字传送到指定的寄存器中。 dest(EA) (2)将双字长存储器操作数中的高地址字传送到ES寄存器中。 ES(EA+2)受影响的状态标志位: 没有说明: LDS是将src指出的连续两个字的内容,即一个32位的指针变量传送到一对16位的目标寄存器中。高位字为段基地址,LDS指令将其传送到附加段寄存器ES中,低位字为偏移量,传送到由dest指出的一个通用寄存器,指针寄存器或变址寄存器中,但不能是段寄存器。,9. LAHF (load AH from flags) 取标志,指令汇编格式: LAHF操作

12、:标志寄存器低8 位的状态标志填写在AH寄存器相应位中。 AHSF:ZF:AF:PF:CF受影响的状态标志位: 没有说明: 此指令在80x86中几乎无用,主要是为了保证与8080/8085向下兼容,才保留了该指令.,10. SAHF (store AH into flags) 存标志,指令汇编格式: SAHF操作: 将AH寄存器中的相应位传送到状态标志寄存器相应位中。 SF:ZF:AF:PF:CFAH受影响的状态标志位: SF,ZF,AF,PF,CF说明: 此指令在80x86中几乎无用,主要是为了保证与8080/8085向下兼容,才保留了该指令.,11. PUSHF (push flags o

13、nto stack) 标志进栈,指令汇编格式: PUSHF操作: 将堆栈指针减2,然后将标志寄存器F中的值存储到栈顶字的对应位中; SPSP-2 (SP+1,SP)F 受影响的状态标志位: 没有,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)加法2. ADC(addition with carry)带进位加3. INC(increment by 1)增1,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,BL,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号