既然你还没学汇编,我就不用专业术语给你解释了,用好理解的方法帮你简单解释下,如果有必要我们再讨论
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的内容。
这段指令把数据挪来挪去,貌似没具体的意图,结果不重要
希望对你有帮助,不明白的我们可以再讨论
温馨提示:答案为网友推荐,仅供参考