作者matthew531 (冲啊!各方面都要加油!)
看板ASM
标题[问题] 关於组语与8086训练机的问题
时间Wed Jun 27 19:45:29 2007
我们现在正在修微处理机的课程
目前运用 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
1F:推 final01:问题二MOV SI,OFFSET FONT+5这样合语法吗? 06/28 00:47
2F:→ final01:用x86学微处理机~有学校教这喔!good 06/28 00:48
3F:推 matthew531:感谢楼上回答 不知道可不可以用~~ 不过 06/28 09:05
4F:→ matthew531:请问5要怎麽用我们输入的数字代替呀 囧 AL怎麽转><??? 06/28 09:06