单片机指令解释,把每一条指令的作用解释下,每一步的计算和累加也解释下,谢谢
org0000hljmp0030horg0030hcword:mova,#0c5hmovdptr,#0030hmovx@dptr,amovr0,#20hmov@r0,am...
org 0000h
ljmp 0030h
org 0030h
cword:mov a,#0c5h
mov dptr,#0030h
movx @dptr,a
mov r0,#20h
mov@r0,a
mov r0,a
push acc
anl a,#1fh
movc a,@a+dptr
inc dptr
movx @dptr,a
mov b,a
pop acc
cword1:sjmp cword1
end 展开
ljmp 0030h
org 0030h
cword:mov a,#0c5h
mov dptr,#0030h
movx @dptr,a
mov r0,#20h
mov@r0,a
mov r0,a
push acc
anl a,#1fh
movc a,@a+dptr
inc dptr
movx @dptr,a
mov b,a
pop acc
cword1:sjmp cword1
end 展开
1个回答
展开全部
既然你还没学汇编,我就不用专业术语给你解释了,用好理解的方法帮你简单解释下,如果有必要我们再讨论
org 0000h ;表示下一条指令的地址是0000h
ljmp 0030h ;跳转到30h处的指令
org 0030h
cword:mov a,#0c5h ;cword:人为定义的标号,mov a,#0c5h :把0c5h放入a寄存器里
mov dptr,#0030h ;把30h放入dptr寄存器中
movx @dptr,a ;@表示存储器地址,地址数为@后的寄存器中的内容(30h),即把a中的内容放如地址数为30h的存储区
mov r0,#20h
mov @r0,a
mov r0,a
push acc ;把a寄存器压入堆栈
anl a,#1fh ;a和1fh做“和”运算
movc a,@a+dptr
inc dptr ;dptr做+1处理
movx @dptr,a
mov b,a
pop acc ;弹出a
cword1:sjmp cword1 ;跳到sword1处,即做自循环
end ;结束
注:
mov:访问片内RAM
movx:访问片外RAM
movc:访问ROM
RAM:数据存储区
ROM: 程序存储区
mov a,#0c5h 与 mov a,0c5h 是不同的,前者是将0c5h放入a;后者是将RAM地址数为0c5h处的数据放入a。
mov r0,a 与 mov @r0,a 是不同的,前者将a的内容放入r0寄存器;后者将a的内容放入数据存储区某处,其地址为r0的内容。
这段指令把数据挪来挪去,貌似没具体的意图,结果不重要
希望对你有帮助,不明白的我们可以再讨论
org 0000h ;表示下一条指令的地址是0000h
ljmp 0030h ;跳转到30h处的指令
org 0030h
cword:mov a,#0c5h ;cword:人为定义的标号,mov a,#0c5h :把0c5h放入a寄存器里
mov dptr,#0030h ;把30h放入dptr寄存器中
movx @dptr,a ;@表示存储器地址,地址数为@后的寄存器中的内容(30h),即把a中的内容放如地址数为30h的存储区
mov r0,#20h
mov @r0,a
mov r0,a
push acc ;把a寄存器压入堆栈
anl a,#1fh ;a和1fh做“和”运算
movc a,@a+dptr
inc dptr ;dptr做+1处理
movx @dptr,a
mov b,a
pop acc ;弹出a
cword1:sjmp cword1 ;跳到sword1处,即做自循环
end ;结束
注:
mov:访问片内RAM
movx:访问片外RAM
movc:访问ROM
RAM:数据存储区
ROM: 程序存储区
mov a,#0c5h 与 mov a,0c5h 是不同的,前者是将0c5h放入a;后者是将RAM地址数为0c5h处的数据放入a。
mov r0,a 与 mov @r0,a 是不同的,前者将a的内容放入r0寄存器;后者将a的内容放入数据存储区某处,其地址为r0的内容。
这段指令把数据挪来挪去,貌似没具体的意图,结果不重要
希望对你有帮助,不明白的我们可以再讨论
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询