NASM 中临时变量中值的存储方式

Way of storage of values in temporary variables in NASM

我正在使用一个名为 "buff" 的变量,它在 .bss 部分保留 2 个字节。 然后接受用户的输入并将其存储在 "buff".

用户输入“1”然后按下"Enter"。因此,31H 和“0D”(CARRIAGE RETURN) 进入此变量。但是这个序列如何出现在"buff".

命名的内存位置

是31 0D还是0D 31?

当我写的时候:mov al, byte[buff] 那么 al 里面有什么? 0DH 或 31H

此外,如果我写:mov rsi,[buff] 那么rsi会指向“0D”还是“31”?

我正在听取用户的意见:

    mov rax, 0
    mov rdi, 0
    mov rsi, buff
    mov rdx, 2
    syscall

linux 读取系统调用将字符按照读取顺序存储在缓冲区中。读取的第一个字符存储在 buffer[0] 中,后续字符存储在连续递增的地址中。

因此,mov al, byte[buff] 将加载读取的第一个字符,在您的示例中为 31h。