【发布时间】:2015-11-22 00:05:32
【问题描述】:
例如,EAX 分为 AX 和 AH 和 AL。所以如果我这样做:
push eax
mov eax, [szString] ;; where szString holds the string 'test'
那么 'test' 字符串如何在三个子寄存器中划分呢?例如,AX 持有什么? 有人可以解释一下为什么这是比特吗?例如,字符串“test”有多少位,它是如何分区的?
【问题讨论】:
-
mov eax, szString在使用 NASM 时会将 szString 的地址移动到 EAX 而不是实际字符本身跨度> -
好的。如果我做 mov [eax], szString
-
我以为 lea 移动了地址而 mov 移动了实际值?
-
我想你的意思是
mov eax,[szString]在这种情况下,AL 将有第一个 t,AH 将有 e,AX 将有 et。自从我接触汇编程序以来可能已经有 15 到 18 年了,但无论如何我都记得。 -
使用 NASM
mov eax, szString和lea eax, [szString]做同样的事情。如果您使用mov eax, [szString]移动从指针 szString 开始的 4 字节内容,则字符将以相反的顺序放入 EAX 中。第一个字符将位于 EAX (AL) 的低 8 位,EAX 的高 8 位将包含第 4 个字符
标签: assembly x86 nasm endianness cpu-registers