![]() |
Пример ввода числа |
Пример программы ввода числа, использующей графический интерфейс пользователя ЭКВМ.
Программа выводит на экран число, введённое с помощью формы ввода десятичного числа 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:

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

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

При нажатии на клавишу "Выход" происходит остановка программы:
Программа занимает всего одну страницу памяти.
Программа была написана после разбора программы "Калькулятор" :)
Сайт работает на микрокомпьютере