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

今日头条

1151人已加入

描述

采用对符号位单独处理的办法,处理步骤如下:

  1. 单独处理被乘数和乘数的符号位,办法是单独取出被乘数符号位并与乘数符号位进行异或操作,因为积的符号位的产生规则是同号相乘为正,异号相乘为负。

  2. 求被乘数和乘数的绝对值,并使两绝对值相乘从而获得积的绝对值,方法是分别判断被乘数和乘数的符号位:若它为正,则其本身就是绝对值;若它为负,则对它求补。

  3. 对积进行处理。若积为正,则对积不进行处理;若积为负,则对积求补,使之变为补码的形式。

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:    MOV B,A              ;被乘数绝对值送B

              MOV A,R1             :处理乘数

JNB SBIT2,NCH2    ;若它为正,则转NCH2

CPL A                   ;若她为负,则求补的绝对值

ADD A,#01H         ;

NCH2:    MUL AB                ;求积的绝对值

JNB SBIT,NCH3     ;若积为正,则转NCH3

CPL A                   ;若积为负,则低字节求补

ADD A,#01H         ;

NCH3:    MOV R2,A             ;积的低字节存入R2

MOV A,B              ;积的高字节送A

JNB SBIT,NCH4     ;若积为正,则转NCH4

CPL A                   ;若积为负,则高字节求补

ADDC A,00H         ;

NCH4:    MOV R3,A             ;积的高字节存入R3

SJMP $

END

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分