Пример ввода числа





Пример программы ввода числа, использующей графический интерфейс пользователя ЭКВМ.


Программа выводит на экран число, введённое с помощью формы ввода десятичного числа 254.


0000 	0Dh 	CX               	;
0001 	01h 	1                	;
0002 	F4h 	PP M 9200        	;Разрешаем работу
0003 	92h 	                	;интерфейса
0004 	00h 	                	;
0005 	0Dh 	CX               	;
0006 	06h 	6                	;Адрес главной
0007 	08h 	8                	;таблицы меню
0008 	F4h 	PP M 9201        	;
0009 	92h 	                	;
0010 	01h 	                	;
0011 	0Dh 	CX               	;
0012 	F4h 	PP M 9202        	;Нулевая форма
0013 	92h 	                	;
0014 	02h 	                	;
0015 	F4h 	PP M 9203        	;Нулевой элемент
0016 	92h 	                	;
0017 	03h 	                	;
0018 	06h 	6                	;Команда перерисовки
0019 	04h 	4                	;экрана
0020 	F4h 	PP M 9208        	;Вводим команду в
0021 	92h 	                	;форму
0022 	08h 	                	;
0023 	F6h 	PP RM 9209       	;Получаем код
0024 	92h 	                	;результата
0025 	09h 	                	;выполнения операции
0026 	57h 	F X!=0 40        	;0 - успешно
0027 	40h 	                	;
0028 	01h 	1                	;1 - требуется
0029 	11h 	-                	;принудительная
0030 	57h 	F X!=0 61        	;обработка команды
0031 	61h 	                	;
0032 	06h 	6                	;7 - окончание ввода
0033 	11h 	-                	;числа
0034 	5Eh 	F X=0 63         	;иначе - ошибка
0035 	63h 	                	;
0036 	68h 	RM 8             	;Введённое в Р8
0037 	49h 	M 9              	;число пишем в Р9
0038 	51h 	GOTO 18          	;Переходим к
0039 	18h 	                	;перерисовке экрана
0040 	F6h 	PP RM 9029       	;Проверяем нажатие
0041 	90h 	                	;клавиш
0042 	29h 	                	;
0043 	47h 	M 7              	;Если клавиша не
0044 	3Ah 	K NOT            	;нажата,
0045 	57h 	F X!=0 40        	;продолжим проверку
0046 	40h 	                	;
0047 	67h 	RM 7             	;
0048 	03h 	3                	;Если нажата клавиша
0049 	02h 	2                	;"Выход"
0050 	11h 	-                	;
0051 	31h 	K ABS            	;
0052 	F6h 	PP RM 9202       	;и текущая форма
0053 	92h 	                	;нулевая, то
0054 	02h 	                	;
0055 	38h 	K OR             	;
0056 	57h 	F X!=0 66        	;Переходим к
0057 	66h 	                	;останову программы
0058 	67h 	RM 7             	;Иначе, передаём код
0059 	51h 	GOTO 20          	;клавиши в форму
0060 	20h 	                	;
0061 	51h 	GOTO 18          	;Не обрабатываем
0062 	18h 	                	;команды интерфейса
0063 	F6h 	PP RM 9209       	;Извлекаем код
0064 	92h 	                	;ошибки
0065 	09h 	                	;
0066 	50h 	R/S              	;Останов программы
0067 	51h 	GOTO 00          	;Переходим на начало
0068 	00h 	0                	;Главная таблица
0069 	00h 	0                	;меню
0070 	72h 	K X!=0 2         	;
0071 	FFh 	.DB 0FFh         	;
0072 	00h 	0                	;Заголовок формы
0073 	08h 	8                	;
0074 	0Bh 	+/-              	;
0075 	09h 	9                	;
0076 	09h 	9                	;
0077 	09h 	9                	;
0078 	0Eh 	ENT              	;
0079 	0Dh 	CX               	;
0080 	04h 	4                	;Таблица флагов
0081 	00h 	0                	;Таблица переходов
0082 	00h 	0                	;
0083 	FEh 	P X=0 0018       	;Форма ввода
0084 	00h 	                	;десятичного числа
0085 	18h 	                	;
0086 	65h 	RM 5             	;Основная программа
0087 	01h 	1                	;Выбор 1-го шрифта
0088 	60h 	RM 0             	;Позиция вывода
0089 	14h 	<->              	;Координаты вывода
0090 	18h 	F LN             	;X0 - 14, Y0 - 18
0091 	5Ch 	F X<0 00         	;Вывод числа из
0092 	00h 	                	;регистра Р9
0093 	00h 	0                	;
0094 	09h 	9                	;
0095 	FFh 	.DB 0FFh         	;Конец программы
0096 	4Dh 	M D              	;Программа элемента
0097 	00h 	0                	;Ввод числа в
0098 	08h 	8                	;регистр Р8
0099 	FFh 	.DB 0FFh         	;Конец программы


Программа состоит из инициатора графического интерфейса, обработчика результатов выполнения операций, обработчика нажатия клавиш.

Инициатор разрешает работу интерфейса (Р9200), задаёт адрес главной таблицы меню (Р9201), номер начальной формы (Р9202) и элемента (Р9203), и перерисовывает форму.

Обработчик результатов выполнения операции считывает код из регистра Р9209, при успешном выполнении операции переходит к обработчику нажатий клавиш, при необходимости принудительного выполнения команды просто перерисовывает экран, после окончания ввода числа извлекает введённое число из регистра Р8 и записывает его в регистр Р9, далее передаёт код клавиши в регистр команд интерфейса (Р9208). Обработчик команд интерфейса отсутствует.

Обработчик нажатий клавиш определяет нажатие клавиш, если нажата клавиша "Выход" при нулевой текущей форме, останавливает программу, иначе - передаёт код клавиши в регистр команд интерфейса (Р9208).

Главная таблица меню ссылается на основную форму интерфейса, форма начинается с заголовка.

Таблица флагов разрешает только команду "ВВОД". Таблица переходов по команде "ВВОД" ссылается на форму ввода десятичного числа 254. В главной таблице меню форма ввода десятичного числа 254 не указывается, потому что она входит во встроенное программное обеспечение ЭКВМ и не нуждается в программировании пользователем. Таблица переходов по командам "ВЫХОД", "ВЫБОР ВЛЕВО" и "ВЫБОР ВПРАВО" ссылается на основную форму.

Программа основной формы задаёт шрифт, позицию вывода и выводит число из регистра Р9. Программа элемента вводит десятичное число в регистр Р8.


Запуск программы: В/О, С/П:

При нажатии на клавишу "Ввод" появляется окошко ввода:



При вводе работают только клавиши 0 - 9, /-/, ВП, Сх.



Вводим число, например, 9000:



Ошибочно введённое число можно стереть клавишей Сх и ввести заново.



Нажимаем клавишу "Ввод", введённое число выводится на экран:



При нажатии на клавишу "Выход" происходит остановка программы:



Программа занимает всего одну страницу памяти.


Программа была написана после разбора программы "Калькулятор" :)



Сайт работает на микрокомпьютере