请各位帮忙分析一下这段汇编程序,描述一下功能,不胜感激!

ORG0000HLJMPMAINORG1000HMAIN:MOVSP,#60HMOV81H,#50HMOVR0,#20HMOV@R0,#45HINCR0MOV@R0,#7... ORG 0000H
LJMP MAIN
ORG 1000H
MAIN:MOV SP,#60H
MOV 81H,#50H
MOV R0,#20H
MOV @R0,#45H
INC R0
MOV @R0,#74H
MOV R1,#30H
MOV @R1,#67H
INC R1
MOV @R1,#28H
CLR C
MOV R2,#02H
L2:ACALL L1
DEC R0
DEC R1
DJNZ R2,L2
CLR A
MOV ACC.0,C
NOP
MOV @R0,A
L3:SJMP L3
L1:MOV A,@R0
ADDC A,@R1
DA A
MOV @R0,A
RET
END
展开
 我来答
百度网友7247a56
2013-10-15 · TA获得超过4618个赞
知道大有可为答主
回答量:1422
采纳率:92%
帮助的人:580万
展开全部
分析如下,有问题请追问。这个程序的主要功能就是完成求4574H+6728H之和,结果高位放在20H、地位放在21H,进位位放在1FH。
ORG 0000H
LJMP MAIN
ORG 1000H ;指定以下代码的存储起始地址
MAIN:MOV SP,#60H ;定义堆栈指针
MOV 81H,#50H ;给81H寄存器赋初值
MOV R0,#20H
MOV @R0,#45H ;间接寻址,把立即数45H存放到R0所指向的存储单元(地址为20H)
INC R0 ;R0指向下一个
MOV @R0,#74H ;间接寻址,把立即数74H存放到R0所指向的存储单元(地址为21H)
MOV R1,#30H
MOV @R1,#67H ;间接寻址,把立即数67H存放到R1所指向的存储单元(地址为30H)
INC R1
MOV @R1,#28H
CLR C ;进位标志清零
MOV R2,#02H ;循环次数
L2:ACALL L1 ;调用子程序L1,
;L1的功能:R0所指向的存储单元的值与R1所指向的存储单元的值相加,结果放在R0所指向的存储单元
DEC R0
DEC R1
DJNZ R2,L2 ;循环次数为不为零,则继续循环
CLR A ;清累加器A
MOV ACC.0,C ;把进位标志赋给累加器A的最低位
NOP ;空操作
MOV @R0,A ;把结果存放到R0所指的存储单元
L3:SJMP L3 ;最后,进入死循环
L1:MOV A,@R0 ;R0所指向的存储单元的值赋给累加器A
ADDC A,@R1 ;然后与R1所指向的存储单元的值相加,结果赋给累加器A
DA A ;对结果做BCD码调整
MOV @R0,A ;将结果存放在R0所指的存储单元
RET ;子程序返回
END
zhangsonglin_c
高粉答主

2013-10-15 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:8320万
展开全部
R0,是指针,指向20H地址;该地址存进数4574H;(低位在高地址)
R1,是指针,指向30H地址;该地址存进数6728H;(低位在高地址)
然后4574+6728存入R0所指地址20H。做这个加法,调用子程序L1:两个字节分别相加,进位自动加上。从MOV R2,#02H / L2:...到 DJNZ R2,L2是一个循环,两次调用L1:完成两个字节的加法。
结果最后存入A寄存器。
主程序最后一句
L3:SJMP L3
好像有问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式