51单片机8位带符号乘法运算(汇编)
2019-04-15 12:45发布
生成海报
采用对符号位单独处理的办法,处理步骤如下:
- 单独处理被乘数和乘数的符号位,办法是单独取出被乘数符号位并与乘数符号位进行异或操作,因为积的符号位的产生规则是同号相乘为正,异号相乘为负。
- 求被乘数和乘数的绝对值,并使两绝对值相乘从而获得积的绝对值,方法是分别判断被乘数和乘数的符号位:若它为正,则其本身就是绝对值;若它为负,则对它求补。
- 对积进行处理。若积为正,则对积不进行处理;若积为负,则对积求补,使之变为补码的形式。
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
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮