看板 ASM 關於我們 聯絡資訊
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
ruemann:就說是從P1讀值輸出到P2,另外先把P1寫成FF是8051輸入PORT 10/13 06:59
ruemann:的用法 10/13 06:59
eentut:1. 先初始A值 以免讀到錯誤的值 10/13 09:21
eentut:2. 先去了解DPTR是什麼吧 簡單而言 先以讀到的A值為index 10/13 09:23
eentut:然後對應到XSQR_TABLE裡的值 再取出存到A 10/13 09:25
eentut:3. 執行MOVC A,@A+DPTR這行時 A值就變了 10/13 09:26
了解 謝謝^^ 感覺蠻抽象的 ※ 編輯: j5307 來自: 111.254.127.114 (10/15 15:04)