Как на Ассемблере сделать сложные условия? на C эта конструкция выглядела бы так:if(cmd=="a")
getHelp();
else if(cmd=="b")
openTextEditor();
else if(cmd=="c")
reboot();
А как мне написать на assembler'е?(P.S. я использую FASM)

21 Авг 2019 в 06:53
180 +1
0
Ответы
1

В FASM можно использовать инструкцию cmp для сравнения значений и условные переходы (je, jne, jmp, jg, jl, jge, jle) для выполнения нужного блока кода в зависимости от результата сравнения.

Пример кода на FASM, реализующего аналогичную логику:

section .data
cmd db "a", 0
section .text
global _start
_start:
mov eax, 4 ; Вводим команду
mov ebx, 1
mov ecx, cmd
mov edx, 1
int 0x80
cmp byte [cmd], 'a' ; Сравниваем команду с "a"
je a_label ; Если равны, переходим в блок кода для команды "a"
cmp byte [cmd], 'b' ; Сравниваем команду с "b"
je b_label ; Если равны, переходим в блок кода для команды "b"
cmp byte [cmd], 'c' ; Сравниваем команду с "c"
je c_label ; Если равны, переходим в блок кода для команды "c"
jmp end_label ; Если ни одна из условий не выполнены, пропускаем все блоки и переходим к завершению программы
a_label:
; блок кода для команды "a"
call getHelp
jmp end_label
b_label:
; блок кода для команды "b"
call openTextEditor
jmp end_label
c_label:
; блок кода для команды "c"
call reboot
jmp end_label
end_label:
; конец программы
getHelp:
; функция для команды "a"
ret
openTextEditor:
; функция для команды "b"
ret
reboot:
; функция для команды "c"
ret

В данном примере, в зависимости от значения переменной cmd будут вызываться нужные функции.

20 Апр в 13:11
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 749 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир