作者yeeddt (" Mr.ㄨㄞ ")
看板Programming
標題[問題] 8051的一小段程式
時間Fri Nov 21 00:17:20 2008
最近在研究好幾年前摸過的8051,找到了一個題目,
但是翻著書上指令集一個個對應,還是很難理解。
不曉得是否能幫幫忙呢?
不需要解出答案,大概解釋一下就好了。
程式如下
目前 function PMC2 ( 6Ch ) command only support A0-A7,若我想要增加
3 commands (R0=)10h, 11h, 12h, 該如何修改程式?
;---------------------------------------------------------------;
; PMC2 COMMAND ;
;---------------------------------------------------------------;
; Input : (R0) command ;
;---------------------------------------------------------------;
_PMC2_C:
MOV A,R0
ANL A,#F8h
CJNE A,#0A0h,_EXIT_PMC2 ;;取得6CH 埠 EC Command 分支
JMP _PMC2_CC ;;跳至_PMC2_CC
_EXIT_PMC2:
JMP EXIT_PMC2
_PMC2_CC:
MOV DPTR,
#_6C_AxCMD_TBL
ANL REG0,#07h
MOV A,R0
ADD A,R0
ADD A,R0
JNC _6C_Ax_DONT_NEED_ADJ
INC DPH
_6C_Ax_DONT_NEED_ADJ:
JMP @A+DPTR
;;****************************************************************************
_6C_AxCMD_TBL:
LJMP _6C_A0 ;;取得系統處理器溫度'C值
LJMP _6C_A1 ;;取得環境溫度'C值
LJMP _6C_A2 ;;設定資料指標 Low Byte Address INDEX
LJMP _6C_A3 ;;設定資料指標 High Byte Address INDEX
LJMP _6C_A4 ;;取得Address INDEX資料指標指向資料值
LJMP _6C_A5 ;;變更Address INDEX資料指標指向資料值
LJMP _6C_A6 ;;驗證Address INDEX Low Byte (Verify A2H Command)
LJMP _6C_A7 ;;驗證Address INDEX High Byte (Verify A3H Command)
其中的0A0h是不是有什麼特殊意義呢?
還有DPH是不是一個8位元暫存器?
希望能幫忙解說,感激不盡!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.167.59.163
※ 編輯: yeeddt 來自: 218.167.59.163 (11/21 00:19)
→ ksmrt0123:0A0h 那行跟前一行是檢查 command (R0) 219.68.71.218 11/21 02:08
→ ksmrt0123:是否落在 A0 - A7 的範圍內 219.68.71.218 11/21 02:09
→ ksmrt0123:DPH是 8-bit沒錯, 就是DPTR的 high byte 219.68.71.218 11/21 02:10
→ ksmrt0123:要擴充command要做兩件事: 219.68.71.218 11/21 02:12
→ ksmrt0123: (1) 修改 _PMC2_C: 那段讓新增的 219.68.71.218 11/21 02:13
→ ksmrt0123: command可進至_PMC2_CC: 219.68.71.218 11/21 02:14
→ ksmrt0123: (2) 新增 _6C_AxCMD_TBL: 的 table 219.68.71.218 11/21 02:15
推 lisztbach:某間公司的筆試題目.我寫好了.你要買嗎? 61.227.192.61 11/21 07:59
推 plover:我也收到過 XD118.160.174.227 11/21 08:07
→ yeeddt:謝謝解答,這的確是公司題目,我只是研究 211.21.92.45 11/21 13:11