单片机题目,有耐心的人进。会多少说多少。。。。集思广益!!
ORG200HMOVSP,#40HMOVA,#30HLCALL250HADDA,#10HMOVB,AL1:SJMPL1ORG250HMOVDPTR,#20AHPUSHDP...
ORG 200H
MOV SP,#40H
MOV A,#30H
LCALL 250H
ADD A,#10H
MOV B,A
L1:SJMP L1
ORG 250H
MOV DPTR,#20AH
PUSH DPL
PUSH DPH
RET
执行程序后SP=?,A=?,B=?
说说每条指令的作用。 展开
MOV SP,#40H
MOV A,#30H
LCALL 250H
ADD A,#10H
MOV B,A
L1:SJMP L1
ORG 250H
MOV DPTR,#20AH
PUSH DPL
PUSH DPH
RET
执行程序后SP=?,A=?,B=?
说说每条指令的作用。 展开
4个回答
意法半导体(中国)投资有限公司
2023-06-12
展开全部
展开全部
51的指令是从0000H开始执行的,所以在前面加上
ORG 0000H
LJMP 200H
在最后加上
END
仿真运行才能正常通过
运行后为:
SP = 42H
A = 30H
B = 50H
下面解释每天指令的含义
ORG 200H
MOV SP,#40H ;将堆栈指针知道40H处,在ROM空间的地址为200H
MOV A,#30H ;ROM地址为203H
LCALL 250H ;调用子程序,ROM地址:205H
ADD A,#10H ;这条指令压根,ROM地址:208H
MOV B,A ;将ACC的内容复制到累加器B;这个时侯A = 30H,ROM地址:20AH
L1:SJMP L1 ;ROM地址:20CH
ORG 250H
MOV DPTR,#20AH
PUSH DPL
PUSH DPH
RET
最后这四条指令这儿一起说,先将20AH放到DPTR中,然后再低位高位一次压入堆栈中,执行一条RET指令,关键就是执行的RET指令,它的功能就是将堆栈中的最高的两个字节放入程序指针里面,相当于两条POP指令,先出高位到PC的高位,再出低位到PC的低位,这样就按照我们的意愿改变了PC的值,这招一般用在子程序和中断返回中,可以通过这招返回到我们指定的地址,而不是像最初那样返回到自程序调用或中断的地方,这招以前还用汇编写程序时想到的,嘿嘿,现在都用C语言来写程序了,你也最好向C语言方面过渡,对将来的发展更好
ORG 0000H
LJMP 200H
在最后加上
END
仿真运行才能正常通过
运行后为:
SP = 42H
A = 30H
B = 50H
下面解释每天指令的含义
ORG 200H
MOV SP,#40H ;将堆栈指针知道40H处,在ROM空间的地址为200H
MOV A,#30H ;ROM地址为203H
LCALL 250H ;调用子程序,ROM地址:205H
ADD A,#10H ;这条指令压根,ROM地址:208H
MOV B,A ;将ACC的内容复制到累加器B;这个时侯A = 30H,ROM地址:20AH
L1:SJMP L1 ;ROM地址:20CH
ORG 250H
MOV DPTR,#20AH
PUSH DPL
PUSH DPH
RET
最后这四条指令这儿一起说,先将20AH放到DPTR中,然后再低位高位一次压入堆栈中,执行一条RET指令,关键就是执行的RET指令,它的功能就是将堆栈中的最高的两个字节放入程序指针里面,相当于两条POP指令,先出高位到PC的高位,再出低位到PC的低位,这样就按照我们的意愿改变了PC的值,这招一般用在子程序和中断返回中,可以通过这招返回到我们指定的地址,而不是像最初那样返回到自程序调用或中断的地方,这招以前还用汇编写程序时想到的,嘿嘿,现在都用C语言来写程序了,你也最好向C语言方面过渡,对将来的发展更好
意法半导体(中国)投资有限公司
2021-01-14 广告
2021-01-14 广告
可以写对它写程序,让它听从你的安排,你让它实现什么功能它就能实现,比如电子钟、电子琴、打印机、手机、电梯控制,智能家具如:空调、冰箱、洗衣机等,如果这些家电没有它,什么都不能工作。单片机内部很复杂,你研究的越深你就会越爱上它,它可以帮你实现...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
ORG 200H (程序从200H开始执行)
MOV SP,#40H (堆栈指针指向40H)
MOV A,#30H (30H送入累加器)
LCALL 250H (调用从250H开始的子程序)
ADD A,#10H (A+10H A中为40H)
MOV B,A (B中为40H)
L1:SJMP L1 (无条件跳转在此 即等待)
ORG 250H (子程序从250H开始)
MOV DPTR,#20AH (将地址20AH传给DPTR 数据指针)
PUSH DPL (DPTR低位压栈)
PUSH DPH (DPTR高位压栈)
RET (子程序返回)
执行程序后SP=42H,A=40H,B=40H
有问题 再交流
MOV SP,#40H (堆栈指针指向40H)
MOV A,#30H (30H送入累加器)
LCALL 250H (调用从250H开始的子程序)
ADD A,#10H (A+10H A中为40H)
MOV B,A (B中为40H)
L1:SJMP L1 (无条件跳转在此 即等待)
ORG 250H (子程序从250H开始)
MOV DPTR,#20AH (将地址20AH传给DPTR 数据指针)
PUSH DPL (DPTR低位压栈)
PUSH DPH (DPTR高位压栈)
RET (子程序返回)
执行程序后SP=42H,A=40H,B=40H
有问题 再交流
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已经有人回答得这么好了,不补充了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SP=30H
A=40H
B=50H
A=40H
B=50H
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询