Y_G_G 发表于 2018-11-15 19:13 懂了,谢谢您,收获很多 |
探路 发表于 2018-11-15 14:22 你把别的回答先忘了 汇编,你不要去管PC值,这玩意不好搞的,左边的那数字不要去管了.还有,汇编代码最好是搞好一点代码风格,不然自己都看不明白
|
探路 发表于 2018-11-15 14:35 1. 指令字节宽度是固有的,共有1、2、3字节3种,你可查书中指令字节表。 2. tab表首址是0075, 0075+4=0079, 0079存储单元内的数据正好是06H. 你欲深刻理解和深入学习,介绍你2本书,张志良编著的:《单片机原理与控制技术——双解汇编和C51》第3版ISBN 978-7-111-42393-5机械工业出版社;《单片机学习指导及习题解答——双解汇编和C51》第2版ISBN 978-7-111-42431-4机械工业出版社。后书是前书的配套教材,但也可单独使用。这2本书是双解汇编和c,对汇编有较为详细的解说,有许多思考题,并有习题解答。便于阅读理解,便于自学。书中电路和程序设计有详细说明,程序语句条条有注解。你可先去图书馆或新华书店翻阅。 |
sxhwdz 发表于 2018-11-15 09:17 TAB:DB 00H,66H,4FH,5BH,06H ;“空”,“4”,“3”,“2”,“1”的字段码 这是具体的tab表,忘记贴了,但04+00不等于06啊,这里的02哪里来的呢? |
zl2168 发表于 2018-11-15 08:21 指令是多少字节这是什么意思?指令字节宽度?这些宽度是如何推算的呢? 我的tab表是这样的: TAB:DB 00H,66H,4FH,5BH,06H ;“空”,“4”,“3”,“2”,“1”的字段码 DPTR中放的数据不因该是地址码吗?是地址0075,也就是tab表的地址,tab表的 第一个的数据应该是00,00+04=04,这个02是从哪里来的呢? 我小白,麻烦了,望耐心指点 |
Y_G_G 发表于 2018-11-15 08:24 TAB:DB 00H,46H,4FH,5BH,06H;空,“4”,“3”,“2”,“1”的字段码 |
| R7初始值是4, 每次运行到005A,会减一,若不等于0,则跳转到0047(LOOP)循环入口,否则跳出循环,执行下一条指令。0044给数据指针DPTR赋值为#TAB,应该是一个表格。0047把当前R7(4~1)赋给A,0048 是查表,把表格中 DPTR+A 项(也就是 TAB+R7),的值赋给A |
| 问题不在这里,问题在于TAB这个表,你没有让我看到你TAB的表 |
| pc的值为何从0040跳到了0042,是因为前一条指令是2字节。同理,0044,0047跳转也是前面的指令依次是是2字节、3字节。累加器A中得内容变为了06H,为何不是04H,DPTR中的数据是02,加上04,变成了06. |