字符串前的垃圾

Trash before string

我用Tasm。垃圾出现在第一个字符串之前而不是第二个。我将 dollar($) 设置为 string

的末尾
.model tiny

CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG 
org 100h

Begin:
    push offset msgOrig1
    push offset msgOrig2

    call ProcParams

    ret

    ProcParams proc near 
        push bp
        mov bp, sp
        add bp, 2

        mov ah,09h    
        mov dx, [bp]
        int 21h
        mov dx, [bp+2]
        int 21h

        pop bp

        ret 4
    ProcParams endp

    msgOrig1 db 'Hello$'
    msgOrig2 db 'world$'
CSEG ends
end Begin

任何建议

您的偏移量有误,您忘记补偿 return 地址或 push bp。总共是 4 个字节,而不是 2 个。此外,您正在打印反转的字符串,您也不需要添加到 bp。可能的修复:

ProcParams proc near 
    push bp
    mov bp, sp

    mov ah,09h    
    mov dx, [bp+6]
    int 21h
    mov dx, [bp+4]
    int 21h

    pop bp

    ret 4
ProcParams endp

学习使用调试器。