kvs/jumps/сложный_тест0.квс
2025-11-08 20:42:59 +03:00

54 lines
2.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; сложный тест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