0

我正在尝试添加 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
4

1 回答 1

0

如前所述,您必须将数字转换为字符串,然后输出此字符串:

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
于 2013-07-16T07:33:12.297 回答