解析汇编中的命令行参数

时间:2019-01-12 10:01:39

标签: assembly command-line-arguments dos x86-16

它是16位x86代码。我已经存储了每个命令,例如“ hi”命令

cmd_hi db 'hi', 0

然后我使用输入字符串

    mov di, sp        ; get input
    call get_string
    jcxz loop_start   ; blank line? 

并将其与存储的命令进行比较

mov si, sp
mov di, cmd_hi    ; "hi" command
call strcmp
je .greetme

使用strcmp循环

strcmp:
.loop_start:
    mov al, [si]       ; grab a byte from SI
    cmp al, [di]       ; are SI and DI equal?
    jne .done          ; no, we're done.

    test al, al        ; zero?
    jz .done           ; yes, we're done.

    inc di             ; increment DI
    inc si             ; increment SI
    jmp .loop_start    ; loop!

.done:   
    ret

但是现在我想向函数添加独立的参数,例如2个整数

cmd> hi 1 2

以这种方式解析参数的最佳方法是什么?

1 个答案:

答案 0 :(得分:-1)

通常,对于.com文件(我不确定.exe,但我记得是相同的),在程序要加载到的内存段中有两个命令行参数副本。 .com的加载时间为0x100h,命令行参数应位于代码段的0到0x100h之间。