問問8051的問題

生活體驗,心情故事,文化休閒,吃喝玩樂等話題分享。

問問8051的問題

文章smb 發表於 週三 2月 05, 2003 1:13 am

  這個…小弟因為專題的需要,所以得將8051的程式翻成EM78的,現在遇到一些瓶頸,so來這裡討救兵了,不知道有沒有人能幫我一下,感激不盡囉∼。
SHOW_BG:
  MOV DPTR,#PAGE1
  ↓↓↓↓忽略↓↓↓↓
  MOV R2,#16
SWLOP2:
  XRL A,A;清除A內容
  MOVC A,@A+DPTR
  CALL DATA_W;輸出副程式
  INC DPTR
  DJNZ R2,SWLOP2
  JMP SHOW_BG
  ↓↓↓↓忽略↓↓↓↓
PAGE1:
  DB 000h,001h,002h,003h,004h,005h…………
  DB 010h,011h,012h,013h,014h,015h…………
我知道這是索引定址,不過那個"#PAGE1"跟,"00h,001h……"這兩種用法好奇怪,沒見過書上這麼用過,請問這段執行起來是陸續將000h、0001…∼015h等16個數字丟進A嗎?還是……?
新頭像,新氣象
頭像
smb
SR325
SR325
 
文章: 1237
註冊時間: 週三 3月 21, 2001 3:15 pm
來自: 高雄市

文章RogerShih 發表於 週三 2月 05, 2003 1:45 am

應該是把 A 的內容加上 DPTR 所指位址的內容丟進 A, 交給 DATA_W 輸出吧.

# 應該是像 x86 組語的 offset 虛擬指令吧 :aa:
頭像
RogerShih
論壇遊俠
論壇遊俠
 
文章: 5773
註冊時間: 週一 12月 04, 2000 8:59 pm
來自: 中華民國的豬窩

文章smb 發表於 週三 2月 05, 2003 2:23 am

  嗯,Roger兄您說的我是知道的,但A的內容已經用XRL A,A清除過了,所以實際上效果應該只有輸出DPTR,先謝謝您的回答 :)
  大半夜的,腦筋也不太清楚,呵呵,我怕我問的很莫名其妙,希望大家海涵。
  這行"MOV DPTR,#PAGE1 ",我不曉得這行究竟丟了什麼東西到DPTR﹙資料指標暫存器﹚裡,#是代表常數。而"DB 000h,001h……",我不曉得可以用逗點連接一堆常數。所以我不曉得究竟是怎麼將Page那一堆數字丟到A…,總之,我暈了 :aa: ,搞不清楚了。
新頭像,新氣象
頭像
smb
SR325
SR325
 
文章: 1237
註冊時間: 週三 3月 21, 2001 3:15 pm
來自: 高雄市

文章RogerShih 發表於 週三 2月 05, 2003 2:28 am

很簡單, MOV DPTR,#PAGE1 , 是把 PAGE1 的位址傳給 DPTR, 然後在後面不是有 inc DPTR 嗎?後面的MOVC A,@A+DPTR 這行是把 DPTR 這個位址所指的資料抓出一個 BYTE 給 A.

後面的 DB 是宣告資料存放格式, 後面的就照順序 1Byte, 1Byte 的存放.
頭像
RogerShih
論壇遊俠
論壇遊俠
 
文章: 5773
註冊時間: 週一 12月 04, 2000 8:59 pm
來自: 中華民國的豬窩

文章smb 發表於 週三 2月 05, 2003 11:23 am

哦∼ :o ,原來是醬子的ㄚ…對噢,是"位址",哈哈哈∼我好像懂了 :ho: ,謝謝Roger兄! :oops:
新頭像,新氣象
頭像
smb
SR325
SR325
 
文章: 1237
註冊時間: 週三 3月 21, 2001 3:15 pm
來自: 高雄市


回到 生活休閒哈拉討論版

誰在線上

正在瀏覽這個版面的使用者:Google [Bot] 和 132 位訪客