Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %include "io.inc"
- ;Получаем доступ к библиотечным функциям
- CEXTERN scanf
- CEXTERN printf
- section .bss
- num resd 1 ;Переменная для считывания числа
- section .rodata
- f1 db "%u", 0 ;Строка для ввода числа
- f2 db "0x%08X", `\n`, 0 ;Строка для вывода числа
- section .text
- global CMAIN
- CMAIN:
- ;Задаем начало кадра стека
- push ebp
- mov ebp, esp
- ;Выравниваем стек по 16 байт
- and esp, -16
- ;Делаем отступ в стеке, для аргументов функции
- sub esp, 16
- .for:
- ;Считываем число
- mov dword[esp+4], num
- mov dword[esp], f1
- call scanf
- ;Если числа закончились, то идем в метку .endFor
- cmp eax, 1
- jnz .endFor
- ;Выводим число
- mov eax, dword[num]
- mov dword[esp+4], eax
- mov dword[esp], f2
- call printf
- ;Идем в метку .for
- jmp .for
- .endFor:
- ;Удаляем кадр стека
- leave
- xor eax, eax
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement