名词: 存贮器(memory uint,MEM)、 寄存器(register,REG)、 输入输出端口(input output port,IO)、 端口(port)、 立即数(Immediate,IMM)、 目标操作数(target operand,TOPER)、 源操作数(source operand,SOPER)。
8086寄存器(共有14个,均16位):
通用寄存器:
AX,BX,CX,DX 称作为数据寄存器:
AX (Accumulator):累加寄存器,也称之为累加器,高8位为AH,低8位为AL;
BX (Base):基地址寄存器,高8位为BH,低8位为BL;
CX (Count):计数器寄存器,高8位为CH,低8位为CL;
DX (Data):数据寄存器,高8位为DH,低8位为DL;
SP 和 BP 又称作为指针寄存器:
SP (Stack Pointer):堆栈指针寄存器;
BP (Base Pointer):基指针寄存器;
SI 和 DI 又称作为变址寄存器:
SI (Source Index):源变址寄存器;
DI (Destination Index):目的变址寄存器;
控制寄存器:
IP (Instruction Pointer):指令指针寄存器;
FLAG:标志寄存器;
段寄存器:
CS (Code Segment):代码段寄存器;
DS (Data Segment):数据段寄存器;
SS (Stack Segment):堆栈段寄存器;
ES (Extra Segment):附加段寄存器;
各种指令用法:
一、数据传输指令
MOV(Move)
作用:通用数据传输指令,此指令的目标操作数和源操作数的字节数必须相同,否则会出错。
用法:MOV REG/MEM,REG/MEM/IMM
举例:
mov ax,02h ;mov REG,IMM
mov bx,ax ;mov REG,REG
mov ax,[023h] ;mov REG,MEM
mov bx,[bp+1]
mov cx,[si]
mov [bp],9 ;mov MEM,IMM
mov [bp],ax ;mov MEM,REG
mov ah,al ;8位的
PUSH(Push onto the stack)
作用:把字压入堆栈中(执行时,SP-1放高地址字节,SP-2放低地址字节,SP<-SP-2)。
用法:PUSH REG/MEM/IMM
举例:
push [bp]
push ax
push 0fh
POP(Pop from the stack)
作用:把字从堆栈中弹出(执行时,SP<-SP+2)。
用法:POP REG/MEM
举例:
push 0fh
pop ax
PUSHA(Push all onto the stack)
作用:把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈中(执行时,执行时每放入一个SP减2一次)。
用法:PUSHA
举例:略
POPA(Pop all from the stack)
作用:把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈(执行时,执行时每放入一个SP加2一次)。
用法:PUSHA
举例:略
XCHG(Exchange)
作用:交换字或字节,至少有一个操作数为寄存器,段寄存器不可作为操作数。
用法:XCHG REG,REG
举例:
mov ax,1
mov bx,2
xchg ax,bx
XLAT(Translate)
作用:字节查表转换, BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即 0-FFH); 返回 AL 为查表结果. ( AL<-[BX+AL])
用法:XLAT
举例:
data segment
string db 'nice day'
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
;find
lea bx,string
mov al,5
xlat
;output
mov dl,al
mov ah,02h
int 21h
;end
mov ah,4ch
int 21h
code ends
end start
推荐阅读: