谁能给我讲解下汇编的多字节乘除法啊?怎么看都看不懂!

现在有一个算法:计数(TH1TL1)*17/1000人家用移位的方法实现,不懂是什么意思!JI_SUAN:SETBRS0MOV30H,#0MOV31H,#0MOV32H,... 现在有一个算法:计数(TH1 TL1 )*17/1000 人家用移位的方法实现,不懂是什么意思!
JI_SUAN: SETB RS0
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
MOV 34H,#0
MOV R0,TL1
MOV R1,TH1
CLR A
MOV R2,A
MOV R3,A
MOV R4,A
MOV R5,#16
LOP: CLR C
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
DA A
MOV R3,A
MOV A,R2
ADDC A,R2
MOV R2,A
DJNZ R5,LOP

MOV A,R4
MOV B,#16
DIV AB
MOV 43H,A
MOV 44H,B
MOV A,R2
MOV 40H,A
MOV A,R3
MOV B,#16
DIV AB
MOV 41H,A
MOV 42H,B

MOV A,43H
MOV B,#7
MUL AB
MOV A,B
ADD A,34H
MOV 34H,A

MOV A,42H
MOV B,#7
MUL AB
ADD A,43H
ADD A,34H
MOV 34H,A
MOV A,B
ADD A,33H
MOV 33H,A

MOV A,41H
MOV B,#7
MUL AB
ADD A,42H
ADD A,33H
MOV 33H,A
MOV A,B
ADD A,32H
MOV 32H,A

MOV A,40H
MOV B,#7
MUL AB
ADD A,41H
ADD A,32H
MOV 32H,A
MOV A,B
ADD A,31H
ADD A,40H
MOV 31H,A

MOV A,34H
MOV B,#10
DIV AB
ADD A,33H
MOV 33H,A
MOV 34H,B

MOV A,33H
MOV B,#10
DIV AB
ADD A,32H
MOV 32H,A
MOV 33H,B

MOV A,32H
MOV B,#10
DIV AB
ADD A,31H
MOV 31H,A
MOV 32H,B

MOV A,31H
MOV B,#10
DIV AB
ADD A,30H
MOV 30H,A
MOV 31H,B
CLR RS0
RET
展开
 我来答
做而论道
高能答主

2013-09-26 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
TH1 TL1中,有 16 位二进制数,变换成十进制,即:0~65535。
共五位,万、千、百、十、个。

变换程序,就是下面这段:
MOV R0,TL1
MOV R1,TH1
CLR A
MOV R2,A
MOV R3,A
MOV R4,A
MOV R5,#16
LOP: CLR C
MOV A,R0
RLC A
MOV R0,A
MOV A,R1
RLC A
MOV R1,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
DA A
MOV R3,A
MOV A,R2
ADDC A,R2
MOV R2,A
DJNZ R5,LOP
--------
万、千、百、十、个,分解送到30H、31H、32H、33H、34H。

就是下面这段:
MOV A,R4
MOV B,#16
DIV AB
MOV 43H,A
MOV 44H,B
MOV A,R2
MOV 40H,A
MOV A,R3
MOV B,#16
DIV AB
MOV 41H,A
MOV 42H,B
--------
把个位(30H单元)放弃,就是除以10。
--------
把30H、31H、32H、33H,乘以7。
就是下面这段:
MOV A,43H
MOV B,#7
MUL AB
MOV A,B
ADD A,34H
MOV 34H,A

MOV A,42H
MOV B,#7
MUL AB
ADD A,43H
ADD A,34H
MOV 34H,A
MOV A,B
ADD A,33H
MOV 33H,A

MOV A,41H
MOV B,#7
MUL AB
ADD A,42H
ADD A,33H
MOV 33H,A
MOV A,B
ADD A,32H
MOV 32H,A

MOV A,40H
MOV B,#7
MUL AB
ADD A,41H
ADD A,32H
MOV 32H,A
MOV A,B
ADD A,31H
ADD A,40H
MOV 31H,A
--------
把30H、31H、32H、33H,再乘以10。
就是剩下的部分。

大致的流程,就是这样。
程序正确与否,还没有实验。
更多追问追答
追问
他这个移位16次是怎么实现乘法的我还没弄懂
追答
这个移位16次是怎么实现乘法的

--移位16次,不是乘法。
--而是变成了 BCD 码。
手机用户32016
2013-09-27 · 贡献了超过318个回答
知道答主
回答量:318
采纳率:0%
帮助的人:95.1万
展开全部
思路其实就是小学就学过的竖式乘法:例如2字节(ab)乘2字节(cd)先b*d=ef(乘法会使位数加倍,所以是2个字节e和f),a*d=gh0(乘积是gh,后面补一个字节的0,因为a在高8位),d*c=ij0,a*c=mn00(0的意思同前)然后做加法:整个的成积(4个字节)=ef+gh0+ij0+mn00
追问
这个我懂!但是移位实现乘法  和移位实现除以1000  我没弄懂这是多字节的移位,单字节我还懂点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式