cmd下运行exe和用debug载入exe后,两种方式下,显示的结果不一样,求指教,求帮助
代码如下:assume ds:data,cs:codedata segment
db 'welcome to masm!'
db 02h,24h,71h
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0
mov bx,0
mov di,0
mov cx,16
s1:mov al,
mov es:720h,al
mov ah,10h
mov es:721h,ah
inc bx
add di,2
loop s1
mov ax,4c00h
int 21h
code ends
end start 这是王爽老师那个第九个实验,显示welcome to masm!这个字符串那个实验,我本来是打算用3次循环,每一次循环处理一行字符串,这是处理第一行的时候的情况,我写好这个后,编译连接,然后用cmd运行,可以显示出 welcome to masm!,后来我用debug载入一步一步运行的时候,就不对,首先数据传送我就发现不对,然后我直接跳到结果,结果是字符串没显示完整。
然后后来我想了好久,没想到头绪,我就把全部代码都写完,把第二行和第三行也处理了,但是这次,不管是cmd还是debug最后结果都不显示字符串了,最后代码如下:
assume ds:data,cs:code
data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends
code segment
start:mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0
mov bx,0
mov di,0
mov cx,16
s1:mov al,
mov es:720h,al
mov ah,10h
mov es:721h,ah
inc bx
add di,2
loop s1
mov bx,0
mov di,0
add si,1
mov cx,16
s2:mov al,
mov es:7c0h,al
mov ah,10h
mov es:7c1h,ah
inc bx
add si,2
loop s2
mov bx,0
mov di,0
add si,1
mov cx,16
s3:mov al,
mov es:860h,al
mov ah,10h
mov es:861h,ah
inc bx
add si,2
loop s3
mov ax,4c00h
int 21h
code ends
end start 这是因为8086的中断机制,代码没错,但单步运行的时候,就会有不同的结果 傲天 发表于 2015-2-3 10:02
这是因为8086的中断机制,代码没错,但单步运行的时候,就会有不同的结果
那2L,那个完整代码,为什么cmd也显示不了正确结果了呢 如果是代码的话,建议使用代码格式发,论坛上面有说明,这样方便别人给你解答 xx6625303 发表于 2015-2-3 14:07
那2L,那个完整代码,为什么cmd也显示不了正确结果了呢
b800是显存,随着你输入,换行,显存中的数据是在不停变化的,你可以先CLS(清屏),再运行下看看,单步运行的话,经常会看到你的数据会变成A.X.=.B.8.0.0这类数据,正是你屏幕上显示的数据。 xx6625303 发表于 2015-2-3 14:07
那2L,那个完整代码,为什么cmd也显示不了正确结果了呢
我把你的代码试了下,可以显示,但只显示1行绿色的welcome to masm!,下面两个循环的代码不应该是add si,1因为你的SI内已经有数据了,然后再算一下你的偏移地址是否正确,你要取的是02,24,71,,代码没错,你再仔细算下数据就行了 xx6625303 发表于 2015-2-3 14:07
那2L,那个完整代码,为什么cmd也显示不了正确结果了呢
试了半天,你add si,2错了,应该是di,si是属性,从第二段代码就错了,改成di就正确显示了, xx6625303 发表于 2015-2-3 14:07
那2L,那个完整代码,为什么cmd也显示不了正确结果了呢
s1:mov al,
mov es:720h,al
mov ah,10h
mov es:721h,ah
inc bx
add di,2
loop s1
mov bx,0
mov di,0
add si,1
mov cx,16
s2:mov al,
mov es:7c0h,al
mov ah,10h
mov es:7c1h,ah
inc bx
add si,2
loop s2
上面是你源码的一部分,错误代码给你标出来了,你仔细看下
傲天 发表于 2015-2-4 13:25
s1:mov al,
mov es:720h,al
mov ah,10h
谢谢,后来我也看到了,真的是太粗心
页:
[1]