【问题标题】:Assembly prints wrong ascii character [duplicate]程序集打印错误的 ascii 字符 [重复]
【发布时间】:2021-04-02 06:34:40
【问题描述】:

我试图创建一个简单的汇编程序来打印二进制代码为 rax 的 ascii 字符。我有以下代码:

section .data
   res db '', 0

global _start
_start:
    mov rbx, 1000001
    mov [res], rbx
    
    mov rax, 1
    mov rdi, 1
    mov rsi, res
    mov rdx, 1
    syscall


    mov rax, 60
    xor rdi, rdi
    syscall

当我执行时,它输出'A',这是正确的,因为 1000001 是 ascii A 的二进制代码,但是如果我执行这个:

section .data
   res db '', 0

global _start
_start:
    mov rbx, 1000010
    mov [res], rbx
    
    mov rax, 1
    mov rdi, 1
    mov rsi, res
    mov rdx, 1
    syscall


    mov rax, 60
    xor rdi, rdi
    syscall

它输出'J',但根据我使用的表格1000010应该输出'B'。这对我来说更奇怪的是,如果我使用十进制而不是二进制,我会得到正确的输出。我在做什么啊?

【问题讨论】:

标签: assembly binary ascii nasm


【解决方案1】:

100000110 = F424116, 4116 = 6510 = A ASCII

100001010 = F424A16, 4A16 = 7410 = J ASCII

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多