作者j5307 (JJ)
看板ASM
标题[问题] 有关 index addressing
时间Wed Oct 12 23:24:30 2011
Write a program to get the x value from P1 and send x2 to P2,
continuously.
Solution:
ORG 0
MOV DPTR,
#XSQR_TABLE
MOV A,#0FFH
MOV P1,A ;P1 as INPUT PORT
BACK: MOV A,P1 ;GET X
MOVC A,@A+DPTR ;Count the addr.
MOV P2,A ;Issue it to P2
SJMP BACK
ORG 300H
XSQR_TABLE:
DB 0,1,4,9,16,25,36,49,64,81
END
有几个地方不太明白
1. MOV P1,A 又MOV A,P1 为什麽要做两次??
2. MOVC A,@A+DPTR 他如果这样不就变成了 0FFH+0300H? 那A是??
3. MOV P2,A A不就一直不变怎麽跳啊= =?
这学期第一次学组语碰到好多问题~~~头都快昏了
希望有高手能解答罗^^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.174.3.195
1F:推 ruemann:就说是从P1读值输出到P2,另外先把P1写成FF是8051输入PORT 10/13 06:59
2F:→ ruemann:的用法 10/13 06:59
3F:→ eentut:1. 先初始A值 以免读到错误的值 10/13 09:21
4F:→ eentut:2. 先去了解DPTR是什麽吧 简单而言 先以读到的A值为index 10/13 09:23
5F:→ eentut:然後对应到XSQR_TABLE里的值 再取出存到A 10/13 09:25
6F:→ eentut:3. 执行MOVC A,@A+DPTR这行时 A值就变了 10/13 09:26
了解 谢谢^^ 感觉蛮抽象的
※ 编辑: j5307 来自: 111.254.127.114 (10/15 15:04)