8086汇编基本指令

8086汇编基本指令8086 汇编的基本指令格式及功能 有助于刚开始学习汇编语言的同学快速上手

一、数据传送

1、MOV

  • 描述:赋值指令
  • 格式:MOV    DST,SRC
  • 功能: DST <= SRC
  • 注意:①不能DST,SRC都是存储器,这也是所有双操作数指令的通用要求。

                 ② 但其中一个是段寄存器时,另一个操作数必须是数据寄存器。

                 ③不允许往CS传递数据

                 ④将立即数送存储时,要指定操作数类型。BYTE PTR ,WORD PTR, DWORD PTR

                 ⑤不影响PSW

2、PUSH

  • 描述:入栈指令
  • 格式:PUSH SRC
  • 功能:将SRC入栈
  • 注意:①只能是对“字”操作。

3、POP

  • 描述:出栈指令
  • 格式:POP DST
  • 功能:将栈顶元素出栈赋值给DST

4、XCHG

  • 描述:数据交换指令
  • 格式:SCHG DST,SRC
  • 功能:将DST.SRC的值进行交换
  • 注意:①不能DST,SRC都是存储器,这也是所有双操作数指令的通用要求。

5、IN

  • 格式:IN DST,SRC
  • 功能:从SRC端口读取一个字节/字到DST中。

6、OUT

  • 格式:OUT  DST,SRC
  • 功能:将SRC中的数据送到DST短空中

7、XLAT

  • 描述:取表指令
  • 格式:XLAT
  • 功能:以DS:[BX+AL]为地址提取一个字节的数据送到AL中

8、LEA

  • 格式:LEA    REG,MEM
  • 功能:取MEM的偏移地址送到REG中。

9、LDS 

  • 格式:LDS reg,mem
  • 功能:是把mem指向的地址,高位存放在DS中,低位存放在reg中。

10、LES

  • 格式:LES reg,mem
  • 功能:是把mem指向的地址,高位存放在ES中,低位存放在reg中。

11、PUSHF    

  • 格式:PUSHF
  • 功能:将PSW进栈

12、POPF       

  • 格式:POPF
  • 功能:将栈顶元素送到PSW

13、LAHF         

  • 格式:LAHF
  • 功能:将PSW的低八位送到AH中

14、SAHF        

  • 格式:SAHF
  • 功能:将AH写入PSW的低八位

二、算术

1、ADD

  • 描述:加法指令
  • 格式:ADD    DST,SRC
  • 功能: DST <= DST+REC

2、ADC

  • 格式:ADC    DST,SRC
  • 功能:DST <= DST + REC + CF

3、INC

  • 格式: INC DST
  • 功能:DST <= DST + 1

4、SUB

  • 格式:SUB    DSTSRC
  • 功能: DST <= DST - SRC

5、SBB

  • 格式:SBB    DST,SRC
  • 功能:DST <= DST - SRC - CF

6、DEC

  • 格式: DEC DST
  • 功能:DST <= DST - 1

7、NEG    

  • 格式:NEG REG
  • 功能:求补,即REG中的各位取反,然后 + 1。

8、CMP

  • 格式:CMP    DST,SRC
  • 功能:DST – REG 结果不保存,但是状态保存在PSW中。

9、MUL

  • 描述:无符号数乘法
  • 格式:MUL  SRC
  • 功能:①字节操作:(AX) <=(AL) * (SRC)

                 ②字操作:   (DX,AX) <= (AX) *(SRC)

                 ③双字操作:(EDX,EAX) <= (EAX) *(SRC)

10、IMUL

  • 描述:有符号数乘法
  • 格式:IMUL   SRC
  • 功能:DST <= DST * SRC

11、DIV

  • 描述:无符号数除法
  • 格式:DIV    SRC
  • 功能:①字节操作:(AH) <= (AX)/(SRC)的余数;(AL) <= (AX)/(SRC)的商

                 ②字操作:(DX) <= (DX,AX)/(SRC)的余数;(AX) <= (DX,AX)/(SRC)的商

                 ③双字操作:(EDX) <= (EDX,EAX)/(SRC)的余数;(EAX) <= (EDX,EAX)/(SRC)的商

12、IDIV

  • 描述:有符号数除法
  • 格式:IDIV    SRC
  • 功能:①字节操作:(AH) <= (AX)/(SRC)的余数;(AL) <= (AX)/(SRC)的商

                 ②字操作:(DX) <= (DX,AX)/(SRC)的余数;(AX) <= (DX,AX)/(SRC)的商

                 ③双字操作:(EDX) <= (EDX,EAX)/(SRC)的余数;(EAX) <= (EDX,EAX)/(SRC)的商

13、CBW

  • 格式:CBW
  • 功能:将AL保持原值(有符号数)扩展到AX。
  • 注意:此时是将AL的值看为有符号数,根据AL的最高位(符号位)来决定AH是00H还是FFH

14、CWD

  • 格式:CWD
  • 功能:将AX保持原值(有符号数)扩展到DX,AX。
  • 注意:此时是将AX的值看为有符号数,根据AX的最高位(符号位)来决定DX是0000H还是FFFFH

 

三、逻辑

 

1、AND

  • 描述:“与”逻辑运算
  • 格式:    AND    DST,SRC
  • 功能:   DST <= DST AND SRC  将DST和REG对应各位进行“与”运算后结果保留于DST

2、OR

  • 描述:“或”逻辑运算
  • 格式:    OR   DST,SRC
  • 功能:   DST <= DST OR SRC   将DST和REG对应各位进行“或”运算后结果保留于DST

3、NOT

  • 描述:“非”逻辑运算
  • 格式:  NOT    DST
  • 功能:   DST <= NOT DST    将DST各位"取反"结果保留于DST

4、XOR

  • 描述:“异或”逻辑运算
  • 格式:    XOR    DST,SRC
  • 功能:   DST <= DST XOR SRC    将DST和SRC对应各位进行“异或”运算后结果保留于DST

5、TEST

  • 描述:“与”逻辑运算,当只影响PSW,不保留运算结果。
  • 格式:    TEST    DST,SRC
  • 功能:   DST AND SRC   将DST和SRC对应各位进行“与”运算,结果状态影响PSW,但不该表DST,SRC的值。

6、SHL

  • 描述:逻辑左移
  • 格式:SHL   DST,1/CL
  • 功能:将DST顺序左移1位或CL寄存器中指定的位数。左移一位时,DST的最高位移入进位标志位CF,最低位补零。

7、SAL

  • 描述:算术左移
  • 格式:SAL   SRC,1/CL
  • 功能:将SRC顺序左移1位或CL寄存器中指定的位数。左移一位时,SRC的最高位移入进位标志位CF,最低位补零。

8、SHR

  • 描述:逻辑右移
  • 格式:SHR  SRC,1/CL
  • 功能:将SRC顺序右移1位或CL寄存器指定的位数。逻辑右移1位时,SRC的最低位移到进位标志位CF,最高位补零。

9、SAR

  • 描述:算术右移
  • 格式:SAR   SRC,1/CL
  • 功能:将SRC顺序右移1位或CL寄存器指定的位数。逻辑右移1位时,SRC的最低位移到进位标志位CF,最高位用原先最高位的值填充。

10、ROL

  • 描述:循环左移
  • 格式:ROL    SRC,1/CL
  • 功能:将SRC顺序左移1位或CL寄存器指定的位数。循环左移1位时,SRC的最高位移到最低位,并且最高位同时移入标志位CF。

11、ROR

  • 描述:循环右移
  • 格式:ROR    SRC,1/CL
  • 功能:将SRC顺序右移1位或CL寄存器指定的位数。循环左移1位时,SRC的最低位移到最高位,并且最低位同时移入标志位CF。

12、RCL

  • 描述:带进位循环左移
  • 格式:RCL    SRC,1/CL
  • 功能:将SRC顺序左移1位或CL寄存器指定的位数。带进位循环左移1位时,原先状态位CF的值移入SRC的最低位,SRC的最高位移入状态位CF。

13、RCR

  • 描述:带进位循环右移
  • 格式:RCR    SRC,1/CL
  • 功能:将SRC顺序右移1位或CL寄存器指定的位数。带进位循环右移1位时,原先状态位CF的值移入SRC的最高位,SRC的最低位移入状态位CF。

四、串指令

当方向标志位DF = 0时,DI,SI+;当DF = 1时,DI,SI-。

ES:DI    DS:SI

1、MOVS          

  • 格式:①MOVS    DST,SRC     ②MOVSB(字节)     ③MOVSW(字)     ④MOVSD(双字)
  • 功能:   ①字节操作: [ES:DI]<=[DS:SI]  ,SI<=SI +/- 1

                    ②字操作:     [ES:DI]<=[DS:SI]]  ,SI <= SI +/- 2

                    ③双字操作:  [ES:DI]<=[DS:SI] ,SI <= SI +/- 4

 

2、CMPS

  • 格式:①CMPSB(字节)    ②CMPSW(字)     ③CMPSD(双字)
  • 功能:  ①字节操作:  [DS:SI] – [ES:DI]  ,SI<=SI +/- 1

                    ②字操作:     [DS:SI] – [ES:DI]  ,SI <= SI +/- 2

                    ③双字操作:  [DS:SI] – [ES:DI] ,SI <= SI +/- 4

 

3、LODS

  • 格式:①LODSW(字)     ③LODSD(双字)
  • 功能: ①字节操作:AL <= [DS:SI]  ,SI<=SI +/- 1

                  ②字操作:    AX  <= [DS:SI]  ,SI <= SI +/- 2

                  ③双字操作:   EAX  <= [DS:SI]  ,SI <= SI +/- 4

4、STOS

  • 格式:①STOSB(字节)     ②STOSW(字)     ③STOSD(双字)
  • 功能: ①字节操作:[DS:SI] <= AL   ,SI<=SI +/- 1

                  ②字操作:    [DS:SI] <= AX  ,SI <= SI +/- 2

                  ③双字操作:  [DS:SI] <= EAX   ,SI <= SI +/- 4

5、SCAS

  • 格式:①SCASB(字节)     ②SCASW(字)     ③SCASD(双字)
  • 功能: ①字节操作: AL – [DS:SI]    ,SI<=SI +/- 1

                  ②字操作:     AX – [DS:SI]    ,SI <= SI +/- 2

                  ③双字操作:   EAX – [DS:SI]     ,SI <= SI +/- 4

6、REP

  • 格式:REP   string primitive(MOVS,LODS,STOS,INS和OUTS)
  • 功能①如果CX = 0退出,否则继续运行以下操作

                 ②CX <= CX - 1

                 ③执行以后串操作

                 ④重复 ①~③

7、REPE/REPZ

  • 格式:REPE/REPZ   string primitive(CMPS或SCAS)
  • 功能:①如果CX = 0 或 ZF = 0 退出,否则继续运行以下操作

                 ②CX <= CX - 1

                 ③执行以后串操作

                 ④重复 ①~③

 

8、REPNE/REPNZ

  • 格式:REPNE/REPNZ   string primitive(CMPS或SCAS)
  • 功能:①如果CX = 0 或 ZF = 1 退出,否则继续运行以下操作

                 ②CX <= CX - 1

                 ③执行以后串操作

                 ④重复 ①~③

 

五、无条件转移

 

1、JMP

  • 格式:JMP ADDRESS
  • 功能 无条件跳转到 ADDRESS

六、条件转移

1、根据PSW

1、JZ

  • 格式:JZ    EX
  • 功能:当ZF = 1时,跳转到EX

2、JNZ

  • 格式:JNZ    EX
  • 功能:当ZF = 0时,跳转到EX

3、JC

  • 格式:JC    EX
  • 功能:当CF = 1时,跳转到EX

4、JNC

  • 格式:JNC    EX
  • 功能:当CF = 0时,跳转到EX

5、JO

  • 格式:JO    EX
  • 功能:当OF = 1时,跳转到EX

6、JNO

  • 格式:JNO    EX
  • 功能:当OF = 0时,跳转到EX

7、JS

  • 格式:JS    EX
  • 功能:当SF = 1时,跳转到EX

8、JNS

  • 格式:JNS    EX
  • 功能:当SF = 0时,跳转到EX

2、比较两个无符号数后

8086汇编基本指令

#    N :不等于    A:大于    B : 小于    E :等于

3、比较两个有符号数后

8086汇编基本指令

#    N :不等于    G:大于    L : 小于    E :等于

4、JCXZ  

 

  • 格式: JCXZ EX
  • 功能:若 CX = 0,则跳转到EX

七、循环

  • LOOP
  • LOOPE/LOOPZ
  • LOOPNE/LOOPNZ

八、子程序

1、CALL

 

  • 格式:①CALL EX/NEAR    PTR    EX

                 ②CALL   FAR    PTR    EX 

 

  • 功能:①将IP进栈;将子程序的入口地址的位移量 =>IP

                 ②将CS入栈;将IP入栈;将子程序入口地址偏移量 =>IP;将子程序的段地址 =>CS

2、RET

 

  • 格式:RET (num)
  • 功能:①将栈顶元素出栈 => IP

                 ②将SP向高地址移动num位。

3、RETF

 

  • 格式:RETF (num)
  • 功能:①将栈顶元素出栈 => IP

                 ②将栈顶元素出栈 =>CS

                 ③将SP向高地址移动num位。

九、中断

  • INT XX
  • IRET

十、空操作

  • NOP

十一、标志

1、CLC

 

  • 格式:CLC
  • 功能:令CF=0

2、STC    

 

  • 格式:STC 
  • 功能:令CF=1

3、CMC 

 

  • 格式:CMC 
  • 功能:令CF取反。

4、CLD  

 

  • 格式:CLD 
  • 功能:令DF = 0

5、STD  

 

  • 格式:STD 
  • 功能:令DF = 1

6、CLI    

 

  • 格式:CLI
  • 功能:禁止发生中断

7、STI 

 

  • 格式:STI 
  • 功能: 允许发生中断

 

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176632.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午9:26
下一篇 2026年3月26日 下午9:27


相关推荐

  • 课程设计酒店管理系统_管理系统课程设计

    课程设计酒店管理系统_管理系统课程设计1.题目要求•顾客入住、退房•房间预订•换房处理•续住管理•折扣2.架构选择:B/SB/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现。3.语言选择:PythonhtmlccsJavaScripthtml…

    2025年11月24日
    6
  • element修改table_csstablecell支持

    element修改table_csstablecell支持ElementUI-table-td添加省略号提示:这里简述项目相关背景:解决方案:<div> <table> <tdsrtle=”overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block”></td> </table></div>…

    2025年9月24日
    7
  • 示波器探头如何校准「建议收藏」

    示波器探头如何校准「建议收藏」示波器是电子测试设备中常见的电子器件,通过电子工程师会使用它测量相关电路的信号输出以及相应的电压电流变化。在示波器的应用场合中,除了有些RF或高速数字的场合用电缆直接测量以外,很多板上的调试工作都是借助探头完成的。不过在正式开始使用探头前,我们是需要校准的,那么我们如何进行示波器的探头校准呢?探头是示波器测量系统的一部分,很多高带宽的探头都必须是有源探头,有源探头内部的有源放大器的增益和偏置随着温度或者时间老化可能会有漂移,为了补偿这种漂移,就需要定期对探头进行校准。目前示波器探头的校准方法通常有三

    2022年10月12日
    5
  • Python爬虫常用库requests、beautifulsoup、selenium、xpath总结

    Python爬虫常用库requests、beautifulsoup、selenium、xpath总结文章目录 requestsrequ 基础 requests 模块发送 get 请求 response 响应对象 response text 和 response content 的区别解决中文乱码 response 响应对象的其它常用属性或方法 requests 实操 requests 模块发送请求发送带参数的请求超时参数 timeout 的使用 requests 发送 post 请求的方法 BeautifulSou 常见解释器的优缺点常用操作几个简单的浏览结构化数据的方法从文档中找到所有的 a 标签的链接在文档中获取所有的文字内容 a

    2026年3月19日
    1
  • SFDC ActionFunction

    SFDC ActionFunctionmyActionMethod();//thisisjavascriptpu

    2025年8月15日
    6
  • openclaw AI 学会操作浏览器抓取数据

    openclaw AI 学会操作浏览器抓取数据

    2026年3月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号