11111011100 发表于 2014-4-20 23:17:04

自己写实验十,出现了无法解决的问题

debug发现执行第一条指令后,栈的数据发生了变化.导致调用子程序时出栈错误.不知道怎么回事.源代码如下
------------------------------------------------------------------------
assume cs:code,ds:data,ss:stack
data segment
        db 'Hello world',0
data ends

stack segment stack
        db 8 dup(0)
stack ends

code segment
start:
        mov dh,8
        mov dl,3
        mov cl,2
               
        mov ax,data
        mov ds,ax
        mov ax,stack
        mov ss,ax
       
        call show_str
        mov ax,4C00H
        int 21H
       
show_str:
        push cx
       
        mov ax,0B800H
        mov es,ax
        mov si,0
        mov di,0
        mov bx,0
       
        mov al,160
        mov ah,0
        dec dh
        mul dh
        mov cx,ax
       
        mov al,2
        dec dl
        add ax,cx
        pop cx
        mov si,ax
s:
        push cx
        mov cl,
        mov ch,0
        jcxz ok
        mov byte ptr es:,al
        pop cx
        mov byte ptr es:,cl
        inc bx
        add si,2
        add di,2
        jmp short s

ok:
        ret
code ends

end start

11111011100 发表于 2014-4-21 18:30:06

问题已解决.栈的问题.
页: [1]
查看完整版本: 自己写实验十,出现了无法解决的问题