kvs/short_jumps/сложный_тест0.квс

54 lines
2.3 KiB
Plaintext
Raw Normal View History

2025-11-08 13:24:11 +03:00
; сложный тест0.квс
; Тест: один переход и один мусорный сегмент
.текст
.глобал _start
_start:
; Инициализация регистра
переместить_имм раикс, 10 ; rax = 10 (не ноль)
; ПЕРВЫЙ ПЕРЕХОД: короткий_переход_если_неоль
; ZF=0 (так как rax=10), значит jnz сработает
; Прыгаем к метке 'вывести_сообщение', пропуская мертвый_код_1
короткий_переход_если_неоль вывести_сообщение
; --- МЕРТВЫЙ КОД 1 ---
; Этот код НЕ должен выполниться
переместить_имм раикс, 1
переместить_имм рдиай, 1
переместить_имм рсиай, msg_dead_1
переместить_имм рдикс, len_msg_dead_1
вызов_системы
; ---------------------
; --- КОД ОШИБКИ (на всякий случай) ---
; Если мы сюда попали, значит переход НЕ сработал (ошибка)
переместить_имм раикс, 1
переместить_имм рдиай, 1
переместить_имм рсиай, msg_fail
переместить_имм рдикс, len_msg_fail
вызов_системы
; --- ВЫВОД ЦЕЛЕВОГО СООБЩЕНИЯ ---
вывести_сообщение:
переместить_имм раикс, 1
переместить_имм рдиай, 1
переместить_имм рсиай, msg_success
переместить_имм рдикс, len_msg_success
вызов_системы
; --- ЗАВЕРШЕНИЕ ---
переместить_имм раикс, 60
переместить_имм рдиай, 0
вызов_системы
.данные
; Перемешиваем строки и константы
msg_success: .строкауль "Успех!\n"
.константа len_msg_success = 13
msg_dead_1: .строкауль "Мертвый код 1!"
.константа len_msg_dead_1 = 14
msg_fail: .строкауль "Ошибка: переход не сработал!"
.константа len_msg_fail = 28