2

我想用 16 位程序集(winasm IDE 和 masm)打印简单的hello world ,但在显示“hello world”未知字符之前。这是代码:

.MODEL small
.STACK 100h
.data
message db "Hello, world!$"
.code
_start:
    mov ah,9
    lea dx,message ; addr of buffer
    int 21h
    mov ah,1
    int 21h
END _start
4

2 回答 2

3

我不太确定 MASM 语法,但您必须使用以下内容设置 DS 寄存器:

    mov  ax, @data  ; if the .data labels points to your data segment
    mov  ds, ax
; then your code
    mov  ah, 9 ..........
于 2013-02-06T11:13:16.383 回答
0

在执行任何代码之前,您必须将 CS 移动到 DS 中。

.code
start:
    push cs ; <-- important!
    pop ds ; <-- important!
    ; -- your codes here --
    mov eax, 9h
    ...
    mov ax, 4C00h
    int 21h
end start
于 2014-04-08T23:35:14.473 回答