永发信息网

51单片机汇编语言 编乘法和除法子程序

答案:2  悬赏:0  手机版
解决时间 2021-02-13 07:07
  • 提问者网友:暮烟疏雨之际
  • 2021-02-13 02:50
不要用(mul) 要用移位的方法 编16位无符号的数相乘和相初的子程序 请问怎么编啊??
最佳答案
  • 五星知识达人网友:大漠
  • 2021-02-13 03:14
;(r3r2r1r0) = (r7r6) * (r5r4), r4-r7 unchanged
mul_word:mov b,r6
mov a,r4
mul ab
mov r0,a
mov r1,b
mov r2,#0
mov r3,#0
mov a,r7
mov b,r4
mul ab
add a,r1
mov r1,a
mov a,r2
addc a,b
mov r2,a
clr a
addc a,r3
mov r3,a
mov a,r6
mov b,r5
mul ab
add a,r1
mov r1,a
mov a,r2
addc a,b
mov r2,a
clr a
addc a,r3
mov r3,a
mov a,r7
mov b,r5
mul ab
add a,r2
mov r2,a
mov a,r3
addc a,b
mov r3,a
ret

;(r3r2r1r0) = (r3r2r1r0)/(r5r4), (r7r6), r4-r5 unchanged
div_4b: mov r7,#0
mov r6,#0
push count
mov count,#32
clr c
div_4b_loop: mov a,r0 ;(r7r6r3r2r1r0) shift left one bit
rlc a
mov r0,a
mov a,r1
rlc a
mov r1,a
mov a,r2
rlc a
mov r2,a
mov a,r3
rlc a
mov r3,a
mov a,r6
rlc a
mov r6,a
mov a,r7
rlc a
mov r7,a
clr c ;if (r7r6)>=(r5r4),(r7r6)-=(r5r4)
mov a,r6
subb a,r4
mov b,a
mov a,r7
subb a,r5
jc div_4b_1
mov r6,b
mov r7,a
div_4b_1: cpl c
djnz count,div_4b_loop
mov a,r0
rlc a
mov r0,a
mov a,r1
rlc a
mov r1,a
mov a,r2
rlc a
mov r2,a
mov a,r3
rlc a
mov r3,a
pop count
ret
全部回答
  • 1楼网友:北方的南先生
  • 2021-02-13 03:49
可以采用二字节除法,后8位二进制数可以在高位补零凑齐16位,下面程序供参考。 ;function name: div-2 byte ;function: unsigned 2 byte divide ;(37h)(36h)=(37h)(36h)/(3bh)(3ah) ;working area data memory: (39h),(38h) b equ 0f0h org 0000h ljmp start org 0100h start: mov r3,#16h clr c loop1: mov r1,#36h mov r2,#04h loop2: mov a,@r1 rlc a mov @r1,a inc r1 djnz r2,loop2 mov r0,#39h mov r1,#41h mov r2,#02h lcall data_compare jc loop3 mov r0,#39h mov r1,#40h lcall data_subtract loop3: cpl c djnz r3,loop1 mov r1,#36h mov r2,#02h loop4: mov a,@r1 rlc a mov @r1,a inc r1 djnz r2,loop4 sjmp $ ;************************************************ data_compare: mov a,@r0 mov b,@r1 cjne a,b,loop5 inc r0 inc r1 djnz r2,data_compare loop5: ret ;************************************************* data_subtract: mov r2,#02h clr c loop6: mov a,@r0 subb a,@r1 mov @r0,a inc r0 inc r1 djnz r2,loop6 ret end
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯