使用NASM在Assembly上接受/显示2位数整数

时间:2016-07-12 00:30:26

标签: linux assembly nasm integer-arithmetic

我目前正在开展一个装配项目。该代码适用于添加1位整数和1位数的和,但当我输入2位整数时,程序将退出或不返回任何输入。 到目前为止,这是我的工作:

SYS_EXIT  equ 1
SYS_READ  equ 3
SYS_WRITE equ 4
STDIN     equ 0
STDOUT    equ 1

segment .data

    msg1 db "Enter the first digit: ",0xA, 0xD
    len1 equ $- msg1

    msg2 db "Please second digit: "  ,0xA, 0xD
    len2 equ $- msg2

    msg3 db "The sum is "
    len3 equ $- msg3

segment .bss

    num1 resb 255
    num2 resb 255
    res  resb 255

section .text

    global _start

_start:
    mov eax, SYS_WRITE
    mov ebx, STDOUT
    mov ecx, msg1
    mov edx, len1
    int 0x80

    mov eax, SYS_READ
    mov ebx, STDIN
    mov ecx, num1
    mov edx, 255
    int 0x80

    mov eax, SYS_WRITE
    mov ebx, STDOUT
    mov ecx, msg2
    mov edx, len2
    int 0x80

    mov eax, SYS_READ
    mov ebx, STDIN
    mov ecx, num2
    mov edx, 255
    int 0x80

    mov eax, SYS_WRITE
    mov ebx, STDOUT
    mov ecx, msg3
    mov edx, len3
    int 0x80

    mov eax, [num1]
    sub eax, '0'
    mov ebx, [num2]
    sub ebx, '0'

    add eax, ebx
    add eax, '0'


    mov [res], eax

    mov eax, SYS_WRITE
    mov ebx, STDOUT
    mov ecx, res
    mov edx, 1
    int 0x80


;move eax, SYS_EXIT
;int 0x80

exit:
    mov eax, SYS_EXIT
    xor ebx, ebx
    int 0x80

这是我的示例输入:

  

请输入第一位数字:5

     

请第二位:2

     

总和是:7

我的问题是:

  

请输入第一位数字:5

     

请第二位:5

     

总和是:

总和返回0.

0 个答案:

没有答案