您的位置 首页 测评

用右移加法做乘法运算(255*255)

ORG0000HJMPA1ORG002BHA1:MOVR0,0;数据处理寄存器(乘积高八位)MOVR1,255;被乘数(乘积低八位)MOVR2,255;乘数MOV30H,8;循环次数–8位

ORG0000H

JMPA1
ORG002BH
A1:MOVR0,#0;数据处理寄存器(乘积高八位)
MOVR1,#255;被乘数(乘积低八位)
MOVR2,#255;乘数
MOV30H,#8;循环次数–8位二进制数相乘8次4位则4次
A2:
CLRC;清C
MOVA,R1;
JNBACC.0,A3;判别被乘数第0位是否为0是则不必相加
MOVA,R0;不为0则相加
ADDA,R2;乘数与处理后数据相加
MOVR0,A;数据存回数据处理寄存器

A3:MOVA,R0;右移一位
RRCA;相加或许溢出所以用RRC
MOVR0,A;

MOVA,R1;
RRCA;将处理后的数移到被乘数
MOVR1,A;
DJNZ30H,A2;是否完结
NOP
NOP
NOP
JMP$
;思路
; R0处理数 R1被乘数 被乘数第0位为1相加 相加存到R0
; 00000000 11111111 1 00000000+11111111=11111111
;1 01111111 11111111 1 01111111+11111111=101111110
;2 10111111 01111111 1 10111111+11111111=110111110
;3 11011111 00111111 1 11011111+11111111=111011110
;4 11101111 00011111 1 11101111+11111111=111101110
;5 11110111 00001111 1 11110111+11111111=111110110
;6 11111011 00000111 1 11111011+11111111=111111010
;7 11111101 00000011 1 11111101+11111111=111111100
;8 11111110 00000001
END

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/317948.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部