前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >汇编语言---乘法指令及符号扩展

汇编语言---乘法指令及符号扩展

作者头像
跋扈洋
发布2021-02-02 11:24:40
2.1K0
发布2021-02-02 11:24:40
举报
文章被收录于专栏:物联网知识

介绍

乘法指令分为无符号数乘法指令和有符号数乘法指令两种,它们唯一的区别是相乘的两个操作数是有符号数据还是无符号数据。 乘法指令的被乘数是隐含操作数,乘数需在指令中显式写出来。执行指令时,CPU会根据乘数是8位还是16位来自动选用被乘数是AL还是AX。

格式及功能介绍

无符号数乘法指令

指令格式:MUL opr 功能:将指令中指定的操作数与隐含的被乘数(都为无符号数)相乘,所得的乘积按表中的对应关系存放。

乘数位数

隐含的被乘数

乘积的存放位置

举例

8位

AL

AX中

MUL BL

16位

AX

DX与AX中

MUL BX

MUL指令对标志位CF、OF有影响,对SF、ZF、AF、PF 无定义,如果运算结果的高一半(AH,DX)为零,则CF=OF=0,否则CF=OF=1。 注:

  1. 对标志位的“无定义”和“不影响”不同。无定义是指指令执行后,标志位的状态不确定;不影响是指指令的结果不影响标志位。即标志位保持原状态不变。
  2. MUL指令中的操作数可以使用除立即数以外的其他寻址方式,但当是寄存器时,操作器只能是通用寄存器。

有符号数乘法指令

指令格式:IMUL opr IMUL指令的格式和功能与MUL相同,只是要求两个操作数都须为有符号数。 IMUL指令对标志位的影响为:若乘积的高半部分是低半部分的符号位扩展,则OF=CF=0;否则OF=CF=1; 注:IMUL指令中对操作数的寻址的方式规定同MUL指令,但表示形式为补码,乘积也是以补码形式表示的数。

符号扩展及符号扩展语句

符号扩展

微机系统中,有时需要将一个数据从位数较少扩展到位数较多,例如,在执行除法指令时,由于对字节除数相除要求被除数为16位,对字除数要求被除数为32位,即被除数必须为除数的倍长数据,因此就涉及数据的位数扩展问题,具体的扩展有符号扩展与零扩展两种方法。

  1. 当要扩展的数据是无符号数时可采用零扩展。即在最高位前扩展0,补充够位数即可。
  2. 当要扩展的数据是有符号数时需采用符号扩展。由于采用补码形式表示的整数具有固定的长度,因此在汇编指令系统中,经常有一些指令需要将其中的操作数进行符号位扩展。譬如两个8位或16位数据进行相加或者相减运算时,当有不足位数要求的数据时,需要将少位数据扩展成与位数要求相一致的数据;两个数据相除时,被除数应必须是除数的倍数等。 符号扩展的方法是将需要扩展的数据的符号位填入到扩展的每一位,以保持其作为有符号数的值的大小不变。这里要注意,要扩展的数须是用补码形式表示的有符号数,符号扩展后。其结果仍是该数的补码。 因此,对于补码表示的数,其正数的符号扩展是将其符号位0向左扩展(补0);其负数的符号扩展是将其符号位1向左扩展(补1)。

符号扩展语句

  1. 字节扩展为字指令CBW 指令格式:CBW 功能:该指令的隐含操作数为AH和AL,功能是用AL的符号位去填充AH,即若AL为正数,则AH=00H;否则AH=FFH。
  2. 字扩展为双字指令CWD 指令格式:CWD 功能:该指令的隐含操作数为DX和AX,功能是用AX的符号位填充DX,即若AX为正数,则DX=0000H;否则DX=FFFFH。 以上两条指令的执行都不影响任何标志位。

例子

无符号相乘

代码语言:javascript
复制
1

可以看出来,无符号数相乘就是直接相乘即可。

有符号数相乘

代码语言:javascript
复制
1

这是本文的重点:

有符号数相乘,需要进行符号位扩展,符号位扩展详情在上面已经介绍过了。 有符号相乘的步骤:

  1. 符号位扩展(负数前面补1,正数补0)
  2. 扩展后的数据两式相乘
  3. 求补(计算机中存放的是补码)
  4. 取有效位,比如3位数据相乘,得到的结果取有效位6位即可。

有符号数相乘 例子:-3*3

  1. 在计算机中存放的时二进制数据补码,所以本例中应为101乘011
  2. 符号位扩展后 111101 X 000011 =10110111
  3. 取有效位6位 110111
  4. 求补 101001 可以计算出是-9,结果正确

题中数据计算

  1. 10110100 X 00010001
  2. 1111 1111 1011 0100 X 0000 0000 0001 0001
  3. 1111101011110100
  4. FAF4

后续

如果想了解更多物联网、智能家居项目知识,可以关注我的项目实战专栏。 欢迎关注公众号,喜欢就点一点 在看 。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 物联网知识 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 格式及功能介绍
    • 无符号数乘法指令
      • 有符号数乘法指令
      • 符号扩展及符号扩展语句
        • 符号扩展
          • 符号扩展语句
          • 例子
            • 无符号相乘
              • 有符号数相乘
                • 这是本文的重点:
                • 有符号数相乘 例子:-3*3
                • 题中数据计算
            • 后续
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档