单片机汇编程序

[复制链接]
查看11 | 回复2 | 2009-6-9 10:57:56 | 显示全部楼层 |阅读模式
设计有256路分支出口的转移程序
编程如下:

MOV DPTR,#TAB

MOV A , R2

CLR C

RLC A

JNC LOW

INC DPH
LOW:MOV R3,A

MOVCA,@A+DPTR

PUSHA

MOV A,R3

INCA

MOVCA,@A+DPTR

PUSHA

RET
TAB: DWaddr00

DWaddr01

.

.

.

DW addrFF
以上程序中INC A

MOVCA,@A+DPTR

两条是什么意思?书上说A加1后在用MOVCA,@A+DPTR是查找出口地址的高8位。我不明白是什么意思?还有执行JNCLOW 的时候若C=1,则执行INC DPH,执行完这条指令后是继续往下执行呢,还是到这就结束了? 我指的是C=1的时候?
R2是信息编号,INC A, MOVCA,@A+DPTR 为什么A加1就查找地址的高八位,A不是0-127么?
加1不是变成1-128么,那就不能查找地址的高八位了。

回复

使用道具 举报

千问 | 2009-6-9 10:57:56 | 显示全部楼层
一楼已经回答了许多,我再补充一下吧。MOVCA,@A+DPTR 为什么A加1就查找地址的高八位,A不是0-127么?DW 是双字节,即一个数据占两个字节,(先放低八位,后放高八位)这句: RLC A是给A乘了2,这样查表时就一致了。INCA是给A加一,所以对应的是本数据的高八位。 LOW:MOV R3,A
MOVCA,@A+DPTR;取的是低八位地址数据
PUSHA
MOV A,R3
INCA
MOVCA,@A+DPTR ;取的是高八位地址数据
PUSHA
RETJNCLO...
回复

使用道具 举报

千问 | 2009-6-9 10:57:56 | 显示全部楼层
1、INC A ;是累加器A里的数值加1后将新的值放回A里2、MOVC A,@A+DPTR ;以DPTR指定的查表地址为基准,其功能是将DPTR的数值与累加器A相加形成地址,取出该地址单元中的内容送到累加器A里。其查表范围可达整个程序存储器64K空间3、执行JNCLOW 的时候若C=1,则执行INC DPH,执行完这条指令后是继续往下执行的。...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行