逐行读取装配中的文件

时间:2014-12-03 16:41:56

标签: assembly file-io x86 dos

如何在8086中逐行阅读? 我想用标记读取名称:

Saleem Atia 79
Fadi Jameel 50
Hamad Mohsen 90
Maen Mohamamd 97
Yezan Safi 87
Sufyan Naim 88
Mohammad Mosa 32
Amera Skafe 65
Mohammad Akr 90

我该怎么做? 我使用这段代码,但它不起作用:

.model small
.stack 100
.data 

    fname1 db "Gr_Sec1.txt",0
    fname2 db "Gr_Sec2.txt",0
    fname3 db "Gr_Sec3.txt",0
    text db 100
         db 0
             db 100 dup(0)
    fhand dw ?

.code
    mov ax,@data
    mov ds,ax

    mov ah,3dh
    mov al,0
    lea dx,fname1
    int 21h
    mov fhand,ax
    mov si,0
L:

    mov ah,3fh
    mov bx,fhand
    mov cx,1
    lea dx,text+si
    int 21h
    cmp ax,0
    JE EXIT
    INC SI
    JMP L

EXIT:

    MOV BYTE PTR text+si,"$"
    MOV AH,3EH
    INT 21H

    mov ah,9
    lea dx,text
    int 21h

    mov ah,4ch
    int 21h
end

1 个答案:

答案 0 :(得分:0)

我在代码中没有发现错误,但是可能无法在同一目录中找到要加载的文件。在OPEN中断调用后,可以使用进位标志检查。如果成功则CF清除,否则出现错误。并且可执行文件需要实模式或v86模式才能执行。对于64位窗口,它需要一个像DOSBOX一样的模拟器。

运行程序后控制台屏幕显示什么,什么都没有?