找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3691|回复: 0
打印 上一主题 下一主题
收起左侧

51单片机8位带符号乘法运算(汇编)

[复制链接]
跳转到指定楼层
楼主
ID:432634 发表于 2018-11-24 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
采用对符号位单独处理的办法,处理步骤如下:
  • 单独处理被乘数和乘数的符号位,办法是单独取出被乘数符号位并与乘数符号位进行异或操作,因为积的符号位的产生规则是同号相乘为正,异号相乘为负。
  • 求被乘数和乘数的绝对值,并使两绝对值相乘从而获得积的绝对值,方法是分别判断被乘数和乘数的符号位:若它为正,则其本身就是绝对值;若它为负,则对它求补。
  • 对积进行处理。若积为正,则对积不进行处理;若积为负,则对积求补,使之变为补码的形式。

R0和R1中为两个补码形式的带符号数,R3R2为积 R0*R1=R3R2
ORG 0600H’
SBIT BIT 20H.0
SBIT1 BIT 20H.1
SBIT2 BIT 20H.2
MOV A,R0             ;被乘数送A
RLC A                   ;被乘数符号送CY
MOV SBIT1,C        ;送入SBIT1
MOV A,R1             ;乘数送A
RLC A                   ;乘数符号送CY
MOV SBIT2,C        ;送入SBIT2
ANL C,/SBIT1        ;SBIT1非与 SBIT2 送CY
MOV SBIT,C          ;送入SBIT
MOV C,SBIT1        ;SBIT1送CY
ANL C,SBIT2          ;SBIT1 与 SBIT2非 送CY
ORL C,SBIT            ;积的符号位送CY
MOV SBIT,C          ; 送入SBIT
MOV A,R0             ;处理被乘数
JNB SBIT1,NCH1    ;若她为正,则转NCH1
CPL A                   ;若她为负,则求补的绝对值
INC A                   ;
NCH1:    MOVB,A              ;被乘数绝对值送B
              MOVA,R1             :处理乘数
JNB SBIT2,NCH2    ;若它为正,则转NCH2
CPL A                   ;若她为负,则求补的绝对值
ADD A,#01H         ;
NCH2:    MULAB                ;求积的绝对值
JNB SBIT,NCH3     ;若积为正,则转NCH3
CPL A                   ;若积为负,则低字节求补
ADD A,#01H         ;
NCH3:    MOVR2,A             ;积的低字节存入R2
MOV A,B              ;积的高字节送A
JNB SBIT,NCH4     ;若积为正,则转NCH4
CPL A                   ;若积为负,则高字节求补
ADDC A,00H         ;
NCH4:    MOVR3,A             ;积的高字节存入R3
SJMP $
END

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表