51单片机小实验——双字节二进制乘法
- 再创世纪·代码厨房
- 2008-10-11
- 261热度
- 0评论
双字节二进制乘法,被乘数的首地址由30h给出,乘数的首地址由31h给出,结果的存储单元,结果的存储单元首地址由32h给出。
chengshu data 30h
beicheng data 31h
jieguo data 32h
org 0000h
ljmp start
org 0100h
start: clr c
mov r0,chengshu
mov a,@r0
mov b,a
mov r1,beicheng
mov a,@r1
mul ab
mov r0,jieguo
mov @r0,a
inc r0
mov @r0,b;第一次部分和,即被乘数低位乘以乘数低位
mov r0,chengshu
mov a,@r0
mov b,a
mov r1,beicheng
inc r1
mov a,@r1
mul ab
mov r0,jieguo
inc r0
addc a,@r0
mov @r0,a
inc r0
mov @r0,b;第二部分和,被乘数高位乘以乘数低位
mov r0,chengshu
inc r0
mov a,@r0
mov b,a
mov r1,beicheng
mov a,@r1
mul ab
mov r0,jieguo
inc r0
addc a,@r0
mov @r0,a
inc r0
mov a,b
addc a,@r0
mov @r0,a;第三部分,被乘数低位乘以乘数高位
mov r0,chengshu
inc r0
mov a,@r0
mov b,a
mov r1,beicheng
inc r1
mov a,@r1
mul ab
mov r0,jieguo
inc r0
inc r0
addc a,@r0
mov @r0,a
inc r0
mov @r0,b;第四部分,高位乘以高位
sjmp $
end