36 lines
1.6 KiB
Plaintext
36 lines
1.6 KiB
Plaintext
|
|
;./тесты/остаток_от_деления/остаток_от_деления.elf
|
|||
|
|
;echo $? # должен быть 2
|
|||
|
|
|
|||
|
|
;для вывода чисел в терминал нужно преобразование в строку
|
|||
|
|
;а для этого нужен остаток от деления (но тут надо бы больше случаев отработать)
|
|||
|
|
|
|||
|
|
; ============================================================
|
|||
|
|
; остаток_от_деления.квс - тест операции деления и остатка
|
|||
|
|
; Проверяем: 42 / 10 = 4 остаток 2
|
|||
|
|
; ============================================================
|
|||
|
|
|
|||
|
|
.текст
|
|||
|
|
.глобал _start
|
|||
|
|
|
|||
|
|
_start:
|
|||
|
|
; Подготовка делимого: RDX:RAX = 0:42
|
|||
|
|
переместить_имм раикс, 42 ; делимое = 42
|
|||
|
|
переместить_имм рдикс, 0 ; обнуляем RDX (старшая часть 128-битного делимого)
|
|||
|
|
|
|||
|
|
; Делитель в регистр
|
|||
|
|
переместить_имм рбикс, 10 ; делитель = 10
|
|||
|
|
|
|||
|
|
; Выполняем деление: RDX:RAX / RBX
|
|||
|
|
; После деления: RAX = частное (4), RDX = остаток (2)
|
|||
|
|
разделить рбикс
|
|||
|
|
|
|||
|
|
; Перемещаем остаток в RDI для кода возврата
|
|||
|
|
переместить рдиай, рдикс ; остаток из RDX в RDI
|
|||
|
|
|
|||
|
|
; Системный вызов exit
|
|||
|
|
переместить_имм раикс, 60 ; номер syscall exit = 60
|
|||
|
|
вызов_системы
|
|||
|
|
|
|||
|
|
.данные
|
|||
|
|
тестовая_переменная: .байт 0
|