首页 > 解决方案 > 比较输入到在 x86_64 Mac 程序集 nasm 中不起作用的字符

问题描述

在具有处理器架构 x86_64 的 mac 上的 nasm 汇编中,我正在努力将输入与字符串或字符进行比较。将输入(stdin)与字符进行比较时,它应该是不正确的。我是组装新手。

这是我的代码。

global start

section .bss
    input resb 10

section .text
    start:
        ;getting the input
        mov rax, 0x2000003      ;meaning read
        mov rdi, 0
        mov rsi, input
        mov rdx, 10
        syscall ;special

        ;here is where I do the comparing
        mov rax, r
        mov rbx, input
        cmp rax, rbx
        je right        
        
        ;jumping to the return function
        jmp ret

    right:
        mov rax, 0x2000004       ;meaning write
        mov rdi, 1
        mov rsi, right_way
        mov rdx, right_len
        syscall ;special

    ret:
        mov rax, 0x2000001       ;return 0
        xor rdi, rdi         ;which means to make rdi = 0 could be replaced with mov rdi, 0 but xor is faster
        syscall

section .data

    right_way: db "You are correct!", 10, 0
    right_len: equ $-right_way

    r: db "r", 10

在“je right”行,它应该跳转到正确的函数,但它没有。我需要将输入转换为其他内容吗?帮助将不胜感激。谢谢!

标签: macosassemblyx86-64nasm

解决方案


推荐阅读