发表于:2006/12/19 15:52:00
#0楼
我是一个初学汇编的新手,在学习查表指令时,怎么都想不通其中一个查表指令。(MOVC A,@A+PC)这个PC的值到底如何确定呢?
一个例子:
在程序中定义一个0-9的平方表,利用查表指令找出累加器A=05H的平方值。
用:MOVE A,@A+PC
ORG 0000H
MOV DPTR,#TABLE ;表首地址赋予DPTR
MOV A,#05
MOVC A,@A+DPTR
SJMP $
TABLE: DB 0,1,4,9,16,25,36,49,64,81
END
用MOVC A,@A+PC
ORG 0000H
MOV A,#05
ADD A,#04 ;这里为何要加04呢?书上说这条指令是修正累加器
MOVC A,@A+PC ;的值,修正值为查表指令距离表格首地址的字节减
SJMP $ ;1,但我的PC值是如何呢?这个修正值又如何计算
TABLE: DB 0,1,4,9,16,25,36,49,64,81 ;出来的呢?
END
一个例子:
在程序中定义一个0-9的平方表,利用查表指令找出累加器A=05H的平方值。
用:MOVE A,@A+PC
ORG 0000H
MOV DPTR,#TABLE ;表首地址赋予DPTR
MOV A,#05
MOVC A,@A+DPTR
SJMP $
TABLE: DB 0,1,4,9,16,25,36,49,64,81
END
用MOVC A,@A+PC
ORG 0000H
MOV A,#05
ADD A,#04 ;这里为何要加04呢?书上说这条指令是修正累加器
MOVC A,@A+PC ;的值,修正值为查表指令距离表格首地址的字节减
SJMP $ ;1,但我的PC值是如何呢?这个修正值又如何计算
TABLE: DB 0,1,4,9,16,25,36,49,64,81 ;出来的呢?
END