[問題] 關於組語與8086訓練機的問題

看板ASM (組合語言)作者 (衝啊!各方面都要加油!)時間17年前 (2007/06/27 19:45), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
我們現在正在修微處理機的課程 目前運用 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
問題二MOV SI,OFFSET FONT+5這樣合語法嗎?
06/28 00:47, 1F

06/28 00:48, , 2F
用x86學微處理機~有學校教這喔!good
06/28 00:48, 2F

06/28 09:05, , 3F
感謝樓上回答 不知道可不可以用~~ 不過
06/28 09:05, 3F

06/28 09:06, , 4F
請問5要怎麼用我們輸入的數字代替呀 囧 AL怎麼轉><???
06/28 09:06, 4F
文章代碼(AID): #16WatR16 (ASM)
文章代碼(AID): #16WatR16 (ASM)