下面的汇编代码读取文件有什么问题?

时间:2012-07-14 16:26:22

标签: assembly dos nasm

;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

1 个答案:

答案 0 :(得分:0)

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

buffer: times 255 dup 0

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