Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Evgen aka Chuma
Статус: 3-й класс
Рейтинг: 308
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 304
∙ повысить рейтинг »
nikitos82.01
Статус: 1-й класс
Рейтинг: 2
∙ повысить рейтинг »

∙ Assembler

Номер выпуска: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 для выхода из программы

Код (Assembler) :: выделить код
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				;и программу с указанием точки входа

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 14.11.2016, 11:46
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное