DSPLY:MOV DPTR, #TABLE
问题描述:
DSPLY:MOV DPTR, #TABLE
MOVC A, @A+DPTR
MOV SBUF, A
JNB TI, $
CLR TI
RET
TABLE:DB 0C0H,0F9H,0A4H
DB 0B0H,99H,92H
DB 82H,0F8H,80H,90H
问题:
1,MOVC A, @A+DPTR 是什么意思?
2,MOVC A, @A+DPTR 中的A+是什么意思?
3,#TABLE中的#是什么意思?
答
问题1:这条指令是汇编语言专用的查表指令,要查的表是一个顺序表,它以DPTR为表中数据的首地址,A中事先存储数据相对于表首地址的地址偏移量,最大不能超过255,通过调整A值可以查询表中指定位置的数据.这条指令执行完毕后,A中存储的是查询到的数据.简单的说:给DPTR赋表的首地址值,给A数据的偏移量,得到的查询结果放在A中.
这段指令是用与串口发送的.在调用这段子程序之前,在A中存储了要发送的数据的偏移量,然后查表、发送.
问题2:指令格式就是这么规定的没有任何其他的含义.
问题3:带有#开头的表示的是取#号后面变量的物理地址.在这段程序中,就是取标号TABLE的对应的地址,也就是第一个数据0C0H的地址.顺便说一下,第一个数据的地址偏移量是0.