[問題] 有關 index addressing

看板ASM (組合語言)作者 (JJ)時間13年前 (2011/10/12 23:24), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
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

10/13 06:59, , 1F
就說是從P1讀值輸出到P2,另外先把P1寫成FF是8051輸入PORT
10/13 06:59, 1F

10/13 06:59, , 2F
的用法
10/13 06:59, 2F

10/13 09:21, , 3F
1. 先初始A值 以免讀到錯誤的值
10/13 09:21, 3F

10/13 09:23, , 4F
2. 先去了解DPTR是什麼吧 簡單而言 先以讀到的A值為index
10/13 09:23, 4F

10/13 09:25, , 5F
然後對應到XSQR_TABLE裡的值 再取出存到A
10/13 09:25, 5F

10/13 09:26, , 6F
3. 執行MOVC A,@A+DPTR這行時 A值就變了
10/13 09:26, 6F
了解 謝謝^^ 感覺蠻抽象的 ※ 編輯: j5307 來自: 111.254.127.114 (10/15 15:04)
文章代碼(AID): #1EbR4m3o (ASM)
文章代碼(AID): #1EbR4m3o (ASM)