我需要编写一个字节数组,但我没有得到它,只编写了[matrix + 0]和[matrix + 1] (我的意思是,EAX应该等于0301070F),我做错了什么?
这是我的密码:
%include "asm_io.inc"
segment .data
matrix times 4 db 0
segment .bss
segment .text
global asm_main
asm_main:
enter 0,0
pusha
mov eax, 0
mov dword [matrix + 3], 15
mov dword [matrix], 3
mov dword [matrix + 1], 1
mov dword [matrix + 2], 7
mov ah, [matrix]
mov al, [matrix + 1]
rol eax, 16
mov ah, [matrix + 2]
mov al, [matrix + 3]
dump_regs 1
popa
mov eax, 0
leave
ret这是dump_regs 1的输出
Register Dump # 1
EAX = 03010000 EBX = B774FFF4 ECX = BFF7C924 EDX = BFF7C8B4
ESI = 00000000 EDI = 00000000 EBP = BFF7C868 ESP = BFF7C848
EIP = 080484D8 FLAGS = 0282 SF 调用者是一个简单的C程序:
int main() {
int ret_status;
ret_status = asm_main();
return ret_status;
}编辑:我在这里发现了一些错误,如果我执行这段代码,一切都在工作:
mov dword [matrix], 3
mov dword [matrix + 1], 1
mov dword [matrix + 2], 7
mov dword [matrix + 3], 15但是如果我执行这个,就不起作用了:
mov dword [matrix + 3], 15
mov dword [matrix], 3
mov dword [matrix + 1], 1
mov dword [matrix + 2], 7为什么?
发布于 2014-10-19 22:18:44
已经有一段时间了,但不应该
mov dword [matrix], 3宁愿像这样
mov byte [matrix], 3为了避免将常量3作为32位值处理?
https://stackoverflow.com/questions/26455773
复制相似问题