我想知道使用 MOV 指令将字符串复制到寄存器中是否会导致字符串以相反的顺序存储。我了解到,当 MASM 将字符串存储到定义为单词或更高(dw 和更大尺寸)的变量中时,字符串以相反的顺序存储。当我将字符串复制到寄存器时会发生同样的事情吗?
基于这个问题(关于 SCAS 指令以及关于在 MASM 32 中为变量分配字符串和字符)我假设如下:
str dd "abc"导致 MASM 将字符串存储为“cba”,这意味着“c”位于最低的内存地址中。str db "abc"MASM 时,将其str视为字符数组。尝试将数组索引与 的内存地址匹配str,MASM 将在 的最低内存地址处存储“a” str。当我一个字节数组传递arLetters与字符“a”,“b”和“c”来的双字变量strLetters使用MOVSD,相信的字母被复制到strLetters在反向,即作为“CBA”存储。当我使用mov eax, "abc"时,字母是否也以相反的顺序存储?
下面的代码将在退出之前设置零标志。
.data?
strLetters dd ?,0
.data
arLetters db "abcd"
.code
start: …Run Code Online (Sandbox Code Playgroud)