РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты в разделе Номер выпуска: | 1633 | Дата выхода: | 18.11.2016, 14:45 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 31 / 13 | Вопросов / ответов: | 1 / 1 | Консультация # 190017: Здравствуйте! Прошу помощи в следующем вопросе: Изучаю assembler в колледже. Пришел новый преподаватель. Азов не дал. Объяснил какие есть команды, а как применять не сказал. Задал вот такое задание. Если человек вводит число от 0 до 9, то если больше, равно и меньше 5, выдавалось сообщение. Сказала, что нет команд меньше, равно. И все нужно... Консультация # 190017: Здравствуйте! Прошу помощи в следующем вопросе: Изучаю 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 . Я правильно все сделала? Подскажите, как правильней написать?
Дата отправки: 13.11.2016, 14:26 Вопрос задал: Nika.kondr (Посетитель) Всего ответов: 1 Страница онлайн-консультации » Консультирует Лысков Игорь Витальевич (Старший модератор): Здравствуйте, Nika.kondr! Примерно так. Комментарии в тексте. Обратите внимание, не проводится проверка на коды 0 - 9 Добавлена проверка на ESC для выхода из программы
sgt segment ;Если используются явные сегменты, то для компилятора необходимо указать, ;с какими сегментными регистрами они связаны. (assume) assume cs:sgt, ds:sgt org 100h ;необходимо для COM-программы begin: ;точка входа mov ah, 1h int 21h ;читаем код ASCII с клавиатуры с выводом на экран cmp al, 27 ;проверим на код клавиши ESC для выхода из программы jne continue ;что-то другое - продолжаем mov ax, 4c00h ;иначе завершаем программу int 21h continue: ;для функции 9 адрес выводимой строки должен быть в регистре DX mov dx, offset mes1 ;загрузим предварительно адрес первого сообщения cmp al, '5' ;с клавиатуры получаем не число, например, 5, а ASCII-код символа '5' = 35h!!! jl mess ;после сравнения сморим результат: если меньше - идем на вывод сообщения mov dx, offset mes2 ;для >= загружаем предварительно следующее сообщение jg mess ;и проверяем на больше, если справедливо, то идем на вывод ;ravno mov dx, offset mes3 ;если не меньше и не больше, остается равно mess: ;выводим сообщение mov ah, 9h ;функция вывода строки DS:DX (у нас формат COM, поэтому все в одном сегменте!) int 21h jmp begin ;и на повтор ввода ;выводимые сообщения mes1 db ' - Menshe',0dh,0ah,'$' ;отделим минусом с пробелами, перейдем на новую строку. mes2 db ' - Bolshe',0dh,0ah,'$' ;в конце обязательно символ '$'. Это требует функция 9 mes3 db ' - Ravno',0dh,0ah,'$' sgt ends ;обязательно закрываем сегмент end begin ;и программу с указанием точки входа
Оценить выпуск | Задать вопрос экспертам главная страница | стать участником | получить консультацию техническая поддержка Дорогой читатель! Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно! МЫ РАБОТАЕМ ДЛЯ ВАС! |
Комментариев нет:
Отправить комментарий