首页 > 编程语言 >8086汇编语言基础学习(二)—— 汇编指令和伪指令

8086汇编语言基础学习(二)—— 汇编指令和伪指令

时间:2023-06-18 17:55:32浏览次数:36  
标签:SRC 8086 汇编语言 DST 伪指令 操作数 指令 格式 AX

8086汇编语言基础学习(二)—— 汇编指令和伪指令

数据传输指令:

1. MOV 指令

  • 描述:赋值指令
  • 格式:MOV  DST,SRT
  • 功能:双操作数,将SRT 赋值给DST
  • 注意:
    • DST,SRT不能同时为mem,对于所有的双操作数皆是如此。
    • 不允许对CS赋值
    • 其中一个是段寄存器时,另一个就必须是数据寄存器
    • 将立即数送入mem时,要指定操作数的类型,例 BYTE PRT,WORD PRT,DWORD PRT
    • 不影响PSW

2. PUSH 指令

  • 描述:进栈指令
  • 格式:PUSH  SRC
  • 功能:单操作数,将SRC压入堆栈
  • 注意:
    • 只能对“字”进行操作

3. POP 指令

  • 描述:出栈指令
  • 格式:POP  DST
  • 功能:单操作数,将栈顶元素弹出给DST

4. XCHG 指令

  • 描述:数据交换指令
  • 格式:XCHG  DST,SRT
  • 功能:双操作数,交换DST,SRT的值
  • 注意:
    • DST,SRT  不能均为mem

5. IN 指令

  • 描述:端口输入指令
  • 格式:IN  DST,SRT
  • 功能:双操作数,从端口SRT中读出一个字或字节到DST中

6. OUT 指令

  • 描述:端口输出指令
  • 格式:OUT  DST,SRT
  • 功能:双操作数,向端口DST输出DST中的数据

7. XLAT 指令

  • 描述:查表转换指令
  • 格式:XLAT
  • 功能:零操作数!将DS : [ BX+AL ] 为地址的一个字节的内容传给AL

8. LEA 指令

  • 描述:传输偏移地址指令
  • 格式:LEA  REG,MEM
  • 功能:双操作数,将MEM的偏移地址传给REG,这里的操作数类型是固定不变的!

9. LDS 指令

  • 描述:传送偏移地址及首地址指令
  • 格式:LDS  REG,MEM
  • 功能:双操作数,将MEM的偏移地址(低位)传给REG,并将MEM的段首地址(高位)传给DS

10. LES 指令

  • 描述:和LDS指令功能相似
  • 格式:LES  REG,MEM
  • 功能:双操作数,将MEM的偏移地址(低位)传给REG,并将MEM的段首地址(高位)传给ES

11. PUSHF 指令

  • 描述:标志寄存器进栈
  • 格式:PUSHF
  • 功能:零操作数,将PSW程序状态字压入堆栈

12. POPF 指令

  • 描述:标志寄存器出栈
  • 格式:POPF
  • 功能:零操作数,将栈顶元素弹出给FR

13. LAHF 指令

  • 描述:标志送AH,Load AH,FR
  • 格式:LAHF
  • 功能:零操作数,将FR的低八位赋值给AH

14. SAH 指令

  • 猫叔:AH送标志,SET  FR,AH
  • 格式:SAH
  • 功能:零操作数,将AH赋值给FR的低八位

算术运算指令:

1. INC 指令

  • 描述:自加1
  • 格式:INC  DST
  • 功能:单操作数,DST = DST + 1
  • 注意:影响ZF,PF,SF,OF,AF

2. ADD 指令

  • 描述:不带进位的加法
  • 格式:ADD  DST,SRC
  • 功能:双操作数,DST = DST + SRC
  • 注意:影响ZF,PF,SF,CF,OF,AF

3. ADC 指令

  • 描述:带进位的加法
  • 格式:ADC  DST,SRC
  • 功能:双操作数,DST = DST + SRC + CF
  • 注意:影响ZF,PF,SF,CF,OF,AF

4. DEC 指令

  • 描述:自减1
  • 格式:DEC  DST
  • 功能:单操作数,DST = DST - 1
  • 注意:影响ZF,PF,SF,OF,AF

5. SUB 指令

  • 描述 :不带借位的减法
  • 格式:SUB  DST,SRC
  • 功能:双操作数,DST = DST - SRC
  • 注意:影响ZF,PF,SF,CF,OF,AF

6. SBB 指令

  • 描述:带借位的减法
  • 格式:SBB  DST,SRC
  • 功能:双操作数,DST = DST - SRC - CF
  • 注意:影响ZF,PF,SF,CF,OF,AF

7. NEG 指令

  • 描述:求某个数的补码
  • 格式:NEG  DST
  • 功能:单操作数,将DST求补,各位数取反然后加一,也可以理解为零减去DST(不带借位)
  • 注意:影响ZF,PF,SF,CF,OF,AF

8. CMP 指令

  • 描述:比较两个数的大小
  • 格式:CMP  DST,SRC
  • 功能:双操作数,比较DST,SRC的大小,结果通过FR展示,实际上进行的是DST - SRC的操作,但是不保存结果
  • 注意:影响ZF,PF,SF,CF,OF,AF

9. MUL 指令

  • 描述:无符号数乘法
  • 格式:MUL  SRC
  • 功能:单操作数
  • 对字节操作:AX = ( AL ) * SRC
    • 对字操作:( DX,AX ) = AX * SRC
    • 对双字操作:( EDX,EAX ) = ( EDX ) * SRC
    • 隐含了AX为一个默认的操作数
    • 若乘积的高半部分不为零时,则将CF,OF置为 ‘1’,否则置为 ‘0’ 。无符号数的乘法AF,PF,SF,ZF没有定义,因为没有符号

10. IMUL 指令

  • 描述:有符号数乘法
  • 格式:IMUL SRC
  • 功能:单操作数
    • 对字节操作:AX = ( AL ) * SRC
    • 对字操作:( DX,AX ) = AX * SRC
    • 对双字操作:( EDX,EAX ) = ( EDX ) * SRC
  • 注意:
    • 隐含了AX为一个默认的操作数
    • 若乘积的高半部分不为零时,则将CF,OF置为 ‘1’,否则置为 ‘0’ 。无符号数的乘法AF,PF,SF,ZF没有定义,因为没有符号

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作为操作数
    • 因为扩展的默认位有符号数,这里是将符号位向高半部扩展

14. CWD 指令

  • 描述:字扩展位双字,有符号扩展
  • 格式:CDW
  • 功能:零操作数,将AX的保持原值(有符号数)扩展到 ( DX,AX )
  • 注意:
    • 这里隐含的是将AX作为操作数
    • 因为扩展默认位有符号数,这里是将符号位向高半部扩展

逻辑运算指令

标签:SRC,8086,汇编语言,DST,伪指令,操作数,指令,格式,AX
From: https://www.cnblogs.com/Wu-Ling/p/17489413.html

相关文章

  • MASM汇编语言知识
    遇到的坑 注意在写$时,一定要加上‘’否则会爆constantexpected的错误,同时也会附带一些其他神奇的错误 MOVAX,BX与MOVAX,[BX]的区别是什么?前者是将BX中保存的值直接给AX后者是通过BX中保存的值寻址后将找的地址中的内容给AX那么也就能够理解MOV......
  • wordpress插件:WPFront Scroll Top返回顶部(WPFront Scroll Top 2.0.7.08086 / wordpr
     一,安装插件/设置插件:插件->安装插件->用top关键字进行搜索,然后选择WPFrontScrollTop点立即安装按钮安装完成后,点启用按钮选中前两项选中前两项后,点保存更改按钮二,测试效果说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architec......
  • 汇编语言
    汇编语言debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。R命令查看、改变CPU寄存器的内容D命令查看内存中的内容E命令改写内存中的内容U命令将内存中的机器指令翻译成汇编指令T命令执行一条机器指令A命令以汇编指令的格式在内存中写入一条机器指......
  • 使用汇编语言 实现hello world功能
    使用汇编语言实现helloworld功能汇编环境设置安装DOSBox0和正常的软件安装没有区别在根目录文件DOSBox0.74-win32-installer.exe双击然后直接下一步next就行了masm5编译环境然后将根目录文件debug.exe文件拖放到masm5文件夹然后再将此文件夹拖放到D:的根目录此目......
  • 光速了解汇编语言
    目录光速了解汇编语言什么是机器语言?汇编语言计算机的硬件动手编写第一个汇编程序继续学习汇编光速了解汇编语言什么是机器语言?要想了解什么是汇编语言,首先你得知道什么是机器语言!计算机能够直接识别的是由二进制数0和1组成的代码,它是不需要翻译直接就能识别(直接执行......
  • Linux操作系统汇编语言基础知识(图文代码)
    1、什么是汇编语言,它在计算机语言中的地位?汇编语言是程序设计语言的基础语言,是唯一可以直接与计算机硬件打交道的语言2、汇编语言与源程序、汇编程序、汇编的关系?3、汇编语言的特点\1)汇编语言与机器指令一一对应,可充分理解计算机的操作过程汇编语言指令是机器指令的符号表......
  • Linux操作系统ARM指令集与汇编语言程序设计
    一、实验目的1.了解并掌握ARM汇编指令集2.应用ARM指令集编写一个程序操控开发板上的LED灯二、实验要求应用ARM汇编指令集编写程序,实现正常状态下开发板上的LED灯不亮,按下一个按键之后开发板上的LED灯进入流水灯模式。三、实验原理四个LED灯的电路如下图所示:四个按键电路图......
  • 0-C语言与汇编语言的转换
    汇编语言入门四:打通C和汇编语言-知乎Win10下C语言转8086汇编-博客园:https://www.cnblogs.com/VxerLee/p/15264290.htmlLinux执行汇编程序在Linux下运行你的第一个汇编程序_linux怎么执行汇编代码_冷色调的夏天的博客-CSDN博客在线网站:CompilerExplorer强烈推荐一个在线网......
  • 8086指令系统
     《8086寻址方式》寻址主要可以分为3类:数据寻址程序转移地址寻址(即查找下一条指令的地址)端口寻址解释一下端口:  端口也要编址,其编址方式有两种:1.集中编址   ......
  • win32汇编语言学习之二
        对于汇编语言来说win32环境中只有一种类型,那就是32位整数,例如MessageBoxA的四个参数HWND,LPCTSTR,LPCTSTR,UINT之所以定义成不同的摸样主要是为了说明其用途,我们在汇编环境下调用MessageBoxA时,DOS状态下会是这样的:  pushuType  pushlpCaption  pushlpText ......