我正在尝试添加 2 个数字,但我没有得到该程序的输出。请帮忙。
section .text
global _start
_start:
mov eax, 20
mov ebx, 30
add eax, ebx
mov ecx, eax
mov eax, 4
mov ebx, 1
int 80h
mov eax, 1
mov ebx, 0
int 80h
如前所述,您必须将数字转换为字符串,然后输出此字符串:
section .text
global _start
_start:
mov eax, 20
mov ebx, 30
add eax, ebx
mov edi, buffer
mov ecx, 10
call _NumToStr
xor eax, eax
stosb ; null terminator
mov eax, 4
mov ebx, 1
mov ecx, buffer
int 80h
mov eax, 1
mov ebx, 0
int 80h
buffer rb 64 ; I am not sure how this is in NASM simply reserve 64 bytes as buffer.
; eax - number
; ecx - radix
; edi - buffer
_NumToStr:
test eax,eax
jns _NumToStrU
neg eax
mov byte [edi],"-"
inc edi
_NumToStrU
cmp eax,ecx
jb .lessA
xor edx,edx
div ecx
push edx
call _NumToStrU
pop eax
.lessA:
cmp al, 10
sbb al, 69h
das
stosb
ret