这篇里的指令都不影响标志位
通用数据传送指令
1 | MOV DST,SRC ;传送指令 |
目不能为 CS IP 或立即数
存储单元和段寄存器之间不能直接传送数据,要用通用寄存器为桥梁
立即数不能直接送到段寄存器,同样要用通用寄存器为桥梁
1 | PUSH SRC ;进栈指令 |
PUSH 操作数为 16 位的寄存器,存储器,不允许立即数,避免 PUSH SP,因为 8086/8088 和 80286 对此的处理方式不同
POP 目为 16 位的寄存器(不允许 CS 段寄存器),存储器
堆栈的存取必须以字为单位,PUSH 和 POP 只能做字操作
1 | XCHG DST, SCR ;交换指令 |
两个操作数必须有一个在寄存器中,且不允许段寄存器,允许字或字节操作(长度 8/16 位),允许立即数寻址以外的寻址方式
累加器专用传送指令
1 | IN AL, PORT ;长格式-字节 |
将外部设备的信息输入到 CPU 的累加器 AL/AX 中,源操作数是外部设备端口地址,通过 DX 寄存器指明的地址可以间接寻址 65536 个端口,而用立即数直接指明的地址只能寻址 256 个
1 | OUT PORT, AL ;长格式-字节 |
将 CPU 累加器中的信息输出到外部设备,基本和 IN 反过来
地址传送指令
1 | LEA REG, SRC ;有效地址送寄存器指令 |
REG 表示寄存器,将源操作数的有效地址送到指定寄存器,且必须为 16 位通用寄存器
1 | LDS REG, SRC ;送寄存器和 DS 指令 |
SREG 表示 DS 或 ES,源操作数只能用存储器寻址,目不允许段寄存器
类型转换指令
1 | CBW ;字节转字 |