您的位置 首页 硬件

用左移减法做4位16进制数除以2位16进制数运算

;只能整数运算及非0运算ORG0000HJMPA1ORG002BHA1:MOVR0,04H;被除数MOVR1,0D2H;被除数MOVR2,0;余数MOVR3,0;商MOVR4,0;商MOVR5,34;

;只能整数运算及非0运算

ORG0000H
JMPA1
ORG002BH
A1:MOVR0,#04H;被除数
MOVR1,#0D2H;被除数
MOVR2,#0;余数
MOVR3,#0;商
MOVR4,#0;商
MOVR5,#34;除数
MOV30H,#16
A2:MOVA,R1;先把移低字节移到高字节位
RLCA;
MOVR1,A;
MOVA,R0;先处理高字节和接纳低字节传上来的位字节
RLCA;
MOVR0,A;
MOVA,R2;把移出来的数处理
RLCA;
MOVR2,A;
CLRC;清C因为减法A=A-C-R5
SUBBA,R5;移出来的数减除数
JCA3;比较移出来的数和除数巨细
MOVR2,A;移出来的数大则商要置1并将余数赋给R2用于下次移位后再减除数
;因为除数为2位16进制数所以余数不不超越2位16进制数用一个寄存器就够了
A3:CPLC;商处理
MOVA,R4;先把存到低字节位
RLCA;
MOVR4,A;
MOVA,R3;通过低字节存到高字节
RLCA;
MOVR3,A;
DJNZ30H,A2;
JMP$
END
;思路–除数为2位16进制数所以余数不不超越2位16进制数用一个寄存器就够了
; –除数为4位16进制数就得要用2个寄存器
; R2 R5 R3 R4
;1、 00000000-00100010小于0,商值为00000000》00000000B
;2、 00000000-00100010小于0,商值为00000000》00000000B
;3、 00000000-00100010小于0,商值为00000000》00000000B
;4、 00000000-00100010小于0,商值为00000000》00000000B
;5、 00000000-00100010小于0,商值为00000000》00000000B
;6、 00000001-00100010小于0,商值为00000000》00000000B
;7、 00000010-00100010小于0,商值为00000000》00000000B
;8、 00000100-00100010小于0,商值为00000000》00000000B
;9、 00001001-00100010小于0,商值为00000000》00000000B
;10、00010011-00100010小于0,商值为00000000》00000000B
;11、00100110-00100010大于0,商值为00000000》00000001B;余数为00000100B赋值给R2
;12、00010010-00100010小于0,商值为00000000》00000010B
;13、00100100-00100010小于0,商值为00000000》00000100B
;14、00100101-00100010大于0,商值为00000000》00001001B;余数为00000010B赋值给R2
;15、00001010-00100010小于0,商值为00000000》00010010B;
;16、00010100-00100010小于0,商值为00000000》00100100B,余数为00010100B
;至此算法完结

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部