AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > 汇编语言

8086/8088指令系统

51自学网 http://www.51zixue.net

一、数据传送指令
1.通用数据传送指令
MOV(Move)传送
PUSH(Push onto the stack)进栈
POP(Pop from the stack)出栈
XCHG(Exchange)交换

.MOV指令
格式为: MOV  DST,SRC
执行的操作:(DST)<-(SRC)
.PUSH进栈指令
格式为:PUSH  SRC
执行的操作:(SP)<-(SP)-2
           ((SP)+1,(SP))<-(SRC)
.POP出栈指令
格式为:POP  DST
执行的操作:(DST)<-((SP+1),(SP))
           (SP)<-(SP)+2
.XCHG 交换指令
格式为:XCHG  OPR1,OPR2
执行的操作:(OPR1)<-->(OPR2)

2.累加器专用传送指令
IN(Input)  输入
OUT(Output)  输出
XLAT(Translate)  换码
这组指令只限于使用累加器AX或AL传送信息.

.IN 输入指令
长格式为:    IN  AL,PORT(字节)
     IN  AX,PORT(字)
执行的操作:  (AL)<-(PORT)(字节)
             (AX)<-(PORT+1,PORT)(字)
短格式为:    IN  AL,DX(字节)
             IN  AX,DX(字)
执行的操作:  AL<-((DX))(字节)
             AX<-((DX)+1,DX)(字)
.OUT 输出指令
长格式为:    OUT  PORT,AL(字节)
             OUT   PORT,AX(字)
执行的操作:  (PORT)<-(AL)(字节)
             (PORT+1,PORT)<-(AX)(字)
短格式为:    OUT  DX,AL(字节)
             OUT  DX,AX(字)
执行的操作:  ((DX))<-(AL)(字节)
             ((DX)+1,(DX))<-AX(字)
    在IBM-PC机里,外部设备最多可有65536个I/O端口,端口(即外设的端口地址)为0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定端口号,但只限于前256个端口.当端口号>=256时,只能使用短格式,此时,必须先把端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后再用IN或OUT指令来 传送信息.
.XLAT  换码指令
格式为:    XLAT  OPR
或:        XLAT
执行的操作:(AL)<-((BX)+(AL))

3.有效地址送寄存器指令
LEA(Load effective address)有效地址送寄存器
LDS(Load DS with Pointer)指针送寄存器和DS
LES(Load ES with Pointer)指针送寄存器和ES
.LEA 有效地址送寄存器
格式为:  LEA   REG,SRC
执行的操作:(REG)<-SRC
    指令把源操作数的有效地址送到指定的寄存器中.
.LDS 指针送寄存器和DS指令
格式为:  LDS  REG,SRC
执行的操作:(REG)<-(SRC)
           (DS)<-(SRC+2)
    把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中.该指令常指定SI寄存器.
.LES 指针送寄存器和ES指令
格式为:  LES  REG,SRC
执行的操作: (REG)<-(SRC)
            (ES)<-(SRC+2)
    把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中.该指令常指定DI寄存器.

4.标志寄存器传送指令
LAHF(Load AH with flags)标志送AH
SAHF(store AH into flags)AH送标志寄存器
PUSHF(push the flags) 标志进栈
POPF(pop the flags) 标志出栈
.LAHF 标志送AH
格式为:    LAHF
执行的操作:(AH)<-(PWS的低字节)

.SAHF AH送标志寄存器
格式为:    SAHF
执行的操作:(PWS的低字节)<-(AH)
.PUSHF 标志进栈
格式为:    PUSHF
执行的操作:(SP)<-(SP)-2
           ((SP)+1,(SP))<-(PSW)
.POPF 标志出栈
格式为:    POPF
执行的操作:(PWS)<-((SP)+1,(SP))
           (SP)<-(SP+2)


<

 

 

 
上一篇:80386的异常类型  下一篇:内存管理和文件输入/输出