Вывод чисел в строку комментариев |
Главная / ЭКВМ / Программы / Примеры |
Вывод числа в естественном видеЗапуск программы выполняется командами "В/О", "С/П". После запуска в строке комментариев в текстовом виде дублируется содержимое регистра стека RX. Для повторного запуска ввести число и нажать "С/П". .CHARSET 1251 ; Работа со строкой комментариев ; Вывод числа в естественном виде STRB .EQU 1000 ; Указатель на строку символов .ORG 0 MA ; Введённое число CX PP M 9030 ; Индексный регистр 0 буфера PP M 9031 ; Индексный регистр 1 буфера RMA PP M 9035 ; Преобразовать число из RA в текст (регистр 0) .NUMD STRB ; Указатель на строку в памяти данных (с декрементом) M4 ; Записать в R4 A1: PP RM 9034 ; Содержимое буфера (регистр 1 с автоинкрементом) KM4 ; Записать в строку STRB K NOT ; Преобразовать байт 255 в 0 F X=0 A1 ; Проверка на 0, переход на A1 если не конец строки .NUM STRB ; PP M 9027 ; Вывести число в виде текста CX ENT ENT ; Очистить RT, RZ и RY при выводе RMA ; RX - введённое значение R/S ; Останов GOTO 0 ; Перейти на начало программы .ENDP Программа занимает 37 байт.
Вывод числа в форматированном видеЗапуск программы выполняется командами "В/О", "С/П". После запуска в строке комментариев в текстовом виде дублируется содержимое регистра стека RX с тремя цифрами в дробной части числа. Для повторного запуска ввести число и нажать "С/П". .CHARSET 1251 ; Работа со строкой комментариев ; Вывод числа в форматированном виде STRB .EQU 1000 ; Указатель на строку символов .ORG 0 MA ; Введённое число CX PP M 9030 ; Индексный регистр 0 буфера PP M 9031 ; Индексный регистр 1 буфера 3 ; RZ - количество цифр в дробной части ENT ; Подъём стека 2 ; RY - количество цифр в целой части RMA ; RX - введённое число PP M 9036 ; Преобразовать число из RA в текст (регистр 0) ; В форматированном виде .NUMD STRB ; Указатель на строку в памяти данных (с декрементом) M4 ; Записать в R4 A1: PP RM 9034 ; Содержимое буфера (регистр 1 с автоинкрементом) KM4 ; Записать в строку STRB K NOT ; Преобразовать байт 255 в 0 F X=0 A1 ; Проверка на 0, переход на A1 если не конец строки .NUM STRB ; PP M 9027 ; Вывести число в виде текста CX ENT ENT ; Очистить RT, RZ и RY при выводе RMA ; RX - введённое значение R/S ; Останов GOTO 0 ; Перейти на начало программы .ENDP Программа занимает 40 байт.
Вывод числа в шестнадцатеричном видеДля вывод числа в строку комментариев в шестнадцатеричном виде предназначена специальная функция R9102. Перед её использованием следует установить разрядность чисел в регистре R9100 (1 - 8 бит, 2 - 16 бит, 3 - 24 бита, 4 - 32 бита). Переданное функции значение преобразуется в целое и ограничивается в соответствии с выбранным диапазоном. В приведённой программе установлена разрядность 32 бита. Запуск программы выполняется командами "В/О", "С/П". После запуска в строке комментариев в текстовом виде дублируется содержимое регистра стека RX в шестнадцатеричном виде. Для повторного запуска ввести следующее число и нажать "С/П". .CHARSET 1251 ; Работа со строкой комментариев ; Вывод числа в шестнадцатеричном виде .ORG 0 MA 4 PP M 9100 ; Установить разрядность 32 бита CX ENT ENT ; Очистка стека RMA ; Введённое число PP M 9102 ; Вывод в строку комментариев в шестнадцатеричном виде R/S ; Останов GOTO 0 ; Перейти на начало программы .ENDP Программа занимает 15 байт. Собственно вывод числа в шестнадцатеричном виде - 3 байта (запись в R9102 по адресам 09-11).
Вывод числа в формате floatФормат чисел с плавающей точной одинарной точности float (IEEE 754) предназначен для представления чисел со знаком в диапазоне приблизительно от 10-38 до 1038 с точностью порядка 7-8 десятичных цифр мантиссы. Этого достаточно для большинства реальных применений. Программа преобразует введённое в RX число в указанный формат. Запуск программы выполняется командами "В/О", "С/П". После запуска в строке комментариев выводится соответствующее число float в шестнадцатеричном виде. Для повторного запуска ввести следующее число и нажать "С/П". .CHARSET 1251 ; Работа со строкой комментариев ; Преобразование числа в формат float .ORG 0 MA ; Сохранить введённое число в RA CX ; Смещение в универсальном буфере PP M 9030 ; Индексный регистр 0 буфера MB ; Записать 0 в RB RMA ; Введённое число PP M 9038 ; Преобразовать в формат float в буфере 4 PP M 9100 ; Установить разрядность двоичных чисел 32 бита M0 ; Записать 4 в регистр 0 (Формат float - 4 байта) M3 ; Для адресации буфера A1: RMB 256 * MB ; Умножить содержимое RB на 256 KRM3 ; Декремент содержимого R3 RM3 ; Смещение очередного байта (справа-налево в буфере) PP M 9031 ; Установить смещение в универсальном буфере PP RM 9033 ; Считать байт из буфера RMB + MB ; Прибавить к числу в RB FL0 A1 ; Цикл по байтам в буфере ; В RX - целое число в диапазоне от 0 до 4294967295 (0FFFFFFFFh) PP M 9102 ; Преобразовать его в шестнадцатиричное значение ; и записать в строку комментариев CX ENT ENT ; Очистить стек RMA ; B RX - введённое значение R/S ; Останов GOTO 0 ; Перейти на начало программы .ENDP Программа занимает 45 байт.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
НПП "СЕМИКО" (383) 271-01-25 (многоканальный) |