尝试在(MASM)汇编程序中打开文本文件时出错

时间:2016-12-29 21:56:23

标签: assembly masm x86-16

我正在尝试在MASM汇编程序中打开一个文本文件(稍后我想阅读)。必须使用int 21h, AH = 3Dh中断完成此操作。我将0推入AL寄存器(打开文件为"只读")并在DX中推送ASCII文件名。通常,文件句柄应该推送到AX,但事实并非如此。我在AL中返回2(这不是文件句柄,而是因为C = 1而导致的错误),(在Internet上搜索之后)意味着文本文件不存在。有什么东西我不见了吗?该文件确实存在并与我的ASM文件位于同一文件夹中。

start:

sti                             
cld                             

push ds                         
pop es                          

code:

; Opening a file with file = ASCII path
mov ah, 3Dh
mov al, 0
lea dx, [file]
int 21h

; Save AX as our file handle
mov [handle], ax

; Put the handle in BX
mov bx, [handle]

; Close the file
mov ah, 3Eh
int 21h

; Stop the program
mov eax, 4c00h
int 21h

DATASEG

handle dw 0
file db 'abcd.txt', 0

1 个答案:

答案 0 :(得分:0)

在玩了一下之后,我注意到如果我将文件名移到edx而不是dx,我的问题就解决了,我不太明白,因为每个其他来源我发现说文件名应该在dx。问题是,为什么这有效?