Вывод значения байта в десятеричной системе счисления
⇐ ПредыдущаяСтр 2 из 2 Методика выполнения Алгоритм решения задачи: Будем считать, что байт, значение которого нужно вывести, находится в регистре DH. Однако теперь применим другой способ вывода символа цифры на экран: используем тот факт, что коды символов, обозначающих цифры, отличаются от них на 30h. Но проблема здесь другая: заранее не известно, сколько цифр нужно отобразить, одну или три. Байт может принимать значение от 0 до 255. И есть еще одна проблема. При записи числа с применением позиционной системы записи в некоторой системе счисления поступают следующим образом: вычисляют и записывают остатки от деления числа на основание системы. Так поступают до тех пор, пока частное от деления не станет равным нулю. Затем остатки выписывают в порядке, обратном тому, как они получены. Пример: число = 251. Делим на 10. Частное 25, остаток "1". Делим на 10. Частное 2, остаток "5". Делим на 10. Частное 0, остаток "2". Нужно вывести на экран "2", "5", "1". Задача решается с использованием стека программы. Остатки будем помещать в стек программы с помощью оператора PUSH. Одновременно будем подсчитывать число остатков, помещенных в стек. Счетчик - CX. Потом его используем для организации цикла, в котором будем извлекать остатки из стека оператором POP. Стек организован таким образом, что оператор POP извлекает последнее слово, которое было помещено туда оператором PUSH. Отметим, что оператор PUSH помещает в стек слово (WORD) или двойное слово (DWORD). Аналогично работает и оператор POP Команда PUSH (занесение операнда в стек). Команда push уменьшает на 2 содержимое указателя стека SP и заносит на эту новую вершину двухбайтовый операнд-источник (проталкивает в стек новое данное). Проталкивать в стек можно только целые слова (не байты). Программа должна строго следить за тем, чтобы каждой команде проталкивания в стек push отвечала обратная команда выталкивания из стека pop. Если стек используется для временного хранения некоторых данных, то извлекать эти данные из стека следует в порядке, обратном их сохранению.
В качестве операнда-источника может использоваться любой 16-разрядный регистр (включая сегментный) или ячейка памяти. Команда push не воздействует на флаги процессора. Пара команд push - pop часто используется для пересылки данного из регистра в регистр (особенно, в сегментный) через стек. Пример 1 push ES: mem; Сохранение содержимого push DS; слова памяти mem из push BP; дополнительного сегмента, а также регистров DS и ВР pop PP; Восстановление из стека pop DS; трех операндов pop ES: mem; в обратном порядке Пример 2 push DS; Пересылка DS через стек pop ES; Теперь ES=DS Простейший способ решения задачи вывода значения байта в десятеричной системе счисления
Пример № 3.1
Читайте также: B) оказание помощи в выводе акций инвестируемых предприятий на фондовый рынок Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|