nasm中添加两个数字

时间:2018-07-06 05:32:58

标签: linux assembly nasm x86-64

下面给出的程序在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

0 个答案:

没有答案