装配加载和执行问题

时间:2012-04-07 17:29:11

标签: assembly x86 nasm

我正在尝试开发汇编代码,允许我加载和执行(通过用户的输入)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位。

1 个答案:

答案 0 :(得分:1)

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

LEA DX, [PROGNAME1]

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