Пример программы на ассемблере, реализующей условный переход:
section .tex global _star _start ; Установка значения переменной в регистр ea mov eax, ; Сравнение значения переменной с cmp eax, ; Если переменная равна 5, перейти к метке equa je equa ; Вывод сообщения, что переменная не равна mov eax, 4 ; sys_writ mov ebx, 1 ; file descriptor 1 (stdout mov ecx, not_equal ; указатель на сообщени mov edx, len_not_equal ; длина сообщени int 0x80 ; вызов системного вызов ; Завершение программ mov eax, 1 ; sys_exi xor ebx, ebx ; код завершения int 0x80 ; вызов системного вызов ; Метка equa equal ; Вывод сообщения, что переменная равна mov eax, 4 ; sys_writ mov ebx, 1 ; file descriptor 1 (stdout mov ecx, equal_msg ; указатель на сообщени mov edx, len_equal_msg ; длина сообщени int 0x80 ; вызов системного вызов ; Завершение программ mov eax, 1 ; sys_exi xor ebx, ebx ; код завершения int 0x80 ; вызов системного вызов section .dat equal_msg db "Переменная равна 5", 0xa ; сообщение о равенств len_equal_msg equ $ - equal_msg ; длина сообщени not_equal db "Переменная не равна 5", 0xa ; сообщение о не равенств len_not_equal equ $ - not_equal ; длина сообщения
Для тестирования программы можно использовать следующий набор исходных данных:
Переменная равна 5: значение переменной в регистре eax равно 5Переменная не равна 5: значение переменной в регистре eax не равно 5
Проверьте правильность работы программы, выполнив её с данными из предложенного набора.
Пример программы на ассемблере, реализующей условный переход:
section .texglobal _star
_start
; Установка значения переменной в регистр ea
mov eax,
; Сравнение значения переменной с
cmp eax,
; Если переменная равна 5, перейти к метке equa
je equa
; Вывод сообщения, что переменная не равна
mov eax, 4 ; sys_writ
mov ebx, 1 ; file descriptor 1 (stdout
mov ecx, not_equal ; указатель на сообщени
mov edx, len_not_equal ; длина сообщени
int 0x80 ; вызов системного вызов
; Завершение программ
mov eax, 1 ; sys_exi
xor ebx, ebx ; код завершения
int 0x80 ; вызов системного вызов
; Метка equa
equal
; Вывод сообщения, что переменная равна
mov eax, 4 ; sys_writ
mov ebx, 1 ; file descriptor 1 (stdout
mov ecx, equal_msg ; указатель на сообщени
mov edx, len_equal_msg ; длина сообщени
int 0x80 ; вызов системного вызов
; Завершение программ
mov eax, 1 ; sys_exi
xor ebx, ebx ; код завершения
int 0x80 ; вызов системного вызов
section .dat
equal_msg db "Переменная равна 5", 0xa ; сообщение о равенств
len_equal_msg equ $ - equal_msg ; длина сообщени
not_equal db "Переменная не равна 5", 0xa ; сообщение о не равенств
len_not_equal equ $ - not_equal ; длина сообщения
Для тестирования программы можно использовать следующий набор исходных данных:
Переменная равна 5: значение переменной в регистре eax равно 5Переменная не равна 5: значение переменной в регистре eax не равно 5Проверьте правильность работы программы, выполнив её с данными из предложенного набора.