; длин_тест9.квс ; Тест: запутанные переходы, крякмис (для длинных переходов) .текст .глобал _start _start: ; Инициализация регистров переместить_имм раикс, 10 ; rax = 10 переместить_имм рбикс, 5 ; rbx = 5 переместить_имм рсикс, 10 ; rcx = 10 (для проверки ZF в jz) ; ПЕРВЫЙ ПЕРЕХОД: переход_если_не_ноль ; ZF=0 (так как rax=10), значит jnz сработает ; Прыгаем к метке 'проверка_2', пропуская мертвый_код_1 переход_если_не_ноль проверка_2 ; --- МЕРТВЫЙ КОД 1 --- ; Этот код НЕ должен выполниться ; Добавляем "мусор", чтобы точно выйти за пределы короткого перехода переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 2 переместить_имм рдиай, 2 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 3 переместить_имм рдиай, 3 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 4 переместить_имм рдиай, 4 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 5 переместить_имм рдиай, 5 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 6 переместить_имм рдиай, 6 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 7 переместить_имм рдиай, 7 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 8 переместить_имм рдиай, 8 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 9 переместить_имм рдиай, 9 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 10 переместить_имм рдиай, 10 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 11 переместить_имм рдиай, 11 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 12 переместить_имм рдиай, 12 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 13 переместить_имм рдиай, 13 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 14 переместить_имм рдиай, 14 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы переместить_имм раикс, 15 переместить_имм рдиай, 15 переместить_имм рсиай, msg_dead_1 переместить_имм рдикс, len_msg_dead_1 вызов_системы ; --------------------- проверка_2: ; ДОПОЛНИТЕЛЬНЫЙ ПЕРЕХОД 1: "Два шага вперед" - переход через мертвый_код_2 и мертвый_код_3 ; Прыгаем к проверка_4, минуя мертвый_код_2 и мертвый_код_3 переход проверка_4 ; --- МЕРТВЫЙ КОД 2 --- ; Этот код НЕ должен выполниться из-за прыжка выше переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 2 переместить_имм рдиай, 2 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 3 переместить_имм рдиай, 3 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 4 переместить_имм рдиай, 4 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 5 переместить_имм рдиай, 5 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 6 переместить_имм рдиай, 6 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 7 переместить_имм рдиай, 7 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 8 переместить_имм рдиай, 8 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 9 переместить_имм рдиай, 9 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 10 переместить_имм рдиай, 10 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 11 переместить_имм рдиай, 11 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 12 переместить_имм рдиай, 12 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 13 переместить_имм рдиай, 13 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 14 переместить_имм рдиай, 14 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы переместить_имм раикс, 15 переместить_имм рдиай, 15 переместить_имм рсиай, msg_dead_2 переместить_имм рдикс, len_msg_dead_2 вызов_системы ; --------------------- мертвый_код_3: ; ЖИВОЙ КОД 3: Этот код выполнится благодаря прыжку "назад" ; Выведем сообщение, чтобы убедиться, что он выполнился переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_live_from_3 переместить_имм рдикс, len_msg_live_from_3 вызов_системы ; ДОПОЛНИТЕЛЬНЫЙ ПЕРЕХОД 3: "Четыре вперед" - переход через мертвый_код_4, 5, 6, 7 ; Цель слишком далеко для короткого перехода. Используем длинный. ; Прыгаем к проверка_8 переход проверка_8 ; --------------------- проверка_4: ; ЧЕТВЁРТЫЙ ПЕРЕХОД: переход_если_больше ; Сравниваем rax (10) и rbx (5) -> rax > rbx, ZF=0, SF=0, OF=0 сравнить раикс, рбикс ; Условие jg: ZF=0 (истина) И SF=OF (0=0, истина). jg СРАБОТАЕТ. ; Мы хотим прыгнуть МИМО мертвого кода 4, если jg сработает (т.е. если rax > rbx). переход_если_больше мимо_мертвого_кода_4 ; --- МЕРТВЫЙ КОД 4 --- ; Этот код НЕ должен выполниться (так как jg сработал) переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 2 переместить_имм рдиай, 2 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 3 переместить_имм рдиай, 3 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 4 переместить_имм рдиай, 4 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 5 переместить_имм рдиай, 5 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 6 переместить_имм рдиай, 6 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 7 переместить_имм рдиай, 7 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 8 переместить_имм рдиай, 8 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 9 переместить_имм рдиай, 9 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 10 переместить_имм рдиай, 10 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 11 переместить_имм рдиай, 11 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 12 переместить_имм рдиай, 12 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 13 переместить_имм рдиай, 13 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 14 переместить_имм рдиай, 14 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы переместить_имм раикс, 15 переместить_имм рдиай, 15 переместить_имм рсиай, msg_dead_4 переместить_имм рдикс, len_msg_dead_4 вызов_системы ; --------------------- мимо_мертвого_кода_4: ; ДОПОЛНИТЕЛЬНЫЙ ПЕРЕХОД 2: "Один назад" - переход к мертвому_коду_3 (делая его живым) переход мертвый_код_3 ; --- МЕРТВЫЙ КОД 5 --- ; Этот код НЕ должен выполниться переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 2 переместить_имм рдиай, 2 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 3 переместить_имм рдиай, 3 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 4 переместить_имм рдиай, 4 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 5 переместить_имм рдиай, 5 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 6 переместить_имм рдиай, 6 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 7 переместить_имм рдиай, 7 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 8 переместить_имм рдиай, 8 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 9 переместить_имм рдиай, 9 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 10 переместить_имм рдиай, 10 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 11 переместить_имм рдиай, 11 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 12 переместить_имм рдиай, 12 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 13 переместить_имм рдиай, 13 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 14 переместить_имм рдиай, 14 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы переместить_имм раикс, 15 переместить_имм рдиай, 15 переместить_имм рсиай, msg_dead_5 переместить_имм рдикс, len_msg_dead_5 вызов_системы ; --------------------- ; --- МЕРТВЫЙ КОД 6 --- ; Этот код НЕ должен выполниться переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 2 переместить_имм рдиай, 2 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 3 переместить_имм рдиай, 3 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 4 переместить_имм рдиай, 4 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 5 переместить_имм рдиай, 5 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 6 переместить_имм рдиай, 6 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 7 переместить_имм рдиай, 7 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 8 переместить_имм рдиай, 8 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 9 переместить_имм рдиай, 9 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 10 переместить_имм рдиай, 10 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 11 переместить_имм рдиай, 11 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 12 переместить_имм рдиай, 12 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 13 переместить_имм рдиай, 13 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 14 переместить_имм рдиай, 14 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы переместить_имм раикс, 15 переместить_имм рдиай, 15 переместить_имм рсиай, msg_dead_6 переместить_имм рдикс, len_msg_dead_6 вызов_системы ; --------------------- ; --- МЕРТВЫЙ КОД 7 --- ; Этот код НЕ должен выполниться переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 2 переместить_имм рдиай, 2 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 3 переместить_имм рдиай, 3 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 4 переместить_имм рдиай, 4 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 5 переместить_имм рдиай, 5 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 6 переместить_имм рдиай, 6 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 7 переместить_имм рдиай, 7 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 8 переместить_имм рдиай, 8 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 9 переместить_имм рдиай, 9 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 10 переместить_имм рдиай, 10 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 11 переместить_имм рдиай, 11 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 12 переместить_имм рдиай, 12 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 13 переместить_имм рдиай, 13 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 14 переместить_имм рдиай, 14 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы переместить_имм раикс, 15 переместить_имм рдиай, 15 переместить_имм рсиай, msg_dead_7 переместить_имм рдикс, len_msg_dead_7 вызов_системы ; --------------------- проверка_8: ; СЕДЬМОЙ ПЕРЕХОД: переход_если_перенос ; Выполним вычитание, которое вызовет перенос: rbx - rax = 5 - 10 переместить_имм рбикс, 5 ; rbx = 5 переместить_имм раикс, 10 ; rax = 10 ; rbx - rax = 5 - 10 -> CF=1 вычесть рбикс, раикс ; rbx = rbx - rax = 5 - 10. Это вызовет перенос (CF=1). ; Условие jc: CF=1. CF=1. jc СРАБОТАЕТ. ; Мы хотим прыгнуть МИМО мертвого кода 8, если jc сработает (т.е. если был перенос). переход_если_перенос мимо_мертвого_кода_8 ; --- МЕРТВЫЙ КОД 8 --- ; Этот код НЕ должен выполниться (так как jc сработал) переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 2 переместить_имм рдиай, 2 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 3 переместить_имм рдиай, 3 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 4 переместить_имм рдиай, 4 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 5 переместить_имм рдиай, 5 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 6 переместить_имм рдиай, 6 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 7 переместить_имм рдиай, 7 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 8 переместить_имм рдиай, 8 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 9 переместить_имм рдиай, 9 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 10 переместить_имм рдиай, 10 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 11 переместить_имм рдиай, 11 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 12 переместить_имм рдиай, 12 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 13 переместить_имм рдиай, 13 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 14 переместить_имм рдиай, 14 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы переместить_имм раикс, 15 переместить_имм рдиай, 15 переместить_имм рсиай, msg_dead_8 переместить_имм рдикс, len_msg_dead_8 вызов_системы ; --------------------- мимо_мертвого_кода_8: ; ВОСЬМОЙ ПЕРЕХОД: переход_если_нет_переноса ; Убедимся, что CF=0. Выполним операцию, которая сбросит CF. сравнить раикс, раикс ; CF = 0 (так как rax - rax = 0, без переноса) ; Условие jnc: CF=0. CF=0. jnc СРАБОТАЕТ. ; Мы хотим прыгнуть МИМО мертвого кода 9, если jnc сработает (т.е. если НЕ было переноса). переход_если_нет_переноса мимо_мертвого_кода_9 ; --- МЕРТВЫЙ КОД 9 --- ; Этот код НЕ должен выполниться (так как jnc сработал) переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 2 переместить_имм рдиай, 2 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 3 переместить_имм рдиай, 3 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 4 переместить_имм рдиай, 4 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 5 переместить_имм рдиай, 5 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 6 переместить_имм рдиай, 6 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 7 переместить_имм рдиай, 7 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 8 переместить_имм рдиай, 8 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 9 переместить_имм рдиай, 9 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 10 переместить_имм рдиай, 10 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 11 переместить_имм рдиай, 11 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 12 переместить_имм рдиай, 12 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 13 переместить_имм рдиай, 13 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 14 переместить_имм рдиай, 14 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы переместить_имм раикс, 15 переместить_имм рдиай, 15 переместить_имм рсиай, msg_dead_9 переместить_имм рдикс, len_msg_dead_9 вызов_системы ; --------------------- мимо_мертвого_кода_9: ; ДЕВЯТЫЙ ПЕРЕХОД: переход (безусловный) ; Просто прыгаем мимо мертвого кода 10. переход мимо_мертвого_кода_10 ; --- МЕРТВЫЙ КОД 10 --- ; Этот код НЕ должен выполниться (так как jmp сработал) переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 2 переместить_имм рдиай, 2 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 3 переместить_имм рдиай, 3 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 4 переместить_имм рдиай, 4 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 5 переместить_имм рдиай, 5 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 6 переместить_имм рдиай, 6 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 7 переместить_имм рдиай, 7 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 8 переместить_имм рдиай, 8 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 9 переместить_имм рдиай, 9 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 10 переместить_имм рдиай, 10 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 11 переместить_имм рдиай, 11 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 12 переместить_имм рдиай, 12 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 13 переместить_имм рдиай, 13 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 14 переместить_имм рдиай, 14 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы переместить_имм раикс, 15 переместить_имм рдиай, 15 переместить_имм рсиай, msg_dead_10 переместить_имм рдикс, len_msg_dead_10 вызов_системы ; --------------------- мимо_мертвого_кода_10: ; --- ВЫВОД ЦЕЛЕВОГО СООБЩЕНИЯ --- вывести_сообщение: переместить_имм раикс, 1 переместить_имм рдиай, 1 переместить_имм рсиай, msg_success переместить_имм рдикс, len_msg_success вызов_системы ; --- ЗАВЕРШЕНИЕ --- переместить_имм раикс, 60 переместить_имм рдиай, 0 вызов_системы .данные ; Перемешиваем строки и константы ; "Живой из 3!\n" = 8 букв * 2 + 1 (!) + 1 (\n от .строка_нуль) = 16 + 2 = 18 байт на содержимое. len = 18 msg_live_from_3: .строка_нуль "Живой из 3!\n" .константа len_msg_live_from_3 = 18 ; "Успех!\n" = 5 букв * 2 + 1 (!) + 1 (\n от .строка_нуль) = 10 + 2 = 12 байт на содержимое. len = 12 msg_success: .строка_нуль "Успех!\n" .константа len_msg_success = 12 ; "Мертвый код 10!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_10: .строка_нуль "Мертвый код 10!" .константа len_msg_dead_10 = 19 ; "Мертвый код 9!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_9: .строка_нуль "Мертвый код 9!" .константа len_msg_dead_9 = 19 ; "Мертвый код 8!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_8: .строка_нуль "Мертвый код 8!" .константа len_msg_dead_8 = 19 ; "Мертвый код 7!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_7: .строка_нуль "Мертвый код 7!" .константа len_msg_dead_7 = 19 ; "Мертвый код 6!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_6: .строка_нуль "Мертвый код 6!" .константа len_msg_dead_6 = 19 ; "Мертвый код 5!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_5: .строка_нуль "Мертвый код 5!" .константа len_msg_dead_5 = 19 ; "Мертвый код 4!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_4: .строка_нуль "Мертвый код 4!" .константа len_msg_dead_4 = 19 ; "Мертвый код 3!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_3: .строка_нуль "Мертвый код 3!" .константа len_msg_dead_3 = 19 ; "Мертвый код 2!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_2: .строка_нуль "Мертвый код 2!" .константа len_msg_dead_2 = 19 ; "Мертвый код 1!" = 7 букв * 2 + 4 символа * 1 + 1 (\n от .строка_нуль) = 14 + 4 + 1 = 19 байт на содержимое. len = 19 msg_dead_1: .строка_нуль "Мертвый код 1!" .константа len_msg_dead_1 = 19