Предыдущая глава | ВЫВОД НА ЭКРАН ДЕСЯТИЧНЫХ И ШЕСТНАДЦАТЕРИЧНЫХ ЧИСЕЛ | Следующий раздел |
В процессе разработки практически важных процедур, выполняющих вывод на экран десятичных и шестнадцатеричных чисел, производится изучение нескольких новых исполнительных операторов ассемблера, расширяются навыки работы со стеком, а также производится знакомство с представлением исходной программы в виде нескольких файлов.
Назовем процедуру, выполняющую вывод на экран десятичного представления слова данных, содержащего двоичное число без знака, как Write_word_dec. Пусть это слово данных передается на вход процедуры в регистре DX. Обсудим алгоритм процедуры Write_word_dec.
Предполагаемый результат работы процедуры состоит в том, что сначала на экран будет выведена старшая десятичная цифра числа, затем вторая слева цифра и т.д. Для этого следует иметь десятичное представление числа, хранящегося у нас в двоичном виде. Вспомним, что при делении числа на 10 остаток есть младшая десятичная цифра числа. Если полученное частное разделим на 10, то получим вторую справа десятичную цифру. Подобное деление можно продолжать до тех пор, пока очередное частное не будет меньше 10 и, следовательно, оно и будет равно старшей цифре числа. Если бы порядок получения десятичных цифр из числа совпал бы с порядком их вывода на экран, то задача была бы уже решена. Но у нас эти порядки противоположны. Поэтому мы опять обратимся за помощью к стеку. Вспомним его свойство "кто пришел первым, тот уйдет последним". Поэтому, если мы поместим в стек младшую десятичную цифру числа (она получена первой), то она будет извлечена из стека для вывода на экран последней. Блок-схема соответствующего алгоритма приведена на рис.39 следующего раздела.
Предыдущая глава | В начало | Следующий раздел |