汇编问题

[复制链接]
2609|19
 楼主| lium 发表于 2012-6-7 19:09 | 显示全部楼层 |阅读模式
这两句
是怎么实现的
0300 TJMP ; get destination address $0302H according to (PC11~PC8),TBR,AC
0301 RTNW 00H,01H
guoyt 发表于 2012-6-7 19:10 | 显示全部楼层
对汇编一窍不通
hanwe 发表于 2012-6-7 19:12 | 显示全部楼层
在哪看到的
 楼主| lium 发表于 2012-6-7 19:14 | 显示全部楼层
例2-4-41:读取位于$302 处的数据表中的数据
TBR EQU OEH
TEMP EQU 20H
:
:
001A LDI TBR,00H ;put index value (high nibble) 0 into TBR.
001B LDI TEMP,02 ;put index value (low nibble) 2 into AC
001C CALL 300H ;call subprogram.
001D :
:
:
ORG 300H
0300 TJMP ; get destination address $0302H according to (PC11~PC8),TBR,AC
0301 RTNW 00H,01H
0302 RTNW 00H,02H ;return to main program, H
yufe 发表于 2012-6-7 19:16 | 显示全部楼层
其实指针查表就是使用 基址+变址的间接选址方式
 楼主| lium 发表于 2012-6-7 19:18 | 显示全部楼层
《中颖单片机入门与实战》里是否有错误的地方
hanwe 发表于 2012-6-7 19:20 | 显示全部楼层
没有错,
你可以将这段查表指令,理解为 MOVC A,@A+PC,PC为基址$300H,TBR和A在实例中为变址02H,当运行完这条指令后,下一条指令就会运行$302H,并将$302H返回到A中。
yufe 发表于 2012-6-7 19:22 | 显示全部楼层
对,要注意一件事,那就是由于返回值为8位,而我们的四位机只有4位,所以低四位保存在AC中,高四位保存在TBR中,先低后高
 楼主| lium 发表于 2012-6-7 19:23 | 显示全部楼层
在这里RTNW执行完了后返回到哪 下一步执行什么
hanwe 发表于 2012-6-7 19:25 | 显示全部楼层
下一步就到CALL 后面啊,就相当于RTNI。
 楼主| lium 发表于 2012-6-7 19:26 | 显示全部楼层
哦,能详细说说嘛?
hanwe 发表于 2012-6-7 19:28 | 显示全部楼层
此时AC中保存的是查表值的低四位,所以我们要进行保存,因此CALL后面跟着STA XXX_LOW4;
hanwe 发表于 2012-6-7 19:28 | 显示全部楼层
之后,我们需要保存查表值得高四位,该值查表后保存在TBR中,因此STA XXX_LOW4后面接着的指令是
LDA TBR
STA XXX_HIGH4
llia 发表于 2012-6-7 19:31 | 显示全部楼层
TJMP  就是跳到 (PC11~PC8),TBR,AC  组成的地址中去,2K内,   TBR,AC就是256字节内
RTNW 00H,01H   就是返回 00H,01H, 00H放在TBR 00H放在AC,返回后把 TBR 和 AC值存到字节定义的寄存器就好了
 楼主| lium 发表于 2012-6-7 19:33 | 显示全部楼层
嗯,懂了,多谢大家
 楼主| lium 发表于 2012-6-7 19:34 | 显示全部楼层
先结贴了
yuhunwill 发表于 2012-6-8 12:29 | 显示全部楼层
汇编难懂,不知道怎么排序啊
qq65411253 发表于 2012-6-8 16:27 | 显示全部楼层
楼上是21ic的亮点。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

915

主题

9578

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部