[問題] 關於組語與8086訓練機的問題
我們現在正在修微處理機的課程
目前運用 8086訓練機 來做實驗
我們的實驗有一個步驟是要讓使用者
在8086訓練機上 隨便按1~9這幾個數子
然後訓練機就會倒數計時 歸0的時候8086訓練機會關掉
例如: 輸入6
訓練機上的七段顯示器 6->5->4->3->2->1->0
訓練機關閉
現在我們卡在程式碼的問題
先附上程式碼
DATA79EQU0FFE8H
CNTR79EQU0FFEAH
FNDEQU3FF0H
CODESEGMENT
ASSUMECS:CODE, DS:CODE
ORG0
START:MOVSP,2000H
MOVAX,CS
MOVDS,AX
MAIN:MOVDX,CNTR79
MOVAL,0
OUTDX,AL
MOVAL,39H
OUTDX,AL
LOOP_MAIN:MOVDX,CNTR79
LOOP1:INAL,DX
TESTAL,7
JZLOOP1
MOVDX,DATA79
INAL,DX
CALLOUT_FND
JMPLOOP_MAIN
OUT_FND:
MOVBX,OFFSET FONT
MOVDX,FND
XLAT
OUTDX,AL
J1:MOVBL,16
MOVSI,OFFSET FONT
J2:MOVAL,[SI]
OUTDX,AL
MOVCX,0A000H
LOOP$
INCSI
DECBL
JNZJ2
JMPJ19
FONTDB10010000B;9
DB10000000B;8
DB11011000B;7
DB10000010B;6
DB10010010B;5
DB10011001B;4
DB10110000B;3
DB10100100B;2
DB11111001B;1
DB11000000B;0
J19:
CODEENDS
ENDSTART
問題一
J1:MOVBL,16
這行他的16所代表的意思是把16複製到BL
這是我們從其他範例抓下來的
範例上市要從0跑到15
可是現在我們是希望
16那個數字
是任我們決定
比如說我們輸入6
他就可以變成 MOV BL,7 (因為有0所以+1)
但是我們不知道要怎麼轉換使用者輸入的變數AL
INAL,DX
AL要怎麼轉換成例如16這種數字呢???
問題二
MOVSI,OFFSET FONT
這行是把FONT傳給SI
可是SI永遠都是從最上面的往下跑
每次跑完才往下加1
INCSI
我們有沒有辦法讓他的SI可以一開始就讓我們指向
我們想指向的排樹
例如:我們輸入5 希望他一開始就指向
DB10010010B;5
再往下跑
還有請問電腦上有沒有可以模擬8086訓練機的程式???
謝謝大家看完><
--
BLOOOOOOOOOOOOG是啥?
我也來一個!
http://blog.pixnet.net/9793
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.139.168.133
推
06/28 00:47, , 1F
06/28 00:47, 1F
→
06/28 00:48, , 2F
06/28 00:48, 2F
推
06/28 09:05, , 3F
06/28 09:05, 3F
→
06/28 09:06, , 4F
06/28 09:06, 4F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章