我正在尝试开发汇编代码,允许我加载和执行(通过用户的输入)2个其他Assembly .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位。
答案 0 :(得分:1)
使用lea描述变量地址的方式是lea R16, [VARIABLE]
,因此在您的代码中,您应该使用:
LEA DX, [PROGNAME1]
我无法有效地测试这个,因为我只有64位版本的Windows,它不会按原样运行此代码