Сборник по задачам и примерам Assembler



         

Вывод чисел на консоль - часть 2


из доступных регистров или области памяти длиной до 32 бит. Для этого доста точно лишь переслать содержимое нужного объекта (регистра или ячейки памяти} с учетом его размера в один из регистров AL, АН, АХ, ЕАХ. Имя одного из этих регистров указывается затем в качестве фактического аргумента макрокоманды SHOW Второй аргумент этого макроса — позиция на экране. Задавая определенные значения, мы можем судить о том, какая именно макрокоманда SHOW сработала. Еще одна немаловажная особенность данного макроса состоит в его возможности работать как в реальном, так и защищенном режимах. Распознавание текущего режима работы микропроцессора выполняется автоматически. Проверить работу данного макроопределения вы можете с помощью следующей программы.

Ниже приведены фрагменты текста макрокоманды SHOW. Полный текст этой макрокоманды имеется в е.

:show.inс

макроопределение для визуализации регистров AL. АН. АХ. ЕАХ

;:на входе:

:;агд_п - имя одного из регистров AL. АН, АХ. ЕАХ

;;п_ро2 - номер позиции на экране, по умолчанию - 1000

Show MACRO a rg_n.n_poz:=<1000>

LOCAL mai n_part.di sp.pause.tempi ate,VideoBuffer.pjnode.ml.m2

:;переход на начало блока команд, чтобы избежать выполнения данных

jmpmain_part ;:некоторые константы и переменные

main_part: :начало блока команд

сохранение в стеке используемых регистров: ЕАХ. ЕВХ. ЕСХ. EDX. EDI. DS. ES

push cs

pop ds :в bx - адрес таблицы-шаблона (для xlat)

lea bx.cs:tempi ate

xor ex.ex :очистка сх

:начало блока определения того, какой регистр был передан макросу IFIDNI <al>.<&arg_n> :если аргумент=а1 или AL. ?reg8bit=TRUE установка флага 8-битового регистра

mov ah.al ENDIF

;передан не al или AL

IFIDNI <ah>.<&arg_n> :если аргумент-ah или АН.

?reg8bit=TRUE -.установка флага 8-битового регистра

ENDIF

;передан не АН или ah

IFIDNI <ax>.<&arg_n> ;если аргумент равен ах или АХ,

?regl6bit=TRUE -.установка флага 16-битового регистра

ENDIF

;передан не ah. АН ,ах или АХ .¦ _ ,;.




Содержание  Назад  Вперед