用堆栈会反过来输出的~~,每次sp都减2,所以w在最后,帮你改成es了其次你的函数没有保护需要改动的数据。
show_str: ;dh,dl显示字符串行列,cl字符串颜色属性,
push si
push di
push ax
push bx
push dx
mov al,0A0h
inc dh
dec dl
mul dh
add dl,dl
mov dh,0
add ax,dx
mov bx,ax
mov ax,0b800h
mov es,ax
mov di,0
mov si,0
L:push cx
mov cl,ds:[si]
mov ch,0
jcxz ok
mov es:[bx+di],cl
pop cx
inc di
mov es:[bx+di],cl
inc si
inc di
jmp short L
ok:
pop cx
pop dx
pop bx
pop ax
pop di
pop si
ret
用 WIN7,显示不出来。