Другие языки программирования и технологии

Работа в ассемблере nasm

1. Ввести с клавиатуры число и вывести на экран в виде символа *. Пример: ввели 6. Вывод ******
2. Ввести с клавиатуры 2 числа через пробел, вывести их сумму на экран. прервать программу, если ввели другие символы.
Обе задачи в одной программе:

global N173305578

extern printf
extern scanf
extern _putch
extern _getch
extern _exit
import printf msvcrt.dll
import scanf msvcrt.dll
import _putch msvcrt.dll
import _getch msvcrt.dll
import _exit msvcrt.dll

section data use32 class = data
  Prompt1 db "1. Введите число: ", 0
  Format1 db "%u", 0
  Prompt2 db 13, 10, 10, "2. Введите 2 числа через пробел: ", 0
  Result db "Сумма = %d", 13, 10, 10
      db "Для завершения работы нажмите любую клавишу... ", 0
  Format2 db "%d %d", 0

  N resd 1
  A resd 1
  B resd 1

section code use32 class = code
N173305578:
    push Prompt1
    call [printf]
    push N
    push Format1
    call [scanf]
    add esp, 12

    mov ecx, [N]
Loop:
    push ecx
    push '*'
    call [_putch]
    add esp, 4
    pop ecx
    loop Loop

    push Prompt2
    call [printf]
    push B
    push A
    push Format2
    call [scanf]
    add esp, 16
    cmp eax, 2
    jne Quit
    mov eax, [A]
    add eax, [B]
    push eax
    push Result
    call [printf]
    add esp, 8

    call [_getch]
Quit:
    push 0
    call [_exit]

Sun Sun
Sun Sun
51 590
Лучший ответ