网站规划设计,网站建设平台的比较,oa软件定制开发,网监备案网站目录
数据传送指令#xff1a;
通用数据传送指令#xff1a;
MOV指令#xff1a;
堆栈操作指令#xff1a;
PUSH指令#xff1a;
POP指令#xff1a;
交换指令XCHG#xff1a;
XCHG指令#xff1a;
换码指令XLAT#xff1a;
换码指令XLAT#xff1a; 8086 …目录
数据传送指令
通用数据传送指令
MOV指令
堆栈操作指令
PUSH指令
POP指令
交换指令XCHG
XCHG指令
换码指令XLAT
换码指令XLAT 8086 CPU指令系统按功能可以分为6类
数据传送指令、算术运算指令、逻辑指令、串处理指令、控制转移指令和处理器控制指令。 数据传送指令
8086有4种数据传送指令用于实现寄存器之间、存储器与寄存器、累加器AX或AL与I/O端口、立即数到寄存器或到存储器的字节或字的传送。 通用数据传送指令
MOV指令 功能把一个字节或一个字从源操作数PORD2送至目的操作数OPRD1源操作数不改变。 格式 MOV OPRD1目的OPRD2源 (1) CS和IP两个寄存器不能作为目的操作数也就是CS、IP不能用MOV指令来修改。
CS和IP进行的是程序运行的定位只有需要对于程序运行过程进行改变时 才可以用特定的指令改变程序运行位置
(2) 当采用BX、DI、SI来间接寻址时默认的段寄存器为DS当用BP来寻址时默认的段寄存器为SS
(3)所有MOV指令都不影响标志位。
(4)不能用上述命令来实现存储单元之间、立即数至段寄存器及段寄存器之间的传送。
(5)源和目的操作数的类型要一致即同时为字节或同时为字 正确用法 数据传输 立即数→寄存器能将常数传进通用寄存器例如 “MOV AX, 100”。寄存器→寄存器同长度寄存器间传数据 像 “MOV CX, BX”。存储器→寄存器从内存取数据到寄存器比如 “MOV AL, [SI]” 。寄存器 / 立即数→存储器把数据存进内存单元如 “MOV [1000H], AX”“MOV [2000H], 05H ”。涉及段寄存器通用寄存器内容可传至段寄存器如 “MOV DS, AX” 但不能直接用立即数给段寄存器赋值。寻址方式搭配 直接寻址按给定内存地址操作“MOV AX, [2000H]”。间接寻址借助 BX、BP、SI、DI 寄存器找内存地址“MOV AX, [BX]” 。相对寻址、基址变址、相对基址变址寻址利用寄存器加位移量精准定位内存如 “MOV AX, [BX 10H]”“MOV AX, [BXSI]”“MOV AX, [BXSI20H]” 。 堆栈操作指令
PUSH、POP指令 格式PUSH Src POP Dst 功能压入堆栈指令PUSH是将16位的源操作数压入堆栈弹出堆栈指令POP是从栈顶单元弹出16位的源操作数到目标地址。
8086的堆栈操作是按字操作的。每执行一条PUSH指令先将堆栈指针SP自动减2然后将16位(字)操作数压入栈顶单元。其低8位数据存低字节地址单元高8位数据存高字节地址单元。执行弹出POP指令时操作正好相反先弹出一个字数据至目标地址再修正堆栈指针SP自动加2。 若子程序开始有如下保护现场指令 PUSH AX PUSH DS 子程序 则子程序返回前应按如下顺序恢复现场 POP DS POP AX 8086规定凡是遇到给SS寄存器赋值的传送指令时系统会自动禁止外部中断等到本条指令和下条指令被执行后才恢复对SS和SP寄存器赋值前的中断开放情况。这样做是为了允许程序连续用两条指令分别对SS和SP寄存器赋值同时又防止堆栈空间变动过程中出现中断。故应用时应注意在修改SS和SP指令之间不要插入其他指令。
PUSH指令 POP指令 交换指令XCHG
XCHG指令 格式XCHG OPRD1OPRD2 功能操作数OPRD1的内容与操作数OPRD2的内容交换
OPRD1和OPRD2可以是通用寄存器和存储单元两个操作数不能同时为存储单元可以采用除立即数以外的各种寻址方式 换码指令XLAT
换码指令XLAT 格式 XLAT 功能用来将一种字节代码转换成另一种字节代码。它将BX的内容(代码表格首地址)和AL的内容(表格偏移量)相加作为有效地址并从中取出此地址单元中的内容送到AL中。完成一个字节的查表转换。把累加器AL中的(被查)值转换成以BX为表基址的表中值
XLAT指令可用来将一个代码值转换成相应的另一种代码值。应用时首先应列出两种代码的表格。
XLAT 指令执行前要先将表格的首地址存到DS:BX寄存器对里。同时把需要转换的代码相对表格首地址的偏移量也就是索引值存放在AL寄存器。当执行 XLAT 指令时处理器会把AL中的偏移量和DS:BX组合计算出实际物理地址然后从该地址处取出一个字节数据再将这个数据送回AL寄存器以此替换掉原来的偏移量完成代码转换。例如若有一张 ASCII 码值转换表存放着字符对应的扩展 ASCII 码已知字符对应的序号在AL利用 XLAT 就能快速得到对应的扩展码。
例如要将十进制数09转换成共阳极LED显示的字形代码则列表如表所示。