|
发表于 2011-9-12 21:41:26
|
显示全部楼层
本帖最后由 ytrfamli 于 2011-9-12 21:49 编辑
1.
mov ax,0200h
使得数据写到内存2000h的位置去了,
ds=0200h时,算出的内存段地址是
200h*10h=2000h.
改为
mov ax,0020h
使得算出的段地址成为
0020h*10h=0200h
才能写到正确位置
2.
mov [bx],bx
一次写入2个byte,但是,每一次回圈bx只增加1,(影响[bx]指向的地址)
也就是说,想要写入的数据是一路盖掉上一次的数据的,即
bx=0000h时,写入[bx],则内存
0200:0 被写入00(低位的bl)
0200:1 被写入00(高位的bh)
接着bx=0001h时,写入[bx],则内存
0200:1 被写入01(低位的bl)
0200:2 被写入00(高位的bh)
改成
mov [bx],bl
就不会如此,一次只写入1个byte
(不过,此处不作修改结执行果依然会是正确的,
因为刚好想要写进的数据都是在低位的bl,
高位的bh被覆盖没有影响)
3.
mov 4c00h
这恩,不算什麽bug,只是少写了ax.
应为mov ax,4c00h才是.
|
|