Linux 汇编程序。为什么以相反的顺序打印此数据?
我不熟悉使用汇编语言,我正在做一些实验来学习。我想知道为什么数据是反印的。 我将指出记录和一些其他问题。 我正在64位Intel(i3)和Linux操作系统上组装NASM。提前谢谢Linux 汇编程序。为什么以相反的顺序打印此数据?,linux,assembly,x86,x86-64,nasm,Linux,Assembly,X86,X86 64,Nasm,我不熟悉使用汇编语言,我正在做一些实验来学习。我想知道为什么数据是反印的。 我将指出记录和一些其他问题。 我正在64位Intel(i3)和Linux操作系统上组装NASM。提前谢谢 section .bss aux resb 1 ;At this point I don't know why there is no variation if I modify resb by resw or resd for example section .text global CMAIN CMAIN:
section .bss
aux resb 1 ;At this point I don't know why there is no variation if I modify resb by resw or resd for example
section .text
global CMAIN
CMAIN:
xor eax, eax
mov ah, "h" ; rax = 1101000-00000000
mov al, "i" ;rax = 1101000-01101001
mov [aux], ax
;print
mov rax, 1
mov rdi, 1
mov rsi, aux
mov rdx, 2
syscall
xor rax, rax
ret
结果是:“ih”,相反。再次感谢。x86是little endian,请记住,将字节写入stdout将首先显示最低地址。另外,
resb1
只保留1个字节,但内存保护在页面粒度上起作用,并且您不会使用任何后续“变量”,因为没有任何变量。另外,int 0x80
恰好适用于64位代码而不是syscall
。感谢您的回答和链接。这种情况是否仅在stdout中发生,或者在其他写调用中也会发生?当然,任何读/写系统调用都会发生。ASCII(和utf-8)基本上是字节流,这意味着按地址递增的顺序查看内存。我提到stdout只是因为那是你在做的我明白。系统解释系统看到的第一件事。非常感谢你所做的一切。如果问题重复,我不在乎是否被删除。系统可能会在几个月后自动删除。但如果它获得了任何支持票(因为它是其他人使用与你相同的术语进行搜索的有用路标),那么它将继续存在。