Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Примеры отчетов / ASM. Лаб. 3.docx
Скачиваний:
62
Добавлен:
01.10.2019
Размер:
35.51 Кб
Скачать

; Файл nasm

extern printf

extern scanf

section .data

msg1: db "Enter A: ", 0

msg2: db "Enter B: ", 0

scanf_msg: db "%d", 0

endl: db 0xA, 0x0

number1: dq 0

number2: dq 0

result: db "Result: %d", 0

section .text

global main

main:

push rbp

; Вывод приглашения к вводу

mov rdi, msg1

mov rsi, 0

mov rax, 0

call printf

; Ввод числа

mov rdi, scanf_msg

mov rsi, number1

mov rax, 0

call scanf

; Вывод приглашения к вводу

mov rdi, msg2

mov rsi, 0

mov rax, 0

call printf

; Ввод числа

mov rdi, scanf_msg

mov rsi, number2

mov rax, 0

call scanf

; Обработка

call LabSi ; RAX modified

; Вывод результата

mov rdi, result

mov rsi, rax

mov rax, 0

call printf

; Вывод конца строки

mov rdi, endl

mov rsi, 0

mov rax, 0

call printf

; Выход из программы

pop rbp

mov rax, 0

ret

LabSi:

push rbx

push rdx

mov rax, [number1]

cmp rax, [number2]

jl Si_SmallBig

je Si_Equal

mov rax, [number2]

mov rbx, [number1]

add rax, 2

cdq ; <edx:eax>

idiv rbx

jmp Si_Branch

Si_SmallBig:

mov rax, [number2]

mov rbx, 8

cdq ; <edx:eax>

idiv rbx

add rax, 4

jmp Si_Branch

Si_Equal:

mov rax, 2

Si_Branch:

pop rdx

pop rbx

ret

Ж. Выводы

Тот факт, что результаты, выполненные на TASM, достаточно совпадают с результатами, выполненными на NASM, свидетельствует о том, что программа составлена корректно.

Соседние файлы в папке Примеры отчетов