+ -
当前位置:首页 → 问答吧 → 程序运行后,command自动结束是怎么回事

程序运行后,command自动结束是怎么回事

时间:2011-11-28

来源:互联网

是书上的一道练习题,写一个子程序,用来显示字符串,然后用主程序测试
话说LZ初学汇编,刚写完代码,一看行数就知道多半要杯具,调试之后,LZ不禁感叹,自己真是神机妙算啊

Assembly code
assume cs:code,ds:data

data segment
    db 'abcdefg123',0
    db 8 dup (0)
data ends

code segment
    ;主程序
    ;设置参数,调用子程序show_str
    main:
    mov ax,data
    mov ds,ax
    mov si,0
    mov ss,ax
    mov sp,19
    mov cl,10001111b
    call show_str
    
    mov ax,4c00h
    int 21h

    ;子程序 show_str
    ;功能 显示指定字符串
    ;参数 dh=行号,dl列号,cl前背景色/闪烁/高亮,ds:si字符串首地址
    ;返回 无
    show_str:
    ;寄存器现场保护
    push ax
    push bp
    push es

    ;正文
    mov al,160
    mul dh
    mov bp,ax
    mov al,2
    mul dl
    add bp,ax

    mov ax,0b800H
    mov es,ax
    mov di,0
    mov ch,0
    mov ah,cl
    s:
    mov cl,[si]
    jcxz s1

    mov al,[si]
    mov es:[bp+di],al
    mov es:[bp+di+1],ah

    inc si
    add di,2
    jmp s
    
    ;返回
    s1:
    pop es
    pop bp
    pop ax
    ret

code ends

end main



作者: glouze   发布时间: 2011-11-28

1. call 之前设置下 dx
2. sp 设置为 19 ?dos16 模式下,sp 要对齐到 word 的
3. 这样的程序,在纯 dos 下会有更好、可靠的效果,至少也是全屏模式吧

作者: zara   发布时间: 2011-11-28

引用 1 楼 zara 的回复:

1. call 之前设置下 dx
2. sp 设置为 19 ?dos16 模式下,sp 要对齐到 word 的
3. 这样的程序,在纯 dos 下会有更好、可靠的效果,至少也是全屏模式吧


谢谢,原来sp必须要对齐到word的,这是为什么呢,能不能说一下为什么command会死机,

作者: glouze   发布时间: 2011-11-28