在程序集中从 linux 终端获取 args[1]

Getting args[1] from linux terminal in Assembly

我正在编写一个程序,该程序可以获得一个包含 2 个字符(例如“-c”)和一个文件名或仅包含文件名的标志。我正在尝试解析标志并检查它是否正确,但我在 mov ebx, BYTE [ebx].

行收到 mismatch in operand sizes 错误

代码:

_start:
    push ebp 
    mov ebp, esp
    mov ebx, 0
    add ebx, [ebp+8]
    mov ebx, BYTE [ebx]
    cmp ebx, '-c' ; -c  given
    je print_char_num
    
    jmp print_file_content ; -c not given

如何正确解析终端的第一个参数? 谢谢!

好的,我能够修复它,这是 tp get argv[1]:

当前的方式
_start:
    push ebp 
    mov ebp, esp
    mov ebx, 0
    mov ebx, [ebp+12] ; argv[1] - the -c flag if given
    movzx ebx, word [ebx]
    cmp ebx, '-c' ; - is  given
    je print_char_num
    
    jmp print_file_content ; -c not given

我将 word 移动到 ebx,因为我想从 argv[1]('-c' 标志)中获取前 2 个字符