0
;the code read 4 bytes from file and print it on screen
bits 16

org 100h

jmp start 

filename db 'example.file',0

handle dw 0

buffer db 255

start:

    mov ah,3dh
    mov al,0
    mov dx,filename
    int 0x21
    mov handle,ax

    mov ah,3fh
    mov cx,4
    mov dx,buffer
    mov bx,handle
    int 21h

    mov dx,buffer
    add dx,ax

    mov bx,dx
    mov byte[bx],'$'

    mov dx,buffer
    mov ah,9
    int 21h
    mov ah,4ch
    int 21h
4

1 回答 1

0

您的缓冲区似乎是一个字节。如果您真正想要的是一个 255 字节的数组,那么您应该使用(假设这是针对 NASM):

buffer: times 255 dup 0

此外,如前所述,您应该在 NASM 代码中使用方括号来访问地址指向的值。只是 mov ax,foo 将 foo 的地址放在 ax 中,而不是存储在该地址的值。

于 2012-07-14T17:00:00.723 回答