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
加 1 -
AAA
加法的ASCII码调整 -
DAA
加法的十进制调整 -
SUB
减法 -
SBB
带借位减法 -
DEC
减 1 -
NEC
求反(以 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
:程序结束。