下面给出的程序在nasm中将两个数字3和4相加。为什么在此代码中,包含3的eax和包含4的ebx被0减去,并且存储在eax中的和的结果被添加为零?,代码在下面给出,而当我尝试不使用这些添加和零行时,它显示了意外的结果。
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov eax, '3'
sub eax, '0'
mov ebx, '4'
sub ebx, '0'
add eax, ebx
add eax, '0'
mov [sum], eax
mov ecx, msg
mov edx, len
mov ebx, 1 ;file descriptor (stdout)
mov eax, 4 ;system call number (sys_write)
int 0x80 ;call kernel
mov ecx, sum
mov edx, 1
mov ebx, 1 ;file descriptor (stdout)
mov eax, 4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax, 1 ;system call number (sys_exit)
int 0x80 ;call kernel
.data
msg db "The sum is:", 0xA,0xD
len equ $ - msg
segment .bss
sum resb 1