程序集打印错误的 ascii 字符
Assembly prints wrong ascii character
我试图创建一个简单的汇编程序来打印二进制代码在 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',但是根据table我用1000010应该输出'B'。让这对我来说更奇怪的是,如果我使用十进制而不是二进制,我会得到正确的输出。我在做什么wong?
100000110 = F424116, 和 4116 = 6510 = A ASCII
100001010 = F424A16, 和 4A16 = 7410 = J ASCII
我试图创建一个简单的汇编程序来打印二进制代码在 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',但是根据table我用1000010应该输出'B'。让这对我来说更奇怪的是,如果我使用十进制而不是二进制,我会得到正确的输出。我在做什么wong?
100000110 = F424116, 和 4116 = 6510 = A ASCII
100001010 = F424A16, 和 4A16 = 7410 = J ASCII