我无法在 MASM 中使用宏打开文件

问题描述

我在包含文件和使用宏时遇到问题。我需要打开一个文本文件,为此我在一个单独的文件中创建了一个宏。问题是当我使用宏尝试打开文件时,系统无法打开它并转到错误标记。但是,如果我将宏代码放在 main 函数中,它就可以正常工作。我究竟做错了什么?谢谢。 我在 Ubuntu 上使用 Dosbox。

ma​​in.asm

include CAD.ASM
include ARC.ASM

spila segment stack
    DB 32 DUP ('stack___')
spila ends

sdatos segment
    RUTA DB 'test.xml',00H
    ERR1 DB 'error: no se pudo abrir el archivo','$'
    ERR2 DB 'error: no se pudo cerrar el archivo','$'
    HAND DW ?
sdatos ends

scodigo segment 'CODE'
    
    ASSUME SS:spila,DS:sdatos,CS:scodigo         
    
    main PROC FAR 
        
        PUSH DS
        MOV  AX,0
        PUSH AX
        MOV  AX,sdatos
        MOV  DS,AX                                 

        MOV AH,3DH
        MOV AL,02H
        LEA DX,RUTA
        INT 21H
        JC  msjError1
        MOV HAND,AX

        MOV AH,3EH
        MOV BX,HAND
        INT 21H
        JC  msjError2
        JMP salir

        ;inicio:
        ;    abrirArchivo RUTA,HAND ; Doesn't work
        ;    cerrarArchivo HAND      ; Doesn't work
        msjError1:
            imprimirTexto ERR1
            JMP salir
        msjError2:
            imprimirTexto ERR2
            JMP salir
        salir:

        RET
    main endp
    
scodigo ends
end main

cad.asm

imprimirTexto MACRO string
    MOV AH,09H
    LEA DX,string
    INT 21H
ENDM

arc.asm

abrirArchivo MACRO buffer,handler
    MOV AH,3DH
    MOV AL,02H
    LEA DX,buffer
    INT 21H
    JC  msjError1
    MOV handler,AX
ENDM

cerrarArchivo MACRO handler
    MOV AH,3EH
    MOV BX,handler
    INT 21H
    JC  msjError2
ENDM

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...