@dashademkova

Ассемблер, как решить задачу?

Здравствуйте! Прошу помощи в следующем вопросе: Изучаю assembler в колледже. Пришел новый преподаватель. Азов не дал. Объяснил какие есть команды, а как применять не сказал.
Задал вот такое задание. Если человек вводит число от 0 до 9, то если больше, равно и меньше 5, выдавалось сообщение.
Сказала, что нет команд меньше, равно. И все нужно делать через команду cmp
У меня была идея. Я программе сказала, если меньше 5, то сообщение такое.
Вот к примеру :
sgt segment
org 100h
begin:
mov ah, 1h
int 21h
cmp al, 5
cmp 0,5
jz OK_1

_________
OK_1:
mov ah, 9h
mov bx, offset mes1
mes1 db 'Menshe'
jmp segment

И так со всеми числами от 0 до 9 .
Я правильно все сделала?
Подскажите, как правильней написать программу?
  • Вопрос задан
  • 1224 просмотра
Пригласить эксперта
Ответы на вопрос 1
15432
@15432
Системный программист ^_^
Сравнение происходит действительно через cmp, но дальнейший прыжок (jmp) можно сделать по нескольким условиям. Команда cmp выполняет обычное вычитание, и устанавливает флаги в соответствии с результатом. Среди флагов есть, например, ZF - Zero Flag, устанавливается, если результат равен нулю, то есть сравниваемые числа были равны. Вы как раз применили команду jz - Jump if Zero (перейти, если ноль), проверяющую именно этот флаг.
Для сравнения "меньше либо равно" следует использовать команду jle (Jump if Less or Equal), переход на указанный в ней адрес произойдет только если в сравнении первое число было меньше или равно второму.
Другие варианты команд перехода расписаны здесь
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы