【微机原理】汇编指令之算数运算类指令

这篇具有很好参考价值的文章主要介绍了【微机原理】汇编指令之算数运算类指令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、加法指令

1.ADD 加法指令

格式:ADD 目的操作数,源操作数

功能:目的操作数 + 源操作数 —>目的操作数

例如:ADD AL,BL;  AL + BL —> AL 寄存器中

2.ADC 带进位的加法指令

格式:ADC 目的操作数,源操作数

功能:目的操作数 + 源操作数 + CF(进位标志位) —>目的操作数

例如:MOV AL,0;     0 —> AH

      MOV AL,92H;  92H—>AL

      ADD AL,86H;  92H + 86H = 18H—>AL,CF = 1

      ADC AH, 0;    AH + 0 + CF = 0 + 0 + 1 —> AH,即01H—>AH

3.INC加 1 指令

格式:INC 操作数

功能:操作数加1,结果送操作数。操作数可以是任意一个8位或16位的通用寄存器或存储单元不能是立即数

例如:

    INC DI;  DI + 1 —> DI

    INC CX;       CX + 1 —> CX

说明:指令INC对标志位CF不影响外,其他加法指令对标志位的影响定义如下:

CF

两个数相加,最高有效位有进位时,即字节操作超过无符号数的范围0~255,字运算超出无符号的范围0~65535时,CF = 1,否则CF = 0.故两个无符号数相加时,可用CF的值来判断是否超出了无符号数的表示范围,如果CF =1表示此无符号数加法运算结果发生了溢出

PF

运算结果以二进制数表示时,若“1”的个数为偶数时PF=1,否则为0

AF

运算中D3向D4有进位时AF = 1,否则为0

ZF

运算结果为0时,ZF=1,否则为0

SF

运算结果最高位为1时,SF=1,否则为0

OF

当两个操作数的符号相同,而相加结果的符号与操作数的符号相反时,OF=1,否则OF=0。该标志位来判断符号数相加时的结果的溢出

二、减法指令

1.SUB减法指令

格式:SUB 目的操作数,源操作数

功能:目的操作数 - 源操作数 —> 目的操作数

例如:SUB AL,BL;   AL - BL —> AL

2.SBB带借位的减法指令

格式:SBB目的操作数,源操作数

功能:目的操作数 - 源操作数 - CF —> 目的操作数

3.DEC减1指令

功能:该指令将操作数的内容减1后作为现在的操作数,不影响CF标志位

例如:DEC DI;       DI - 1—>DI

      DEC CX;       CX - 1—>CX

注意减法指令对标志位的影响与加法指令相似,若被减数小于减数,则不够减,要产生借位,即CF = 1,否则CF = 0。 若两个符号相反的数进行减法运算,即同号数相加,如果OF = 1,表示有溢出,否则OF = 0。其他标志位定义不变

4.求补指令(影响标志位)

格式:NEG 操作数

功能:0 - 操作数的内容后结果回送操作数

例如:MOV DI,05H

      DEG DI ; 0 - DI = 0 - 05H = OFBH —> DI

对80H或8000H取补时,操作数没有变化,但OF=1(0 - 80H = 80H,负号变正号就是溢出)

对CF影响比较特殊,只要操作数不是0,总是使CF=1

5.CMP比较指令

格式:CMP 目的操作数,源操作数

功能:该指令与减法指令相似,执行时目的操作数与源操作数相减,但不把减得的结果存入目的操作数,只根据结果设置标志位(AFCFOFPFSFZF。即源操作数与目的操作数均保持原值不变。

目录

一、加法指令

1.ADD 加法指令

2.ADC 带进位的加法指令

3.INC加 1 指令

二、减法指令

1.SUB减法指令

2.SBB带借位的减法指令

3.DEC减1指令

4.求补指令(影响标志位)

5.CMP比较指令

三、符号扩展指令(不影响标志位)

四、乘法指令(运算结果只影响CF、OF)

1.MUL  无符号数乘法

2.IMUL  带符号数乘法指令

五、除法指令(运算结果只影响CF、OF)

1.DIV 无符号数除法指令

2.IDIV 带符号数除法指令


三、符号扩展指令(不影响标志位)

,0操作数

CBW  ;  字节扩展成字,AL中的符号位扩展到AH

CWD  ;  字扩展成双字,AX中的符号位扩展到DX

 

如果AL的最高位1(负数),则CBW指令扩展时使AH = 0FFH,如果AL的最高位为0(正数),则CBW指令扩展时使AH = 00H

如果AX的最高位为1(负数),则CWD指令扩展时DX = 0FFFFH,如果AX的最高为0(正数),则CWD指令扩展时使DX=0000H

四、乘法指令(运算结果只影响CF、OF)

1.MUL  无符号数乘法

格式:MUL SRC

操作:操作数为字节时,AX <— AL * SRC

      当操作数为字时,DX,AX <— AX * SRC

2.IMUL  带符号数乘法指令

格式:IMUL SRC

  在乘法指令中,目的操作数必须是累加器(AX,不必在指令中写出。两个相乘的数必须长度相同目的操作数长度是乘数的两倍,显然不会出现溢出。SRC不能是立即数,和加减法指令不同的是,作乘法时需要考虑是无符号数还是带符号数,而选择不同的指令。

运算结果只影响CF、OF

对于MUL,若字节型数据相乘AH=0,或字数据相乘之积DX=0,则CF=OF=0,否则CF=OF=1

对于IMUL,若字节相乘,AH1还是0取决于AL的最高位。如果为1,则CF=OF=1,否则为0.若字相乘,DX1还是0取决于AX的最高位。如果为1,则CF=OF=1,否则为0

五、除法指令(运算结果只影响CF、OF)

要求被除数是除数的双倍字长

操作数为8位:AX / 操作数 = AL存商,AH存余数  

操作数为16位:(DX、AX) / 操作数 = AX存商,DX存余数

余数放在目的操作数的高端放在目的操作数的低端

余数的符号与被除数相同

SRC不能是立即数

除数为0或商超过规定的范围时,将产生0号中断(OF=1)

带符号除法运算中,被除数位数不够是,则需将被除数扩展到所需的位数

1.DIV 无符号数除法指令

格式:DIV SRC

2.IDIV 带符号数除法指令

格式:IDIV SRC 文章来源地址https://www.toymoban.com/news/detail-434969.html

到了这里,关于【微机原理】汇编指令之算数运算类指令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【汇编语言与微机原理】 期末复习题整理(小题)

    在机器数(补码)中,对真值0的表示是唯一的。 与十进制数56等值的二进制数是(111000) 二进制数10101转换成十进制数是(21)。 十进制数-75用二进制数10110101表示,其表示方式是(补码)。 关于补码机器数的描述中错误的是(不可能出现一个数的补码与其原码相同 ) 某计

    2024年01月15日
    浏览(53)
  • <微机原理>[汇编语言]-[实验七]数码管动态显示实验

    实验一 软件开发环境和简单程序设计 实验二 I_O输入输出实验 实验三 键盘扫描显示实验 实验四 中断实验 实验五 定时器实验 实验六 串行口实验 实验七 数码管动态显示实验 实验八 矩阵键盘应用实验 实验九 电子时钟 微机原理实验课程,会陆续根据目录更新文章 掌握LED八段

    2024年02月07日
    浏览(40)
  • 实验五 键盘按键与数码管显示(汇编与微机原理)

    实验目的: 熟悉星研集成开发环境,掌握微机接口程序编写调试的基本方法。 掌握矩阵式键盘的工作原理及识别键盘按键的方法。 掌握8段数码管显示数字或字符的工作原理和它的使用方法。 掌握用8255扫描键盘及用8255刷新数码管显示的方法。 实验:       在(2行*8列)小

    2024年02月04日
    浏览(46)
  • 【汇编语言与微机原理】实验五:键盘按键与数码管显示

    熟悉星研集成开发环境,掌握微机接口程序编写调试的基本方法。 掌握矩阵式键盘工作原理及识别按键的方法。 掌握8段数码管显示数字或字符的工作原理和它的使用方法。 掌握用8255扫描键盘及用8255刷新数码管的显示方法。 在2*8(看 着像4*4,实际上是2*8 )的小键盘上按下

    2024年02月16日
    浏览(45)
  • 【微机原理课设protues-汇编】基于8086四种波形发生器仿真设计-基于8086数码管矩阵键盘控制设计-基于8086微机原理直流电机控制系统-基于单片机PWM直流电机控制系统设计汇编

    文章转自电设屋,资料百度网盘下载地址  https://www.aiesst.cn/share.html 目录 1207基于8086四种波形发生器仿真设计-微机原理汇编仿真资料 1202基于8086数码管矩阵键盘控制设计-全套资料 1218基于8086智能汽车控制系统设计-微机原理课设 1209基于8086微机原理直流电机控制系统-设计资料

    2024年02月12日
    浏览(65)
  • 微机原理 || push & pop 指令 (详解+例题)

    考试真的考了push和pop ,那个加减到底是什么? 考试要记:  PUSH 源    -2       字 操作(以字为单位)     例:   PUSH AL 错   必须 字 为单位   POP    源    +2       一定注意是十进制的2,注意和16进制单位转换 入栈和出栈的次序要符合后进先出原则,即: PUSH和POP一般是

    2024年02月06日
    浏览(42)
  • 微机原理 || MOV 指令使用规则(详细+例题)

    MOV   目标, 源 DST目标操作数: 通用寄存器、段寄存器、存储单元、 立即数 SRC源操作数: 通用寄存器、段寄存器、存储单元 MOV指令使用规则: (1) 目标操作数无立即方式   例如,MOV 03H,AL; 为错误指令 (2)数据传送应注意数据类型的一致(要求等字长) ;或是至少有一个是确定

    2024年02月06日
    浏览(56)
  • EMU8086使用及8086指令系统(微机原理实验)

    熟悉并掌握EMU8086汇编语言编程调试环境; 学习8086寻址方式(立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址、隐含寻址)。要求对以上寻址方式进行熟悉,观察不同寻址方式下指令运行结果(每种寻址方式2个实例,

    2023年04月26日
    浏览(53)
  • 【EMU8086使用及8086指令系统】—— 微机原理实验

    熟悉并掌握EMU8086汇编语言编程调试环境; 学习8086寻址方式(立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、基址变址相对寻址、隐含寻址)。要求对以上寻址方式进行熟悉,观察不同寻址方式下指令运行结果(每种寻址方式2个实例,

    2024年02月04日
    浏览(41)
  • C/C++中的逻辑运算与汇编指令的交互

    ​​​https://pan.quark.cn/s/ac291414101c​​​ 逻辑操作是编程中的基础,它们在C/C++中广泛使用,并在底层汇编语言中由专门的指令对应执行。本文将通过探讨C/C++中的逻辑或运算(​ ​||​ ​)和逻辑非运算(​ ​!​ ​),以及它们如何转换为汇编指令来阐明两者之间的关系。 逻辑

    2024年04月28日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包