8080汇编手册数据传输指令
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。
通用数据传送指令
MOV
传送字或字节。MOVSX
先符号扩展,再传送。MOVZX
先零扩展,再传送。PUSH
把字压入堆栈。POP
把字弹出堆栈。PUSHA
把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈。POPA
把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈。PUSHAD
把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈。POPAD
把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈。BSWAP
交换32位寄存器里字节的顺序。XCHG
交换字或字节。( 至少有一个操作数为寄存器,段寄存器不可作为操作数)CMPXCHG
比较并交换操作数。( 第二个操作数必须为累加器AL/AX/EAX )XADD
先交换再累加。( 结果在第一个操作数里 )XLAT
字节查表转换。- BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 0-FFH); 返回 AL 为查表结果。 ( [BX+AL]->AL )
输入输出端口传送指令
IN
I/O端口输入。 ( 语法: IN 累加器, {端口号│DX} )OUT
I/O端口输出。 ( 语法: OUT {端口号│DX},累加器 )
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时, 其范围是 0-65535。
目的地址传送指令
LEA
装入有效地址。- 例: LEA DX,string ;把偏移地址存到DX。
LDS
传送目标指针,把指针内容装入DS。- 例: LDS SI,string ;把段地址:偏移地址存到DS:SI。
LES
传送目标指针,把指针内容装入ES。- 例: LES DI,string ;把段地址:偏移地址存到ES:DI。
LFS
传送目标指针,把指针内容装入FS。- 例: LFS DI,string ;把段地址:偏移地址存到FS:DI。
LGS
传送目标指针,把指针内容装入GS。- 例: LGS DI,string ;把段地址:偏移地址存到GS:DI。
LSS
传送目标指针,把指针内容装入SS。- 例: LSS DI,string ;把段地址:偏移地址存到SS:DI。
标志传送指令
LAHF
标志寄存器传送,把标志装入AH。SAHF
标志寄存器传送,把AH内容装入标志寄存器。PUSHF
标志入栈。POPF
标志出栈。PUSHD
32位标志入栈。POPD
32位标志出栈。
二、算术运算指令
ADD
加法ADC
带进位加法INC
加 1AAA
加法的ASCII码调整DAA
加法的十进制调整SUB
减法SBB
带借位减法DEC
减 1NEG
求反(以 0 减之)CMP
比较AAS
减法的ASCII码调整DAS
减法的十进制调整MUL
无符号乘法IMUL
整数乘法AAM
乘法的ASCII码调整DIV
无符号除法IDIV
整数除法AAD
除法的ASCII码调整CBW
字节转换为字CWD
字转换为双字CWDE
字转换为双字CDQ
双字扩展
三、逻辑运算指令
AND
与运算OR
或运算XOR
异或运算NOT
取反TEST
测试SHL
逻辑左移SAL
算术左移SHR
逻辑右移SAR
算术右移ROL
循环左移ROR
循环右移RCL
通过进位的循环左移RCR
通过进位的循环右移
四、串指令
DS:SI
:源串段寄存器:源串变址。ESI
:目标串段寄存器:目标串变址。CX
:重复次数计数器。AL/AX
:扫描值。D标志
:0表示重复操作中SI和DI应自动增量;1表示应自动减量。Z标志
:用来控制扫描或比较操作的结束。
指令列表:
MOVS
:串传送。 (MOVSB
传送字符,MOVSW
传送字,MOVSD
传送双字)CMPS
:串比较。 (CMPSB
比较字符,CMPSW
比较字)SCAS
:串扫描。LODS
:装入串。(LODSB
传送字符,LODSW
传送字,LODSD
传送双字)STOS
:保存串。
重复前缀:
REP
:当CX/ECX<>0
时重复。REPE/REPZ
:当ZF=1
或比较结果相等,且CX/ECX<>0
时重复。REPNE/REPNZ
:当ZF=0
或比较结果不相等,且CX/ECX<>0
时重复。REPC
:当CF=1
且CX/ECX<>0
时重复。REPNC
:当CF=0
且CX/ECX<>0
时重复。
五、程序转移指令
1. 无条件转移指令 (长转移)
JMP
:无条件转移指令。CALL
:过程调用。RET/RETF
:过程返回。
2. 条件转移指令 (短转移,-128到+127的距离内)
JA/JNBE
:不小于或不等于时转移。JAE/JNB
:大于或等于转移。JB/JNAE
:小于转移。JBE/JNA
:小于或等于转移。...
(其他条件转移指令)
3. 循环控制指令(短转移)
LOOP
:CX
不为零时循环。LOOPE/LOOPZ
:CX
不为零且标志Z=1
时循环。LOOPNE/LOOPNZ
:CX
不为零且标志Z=0
时循环。JCXZ
:CX
为零时转移。JECXZ
:ECX
为零时转移。
4. 中断指令
INT
:中断指令。INTO
:溢出中断。IRET
:中断返回。
5. 处理器控制指令
HLT
:处理器暂停,直到出现中断或复位信号才继续。WAIT
:当芯片引线TEST
为高电平时使CPU进入等待状态。- … (其他处理器控制指令)
六、伪指令
DW
:定义字(2字节)。PROC
:定义过程。ENDP
:过程结束。SEGMENT
:定义段。ASSUME
:建立段寄存器寻址。ENDS
:段结束。END
:程序结束。