名词: 存贮器(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
推荐阅读:
1、8086 CPU 寄存器简介