|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有两个代码。第一个是小甲鱼老师写的。第二个代码是我自己写的。
两个代码执行结果不一样。我找了一下,不知道为什么不一样,
要求:
在DOS下显示三行:'welcome to masm!'
小甲鱼老师的代码。DOS下正确显示,窗口缩小化以后还算可以正常显示,
而我的代码 DOS全屏可以正确显示,但是窗口缩小化后就没有了字母,找不出来那里有问题
先看小甲鱼老师的代码,,,assume cs:code,ds:data,ss:stack
data segment
db 'welcome to masm!'
db 02h,24h,71h
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,10h
xor bx,bx
mov ax,0b872h
mov cx,3
s3: push cx
push ax
push bx
mov es,ax
mov si,0
mov di,0
mov cx,10h
s1: mov al,ds:[si]
mov es:[di],al
inc si
add di,2
loop s1
mov di,1
pop bx
mov al,ds:10h[bx]
inc bx
mov cx,10h
s2: mov es:[di],al
add di,2
loop s2
pop ax
add ax,0ah
pop cx
loop s3
mov ax,4c00h
int 21h
code ends
end start
接下来是我的代码。思路一样,就是精简了一个循环,
assume cs:a,ds:b,ss:zhan
b segment
db 'welcome to masm!'
db 02h,24h,71h
b ends
zhan segment
dw 16 dup (0)
zhan ends
a segment
rukou:
mov ax,b
mov ds,ax
mov ax,zhan
mov ss,ax
mov sp,32
mov bx,0
mov di,0
mov si,0
mov ax,0b872H
mov cx,3
mov es,ax
s: push bx
push di
push si
push cx
mov ah,[si+16]
mov cx,16
s1: mov al,[bx]
mov es:[di],ax
add di,2
inc bx
loop s1
pop cx
pop si
inc si
pop di
add di,0a0h
pop bx
loop s
mov ax,4e00h
int 21h
a ends
end rukou
希望大神能帮我看看原因!
错在结尾处:mov ax,4e00h
程序没有正常退出
|
-
|