资源描述:
《微机原理与接口技术汇编语言》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8086指令系统分为以下6组: ⒈数据传送指令 ⒉算术指令 ⒊逻辑指令 ⒋串处理指令 ⒌控制转移指令 ⒍处理机控制指令数据传送指令 数据传送指令的功能是把数据、地址传送到寄存器或存储器单元中。它分为4类。 ⑴通用数据传送指令 ⑵累加器专用传送指令 MOV 传送 IN 输入 PUSH 进栈 OUT 输出 POP 出栈 XLAT 换码 XCHG 交换 ⑶地址传送指令 ⑷标志寄存器传送指令 LEA 有效地址送寄存器
2、 LAHF 标志送AH LDS 指针送寄存器和DS SAHF AH送标志寄存器 LES 指针送寄存器和ES PUSHF标志进栈 POPF 标志出栈1通用数据传送指令 MOV dst,src;传送指令(move) 执行操作:(dst)←(src) 功能:将源操作数(字节或字)传送到目的地址。 注意: ●目的操作数dst和源操作数src不能同时用存储器寻址方式,这个限制适用于所有指令; ●目的操作数dst不能是CS,也不能用立即数方式; ●目的
3、操作数dst和源操作数src不允许同时为段寄存器; ●MOV指令不影响标志位。 PUSH src;进栈指令(pushontothestack) 执行操作:(SP)←(SP)-2 ((SP))←(src) POP dst;出栈指令(popfromthestack) 执行操作:(dst)←((SP)) (SP)←(SP)+2 PUSH和POP指令分别将数据存入堆栈或把堆栈中的数据取出。堆栈是以LIFO(后进先出)方式工作的一个存储区,程序中定义的堆栈段就是这样一个LIFO存储区。
4、数据存入堆栈单元或从堆栈单元中取出都由堆栈指针SP指示,而SP总是指向栈顶,所以进栈和出栈指令都会自动修改SP。 PUSH指令执行时,SP的内容先减2,然后将数据压入SP所指示的字单元,存储的方法同样是高8位存入高地址字节,低8位存入低地址字节。POP指令执行时,将SP所指示的栈顶地址的内容取出放入目的地址,然后SP增2,指向新的栈顶地址。 注意: ●PUSH和POP指令只能是字操作,因此存取字数据后,SP的修改必须是+2或-2; ●PUSH和POP指令不能使用立即数方式; ●POP指令的dst不允许
5、是CS寄存器; ●PUSH和POP指令都不影响标志位。 PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。 XCHG opr1,opr2;交换指令(exchange) 执行操作:(opr1)←→(opr2) XCHG指令使两个操作数opr1,和opr2互相交换,其中一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。 注意: ●不允许使用段寄存器 ●不影响标志位 例假设(DS)=1000H,(SS)=4000H,(SP)=100H,(BX)=2100H,(1210
6、0)=00A8H,指出连续执行下列各条指令后,有关寄存器、存储单元以及堆栈的情况。 PUSH DS PUSH BX PUSH [BX] POP DI POP WORDPTR[DI+2] POP DS 执行结果:(SP)=100H-2=0FEH (SP)=0FE-2=0FCH (SP)=0FC-2=0FAH (400FEH)=1000H (400FCH)=2100H (400FAH)=00A8H 执行结果:(SP)=0FA+2=0F
7、CH (SP)=0FC+2=0FEH (SP)=0FE+2=100H (DI)=00A8H (100AAH)=2100H (DS)=1000H 例已知(AX)=6634H,(BX)=0F24H,(SI)=0012H,(DS)=1200H,(12F36H)=2500H,写出下列指令执行的结果。 XCHG AH,AL ;执行前:(AH)=66H,(AL)=34H ;执行后:(AH)=34H,(AL)=66H XCHG AX,[BX+SI]
8、;执行前:(AX)=6634H,(12F36H)=2500H ;执行后:(AX)=2500H,(12F36H)=6634HH 2累加器专用传送指令 这组指令只限于使用累加器(ac:AX或AL)传送信息。 IN ac,port ;输入指令(input),port≤0FFH 执行操作: (AL)←(port)传送