0

我正在尝试开发汇编代码,允许我加载和执行(通过用户输入)2 个其他汇编 .EXE 程序。我有两个问题:

-我似乎无法将路径名分配给有效的寄存器(或者语法可能不正确)

-我需要能够在第一个程序(可能是其中一个)开始执行后执行另一个程序。

这是我到目前为止所拥有的:

mov ax,cs ; moving code segment to data segment
mov ds,ax

mov ah,1h ; here I read from keyboard
int 21h
mov dl,al

cmp al,'1' ; if 1 jump to LOADRUN1 
JE LOADRUN1 
popf

cmp al,'2' ; if 1 jump to LOADRUN2 
JE LOADRUN2
popf

LOADRUN1:
    MOV AH,4BH
    MOV AL,00
    LEA DX,[PROGNAME1] ; Not sure if it works
    INT 21H


LOADRUN2:
    MOV AH,4BH
    MOV AL,00
    LEA DX,[PROGNAME2] ; Not sure if it works
    INT 21H

; Here I define the bytes containing the pathnames
PROGNAME1 db 'C:\Users\Usuario\NASM\Adding.exe',0 
PROGNAME2 db 'C:\Users\Usuario\NASM\Substracting.exe',0

我只是不知道如何通过在“父”程序中的输入来启动另一个程序,在一个程序已经执行之后。

在此先感谢您的帮助!我很乐意提供任何其他信息。

-我使用的是 NASM 16 位,Windows 7 32 位。

4

1 回答 1

1

您使用 lea 描述变量地址的方式是lea R16, [VARIABLE],因此在您的代码中,您应该使用:

LEA DX, [PROGNAME1]

我无法有效地对此进行测试,因为我只有 64 位版本的 windows,它不会按原样运行此代码

于 2012-04-07T17:53:53.203 回答