"mov eax, [num]" 和 "mov eax, num" 之间的区别
Difference between "mov eax, [num]" and "mov eax, num"
我是初学者,正在编写汇编程序以使用以下代码打印从 1 到 9 的数字:
section .text
global _start
_start:
mov ecx,10
mov eax, '1'
l1:
mov [num], eax
mov eax, 4
mov ebx, 1
push ecx
mov ecx, num
mov edx, 1
int 0x80
mov eax, [num]
sub eax, '0'
inc eax
add eax, '0'
pop ecx
loop l1
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .bss
num resb 1
这里我们有以下三个语句:
- mov [数量], eax
- mov ecx, num
- mov eax, [num]
我想知道为什么我们应该使用 mov ecx,num
而不是 mov ecx,[num]
如果你熟悉C/C++,这里有一个解释。
mov ecx, num
等同于:
int num;
ecx = & num;
而 mov ecx, [num]
等同于:
int num;
ecx = num;
这里,mov ecx, num
行的原因是因为您正在调用系统函数int 0x80
,它要求ecx
包含您号码的地址。所以应该是这样的。
我是初学者,正在编写汇编程序以使用以下代码打印从 1 到 9 的数字:
section .text
global _start
_start:
mov ecx,10
mov eax, '1'
l1:
mov [num], eax
mov eax, 4
mov ebx, 1
push ecx
mov ecx, num
mov edx, 1
int 0x80
mov eax, [num]
sub eax, '0'
inc eax
add eax, '0'
pop ecx
loop l1
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .bss
num resb 1
这里我们有以下三个语句:
- mov [数量], eax
- mov ecx, num
- mov eax, [num]
我想知道为什么我们应该使用 mov ecx,num
而不是 mov ecx,[num]
如果你熟悉C/C++,这里有一个解释。
mov ecx, num
等同于:
int num;
ecx = & num;
而 mov ecx, [num]
等同于:
int num;
ecx = num;
这里,mov ecx, num
行的原因是因为您正在调用系统函数int 0x80
,它要求ecx
包含您号码的地址。所以应该是这样的。