0

私は、(ユーザーの入力によって) 2 つの他のアセンブリ .EXE プログラムを読み込んで実行できるようにするアセンブリ コードを開発しようとしています。私は2つの問題を抱えています:

-パス名を有効なレジスタに割り当てることができないようです (または、構文が正しくない可能性があります)。

-最初のプログラム (どちらかである可能性があります) が実行を開始した後、他のプログラムを実行できるようにする必要があります。

これは私がこれまでに持っているものです:

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 に答える