从c转换为nasm程序集,如何修复所有DWORD PTR [rbp-5]类型的行以使其工作?

时间:2015-07-06 17:19:06

标签: assembly nasm

在从c转换为汇编并修复文件以使其运行时,我对DWORD PTR [rbp-4],0等行的含义感到困惑。我假设它将0移入寄存器,但是哪一个?或者我该怎么说它才能让它运行?

例如,我认为以下应该是

if (choice != 'N' && choice != 'F' && choice != 'X'){
        printf("Invalid Input. Enter N, F, or X\n");

我有"输入无效..." LC0寄存器中的行。 " JE"意味着如果为false,跳转到L3,那么在第一次比较后它会自动跳转吗?

L5:
    mov eax, 0
    call    menu
    ;mov    BYTE PTR [rbp-5], al
    ;cmp    BYTE PTR [rbp-5], 78
    je  L3
    ;cmp    BYTE PTR [rbp-5], 70
    je  L3
    ;cmp    BYTE PTR [rbp-5], 88
    je  L3
    mov edi, LC0
    call    puts
    jmp L2

1 个答案:

答案 0 :(得分:0)

本声明

cmp BYTE PTR [rbp-5], 78

表示位于[rbp-5]的字节值与字节值78进行比较。

如果它是DWORD PTR,则会在两端假设dword大小的值。

此特定操作不涉及寄存器(除了地址的rbp帧寄存器外)。

据我所知,没有LC0注册。它应该是变量吗?