Linux 如何将用户输入与常量1、2(如组装中的开关盒(NASM))进行比较?

Linux 如何将用户输入与常量1、2(如组装中的开关盒(NASM))进行比较?,linux,assembly,x86,nasm,Linux,Assembly,X86,Nasm,在下面的问题中,我看到了如何在用户输入和程序员指定的某些选项之间进行比较。 但就我而言,这是行不通的。 这是我代码的和平 section .data msgTes db 'NEW ELEMENT' msgTes_len equ $-msgTes section .bss opt resb 2 . . . new_element: ; option one is a new element push ebp mov e

在下面的问题中,我看到了如何在用户输入和程序员指定的某些选项之间进行比较。 但就我而言,这是行不通的。 这是我代码的和平

section .data
    msgTes db 'NEW ELEMENT'
    msgTes_len equ $-msgTes

section .bss
    opt resb 2
     .
     .
     .
new_element:     ; option one is a new element
    push ebp
    mov ebp, esp

    mov eax, 4
    mov ebx, 1
    mov ecx, msgTes
    mov edx, msgTes_len
    int 80h

    pop ebp
    ret

read_option:
    push ebp
    mov ebp, esp

    mov eax, 3  ; reading the option
    mov ebx, 0
    mov ecx, opt
    mov edx, 2
    int 80h

    mov ah, [opt] ; which option the user entered?
    sub ah, '0'
    cmp ah, 1
    je new_element

    pop ebp
    ret
菜单上有选项,但与问题无关。
为什么不打印“新元素”消息?

对以
ret
结尾的内容执行
je
通常不是一个好主意。除此之外,打印出您在
opt
上得到的内容,或者使用调试器在
mov-ah、[opt]
上设置断点,这样您就知道您实际上在与什么进行比较。好的,但是如何在je之后返回下一条指令?我使用的是call,但在这种情况下,我无法为程序做出决定……如果要执行
调用
,如果设置了零标志,则可以使用类似
jnz skip/call foo/skip:
的构造。我看不到菜单输入的提示。您如何知道它执行了代码的
read\u选项
部分?进入点在哪里?潜伏者,读取选项被执行!迈克尔是对的!由于新元素中的ret指令,出现分段错误!我必须在新的_元素中设置一条jmp指令,以返回程序的正常流,并为jmp设置标签。。。这就是解决办法!谢谢大家的关注!