我用DEBUG调试时
-EES:010
上面的命令怎么改变不了ES:0的内容啊
-DES:0L1
还是原来的内容;
但是下面的就可以,咋回事呢?
-EDS:010
程序附录:
;计算从BEGINSEG:BEGINOFFSET开始的1024个字节的正数个数,负数个数和零的个数,并打印之
COUNT=1024
BEGINSEG=0f000H
BEGINOFFSET=0
dsegsegment
cnplusdw0ffffH
cnnegdw0ffffH
cnzerodw0ffffH
messplusdb'Thecountofplus:','$'
messnegdb'Thecountofnegative:','$'
messzerodb'Thecountofzero:','$'
dsegends
csegsegment
assumecs:cseg,ds:dseg,es:dseg
start:
movax,dseg
movds,ax
movax,BEGINSEG
moves,ax
movcx,COUNT
movcnplus,0
movcnneg,0
movcnzero,0
movsi,-1
xxx:
incsi
cmpsi,cx
jaeshortprintmess
andes:[si],0ffffH
jzinczero
jsincneg
inccnplus
jmpxxx
inczero:
inccnzero
jmpxxx
incneg:
inccnneg
jmpxxx
printmess:
movdx,offsetmessplus
movah,9
int21H
movax,cnplus
callprintax
callnewline
;
movdx,offsetmessneg
movah,9
int21H
movax,cnneg
callprintax
callnewline
;
movdx,offsetmesszero
movah,9
int21H
movax,cnzero
callprintax
callnewline
;
movax,4c00H
int21H
;将AX中数值以十进制无符号数形式打印输出
;入口参数:AX
;出口参数:无
printaxprocnear
pushax
pushcx
pushsi
pushdx
;
movcx,10
movsi,5
again:
xordx,dx
divcx
adddl,30H
pushdx
decsi
jnzagain
;
movcx,5
movah,2
again2:
popdx
int21H
loopagain2
;
popdx
popsi
popcx
popax
ret
printaxendp
;回车换行
newlineproc
pushax
pushdx
movah,2
movdl,0dH
int21H
movah,2
movdl,0aH
int21H
popdx
popax
ret
newlineendp
csegends
endstart
分 -->
|