打印
[其它应用]

这两句是怎么实现的

[复制链接]
1304|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huanghuac|  楼主 | 2022-10-9 22:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
0300 TJMP ; get destination address $0302H according to (PC11~PC8),TBR,AC
0301 RTNW 00H,01H

使用特权

评论回复
沙发
wyjie| | 2022-10-9 22:35 | 只看该作者
对汇编一窍不通

使用特权

评论回复
板凳
kangzj| | 2022-10-9 22:41 | 只看该作者
在哪看到的

使用特权

评论回复
地板
AloneKaven| | 2022-10-10 20:06 | 只看该作者
看不懂

使用特权

评论回复
5
huanghuac|  楼主 | 2022-10-13 18:33 | 只看该作者

例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

使用特权

评论回复
6
juventus9554| | 2022-10-13 18:35 | 只看该作者
其实指针查表就是使用 基址+变址的间接选址方式

使用特权

评论回复
7
huanghuac|  楼主 | 2022-10-13 18:39 | 只看该作者
《中颖单片机入门与实战》里是否有错误的地方

使用特权

评论回复
8
zhaoxqi| | 2022-10-13 18:42 | 只看该作者

没有错,
你可以将这段查表指令,理解为 MOVC A,@A+PC,PC为基址$300H,TBR和A在实例中为变址02H,当运行完这条指令后,下一条指令就会运行$302H,并将$302H返回到A中。

使用特权

评论回复
9
jlyuan| | 2022-10-13 18:45 | 只看该作者
对,要注意一件事,那就是由于返回值为8位,而我们的四位机只有4位,所以低四位保存在AC中,高四位保存在TBR中,先低后高

使用特权

评论回复
10
huanghuac|  楼主 | 2022-10-13 18:48 | 只看该作者
在这里RTNW执行完了后返回到哪 下一步执行什么

使用特权

评论回复
11
huanghuac|  楼主 | 2022-10-13 18:54 | 只看该作者
本帖最后由 huanghuac 于 2022-10-13 18:57 编辑

有人知道吗

使用特权

评论回复
12
huanghuac|  楼主 | 2022-10-13 18:57 | 只看该作者
哦,能详细说说嘛?

使用特权

评论回复
13
zhenykun| | 2022-10-13 19:02 | 只看该作者
下一步就到CALL 后面啊,就相当于RTNI。

使用特权

评论回复
14
zwll| | 2022-10-13 19:05 | 只看该作者

此时AC中保存的是查表值的低四位,所以我们要进行保存,因此CALL后面跟着STA XXX_LOW4;

使用特权

评论回复
15
dingy| | 2022-10-13 19:08 | 只看该作者
之后,我们需要保存查表值得高四位,该值查表后保存在TBR中,因此STA XXX_LOW4后面接着的指令是
LDA TBR
STA XXX_HIGH4

使用特权

评论回复
16
heweibig| | 2022-10-13 19:10 | 只看该作者

TJMP  就是跳到 (PC11~PC8),TBR,AC  组成的地址中去,2K内,   TBR,AC就是256字节内
RTNW 00H,01H   就是返回 00H,01H, 00H放在TBR 00H放在AC,返回后把 TBR 和 AC值存到字节定义的寄存器就好了

使用特权

评论回复
17
wyjie| | 2022-10-13 19:13 | 只看该作者
汇编难懂,不知道怎么排序啊

使用特权

评论回复
18
zwll| | 2022-10-13 19:17 | 只看该作者
汇编难懂,不知道怎么排序啊

使用特权

评论回复
19
huanghuac|  楼主 | 2022-10-13 19:20 | 只看该作者
多谢大家讨论这么多哈,呵呵

使用特权

评论回复
20
tpgf| | 2022-11-3 09:38 | 只看该作者
call 300H 程序会跳到你指定的org 300H 执行TJMP指令,TJMP指令为跳转指令,跳转的地址为以TBR为高地址,AC(累加器)为低地址,TBR最开始赋值为00h,执行完LDI TEMP,02 ;AC的值也为02,则会跳转到0302 RTNW 00H,02H ;返回的高位00H送到TBR,02H送AC,从而实现读表的功能。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

772

主题

8473

帖子

6

粉丝