1 数据传输指令
格式:MOV 目的操作数,源操作数
功能:将源操作数的内容传送给目的操作数,源操作数不变
例如:
MOV AX,2000H ;将16位数据2000H传送到AX寄存器。
MOV AL,20H ;将8位数据20H传送到AL寄存器。
MOV AX,BX ;将BX寄存器的16位数据传送到AX寄存器。
MOV AL,[2000H] ;将2000H单元的内容传送到AL寄存器。
格式:XCHG 寄存器,存储器操作数/寄存器
功能:实现源操作数和目的操作数之间的的内容互换
例如:
MOV AX, 1234H ; AX=1234H
MOV BX, 5678H ; BX=5678H
XCHG AX,BX ; AX=5678H,BX=1234H,AX和BX寄存器内的值发生了交换
注意:存储器与存储器之间不能发生交换
格式:POP 寄存器/段寄存器/内存单元
功能:让数据出栈,并用一个寄存器/段寄存器/内存字单元接收出栈的数据(POP 指令首先把 ESP 指向的堆栈元素内容复制到一个 16 位或 32 位目的操作数中,再增加 ESP 的值)
例如:
MOV AX,1000H
MOV DS,AX ; 内存单元的段地址要放在DS中
PUSH [0] ; 将1000:0处的字压入栈中
POP[2] ; 出栈,出栈的数据送入1000:2处
格式:PUSH 寄存器/段寄存器/内存单元
功能:将一个寄存器/段寄存器/内存字单元中的数据入栈(PUSH 指令首先减少 ESP 的值,再将源操作数复制到堆栈)
例如:
MOV AX,1000H
MOV DS,AX ; 内存单元的段地址要放在DS中
PUSH [0] ; 将1000:0处的字压入栈中
POP[2] ; 出栈,出栈的数据送入1000:2处
格式:XLAT
或XLAT 首地址
功能:将AL与BX寄存器内容之和作为偏移地址,将其所对应的存储单元的内容送入AL寄存器。
执行前:在内存建立一个字节表格,内含要转换成的目的代码
BX——存放表格首地址
AL——存放相对表格首地址的偏移量
执行后:将AL寄存器的内容转换为目标代码
2 输入输出端口传送指令
格式:IN 寄存器名,端口号
功能:通过指定的端口号输入数据到寄存器当中
例如:
IN AL,21H ;表示从21H端口读取一字节数据到AL
格式:OUT 端口号,寄存器名
功能:把CPU寄存器中存储的数据输出到指定端口号的端口
例如:
OUT 21H,AL;将AL的值写入21H端口
注意:输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
其范围是 0-65535.
3 目的地址传送指令
格式:LEA 寄存器,内存单元
功能:LEA指令将存储器内的偏移地址送到指定的寄存器
例如:
LEA DX, [SI] ;把偏移地址存到DX
格式:LDS 寄存器,内存单元
功能:传送目标指针,把指针内容装入DS
例如:
LDS SI, 1000H ;把段地址:偏移地址存到DS:SI
格式:LES 寄存器,内存单元
功能:传送目标指针,把指针内容装入ES
例如:
LES DI, 1000H ; 把段地址:偏移地址存到ES:DI
格式:LFS 寄存器,内存单元
功能:传送目标指针,把指针内容装入FS
例如:
LFS DI, 1000H ; 把段地址:偏移地址存到FS:DI
格式:LGS 寄存器,内存单元
功能:传送目标指针,把指针内容装入GS
例如:
LGS DI, 1000H ; 把段地址:偏移地址存到GS:DI
格式:LSS 寄存器,内存单元
功能:传送目标指针,把指针内容装入SS
例如:
LSS DI, 1000H ; 把段地址:偏移地址存到SS:DI