资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数据传送指令数据传送指令通用数据传送指令堆栈操作指令地址传送指令标志寄存器传送指令 除了标志寄存器传送指令,其他指令都不会影响标志寄存器。通用数据传送指令传送指令MOV交换指令XCHG换码指令XLATBACK传送指令MOV指令格式:MOV DST, SRC可传送 立即数到寄存器、内存 寄存器到寄存器、内存、段寄存器 内存到寄存器、段寄存器 段寄存器到寄存器、内存8/16位数据MOV指令举例MOV BX, 12HMOV BYTE PTRBX, 12HMOV CL, DLMOV BP, AXMOV DS, AXMOV BL, DIMOV ES, DIMOV AX, CSMOV SI, SSMOV指令的使用规则1.立即数只能作为源操作数2.严格匹配8/16位操作3.不允许内存之间直接传送4.涉及到段寄存器的都是16位操作5.立即数不能传送到段寄存器6.CS不能作为目的操作数,IP不是操作数7.不允许段寄存器直接直接传送MOV指令使用规则(续)8.寄存器有明确的字节或字类型,对应的立即数或存储器操作数也只能是字节或字,无需说明。9.将立即数传送给存储器单元时,若指令给出的立即数是字节格式,则既可理解为字节,也可理解为字,会引起类型模糊,内存单元必须用BYTE PTR或WORD PTR类型说明符指定。MOV指令使用规则举例1. MOV 12, BL2. MOV BX, CL3. MOV BX, SI4. MOV DS, BL5. MOV ES, 1000H6. MOV CS, AX7. MOV DS, SS8. MOV BL, 12H MOV BX, 12H MOV DI, BX MOV DI, BL9. MOV 20H, 12H MOV BYTE PTR20H,12H MOV WORD PTR20H,21HBACK正确正确交换指令XCHG指令格式:XCHG reg, reg/mem不能在存储器之间交换数据操作数可以是字节或字XCHG AL, BLXCHG AX, DATAXCHG DI, BLBACK换码(查表转换)指令XLAT指令格式:XLAT;(AL) (BX)+(AL)通过查表完成代码转换首先建立被转换代码(字节型)的数据表,并将表格的首地址存放于BX,再将代码(相对于表格首地址的位移量)存入AL,执行后AL中的内容就是查表得到的转换代码。XLAT指令举例在数据段设置十六进制数0F所对应的ASCII码表: TAB DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46H NUM DB * ;015中的任一数字代码段设置如下指令,即可查出和NUM单元中的数字对应的ASCII码: MOV BX, OFFSET TAB MOV AL, NUM XLATBACK堆栈操作指令堆栈是一个“先进后出”的主存区域,SS中是段基址,SP指明当前栈顶的偏移地址。常用于数据的暂存与恢复、子程序返回地址与中断断点地址的保护和返回。堆栈只有一个出口,即当前栈顶。8086系统的堆栈向上生长,即栈底(偏移地址为0)是高地址,栈顶是低地址。程序中用配对嵌套使用保证“先进后出”,刻意的不配对使用可以用于参数传递。堆栈操作都是以字为单位的。堆栈操作指令(续)进栈指令 PUSH reg16/mem16/seg ; SPSP-2, SS:SP SRC出栈指令 POP reg16/mem16/seg ; DST SS:SP, SPSP+2堆栈指令举例1子程序中用到AX、BX和CX寄存器,为了不破坏它们在主程序中的值,在程序主体开始之前先将它们压入堆栈保存,完成程序操作后将它们反顺序弹回,再退出子程序。PUSH AXPUSH BXPUSH CX程序主体POP CXPOP BXPOP AX返回主程序堆栈指令举例2BACK将AX和BX中的内容互换:PUSH AXPUSH BXPOP AXPOP BX还有什么方法可以实现?地址传送指令有效地址送寄存器 LEA reg16, mem ; reg16mem的EA指针送寄存器:将源操作数指定的单元开始的4个连续字节的内容分别送入指令指定的寄存器以及DS或ES中。 LDS/LES reg16, mem ; reg16mem, DS/ESmem+2地址传送指令举例LEA BX, 2000HLEA BX, DILEA DI, ES:BXLDS BX, 2000HLES SI, 2000H假设DS2000H,DI200H,数据段22000H22003H中的数据分别为01H、20H、01H、20HBACK标志寄存器传送指令LAHF:FLAGS的低字节送AHSAHF:AH中的内容送FALGS低字节PUSHF:FLAGS入栈POPF:栈顶数据弹出至FLAGSBACK课堂练习找出下列指令中的错误指令并说明错误原因:MOV DX, CHMOV SS, DSMOV 13, CLMOV CX, IPMOV 20H, SIPUSH ALMOV CS, 20HPOP DLPOP DSLEA BH, BPLDS BX, AXMOV AX, 20HMOV ES, 20HMOV 20H, 255作业编写一段程序,将数据段中A单元和B单元内容互换,A+1单元和B+1单元内容互换。说明下列程序段执行后AX的值。 假设数据段有: TABLE DW 158,258,358,458 ENTRY DW 3 代码段: MOV BX, OFFSET TABLE MOV SI, ENTRY MOV AX, SI+BX作业如果数据段符号地址DBUF为3100H,并从它开始存放1234H,请问执行以下指令后AX的内容是什么? LEA AX, DBUF MOV AX, DBUF
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号