我想在nasm / macho-64上用汇编程序显示最低有效数字:
%define SYSCALL_WRITE 0x2000004
%define SYSCALL_EXIT 0x2000001
SECTION .data
digit db 0,10
SECTION .text
global _start
_start:
add rax, 48
mov [digit], al
mov rax, SYSCALL_WRITE
mov rdi, 1
mov rsi, digit
mov rdx, 2 ;length (of 48)
syscall
mov rax, SYSCALL_EXIT
mov rdi, 0
syscall
这里使用al,因为它包含rax
的最低位字节。我从类似的问题中发现,64位汇编没有[]
语法。然后我尝试使用
lea digit, al
和
lea [digit], al
但两者都给了我“操作码和操作的无效组合”错误。我还尝试了mov rax
而不是add rax
。我应该怎么做才能将rax
的最低有效位加载/移动到我的digit
变量中?
谢谢。