数据传送指令的功用是把数据、地址传送到寄存器或存储器单元中。它分为4类。
● 意图操作数dst和源操作数src不能一起用存储器寻址办法,这个约束适用于一切指令;
PUSH和POP指令分别将数据存入仓库或把仓库中的数据取出。仓库是以LIFO(后进先出)办法作业的一个存储区,程序中界说的仓库段便是这样一个LIFO存储区。数据存入仓库单元或从仓库单元中取出都由仓库指针SP指示,而SP总是指向栈顶,所以进栈和出栈指令都会主动修正SP。
PUSH指令执行时,SP的内容先减2,然后将数据压入SP所指示的字单元,存储的办法同样是高8位存入高地址字节,低8位存入低地址字节。POP指令执行时,将SP所指示的栈顶地址的内容取出放入意图地址,然后SP增2,指向新的栈顶地址。
● PUSH和POP指令只能是字操作,因而存取字数据后,SP的修正有必要是+2或-2;
PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这一些数据康复。
XCHG指令使两个操作数opr1,和opr2相互交流,其间一个操作数有必要在寄存器中,另一个操作数能够在寄存器或存储器中。
对8086及其后继机型的微处理机,一切I/O端口与CPU之间的通讯都由输入输出指令IN和OUT来完结。IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因而,IN和OUT指令都要指出I/O端口地址。微处理机分配给外部设备最多有64K个端口,其间前256个端口(0~FFH)称为固定端口,能够直接在指令中指定。当端口地址超越8位(256),称为可变端口,它有必要先送到DX寄存器,然后再用IN或OUT指令传送信息。CPU与I/O端口传送信息的寄存器只限于累加器ac (AX或AL),传送16位信息用AX,传送8位信息用AL,这取决于外设端口的宽度。