Структура команды LXI H .




Для групп 0903ПК и 0904ПК

Преподаватель: Драгунов С.С.

Тема 7. - Способы адресации

Введение

На прошлом занятии мы с вами рассмотрели программу сложения трех чисел. В той программе мы использовали:

Команду пересылки данных:

MVI AM o ve I mmediate A ccumulator - «Переместить в регистр A непосредственно следующие данные из второго байта <B2>, где A – особый регистр, называемый Аккумулятор.

Команду сложения:

ADD B – < A > + < B > à < A >, что означает: «Сложить содержимое Аккумулятора с содержимым регистра B и сумму поместить в Аккумулятор».

Команду остановки микропроцессора:

HLT – H a lt – Остановка микропроцессора.

 

Рассмотрим более подробно структуру команды ADD B

Команда ADD B выполняет сложение первого операнда, который находится в аккумуляторе < A >, со вторым операндом, который находится в регистре общего назначения < B >, и помещает результат сложения (сумму) обратно в аккумулятор < A >. В таблице команд эта команда находится в 8 строке и 0 столбце, поэтому ее код операции 80.

Для того чтобы понять, где же у этой команды находится операнд, рассмотри ее структуру, представленную на рисунке 1. Если перевести шестнадцатеричный код 80h в двоичную систему получим 1000 0000b. Теперь можно выделить код операции, это будет - 10000b. Следовательно, под операнд остаются три нуля, которые являются ссылкой на регистр общего назначения < B >.

Рисунок 1

Если в качестве операнда выступает ссылка на то, в каком регистре общего назначения находится операнд, такой способ адресации называется регистровым.

Характерный признак такой команды, после мнемоники ставится пробел, и после пробела записывают регистр общего назначения (РОН)

 

Рассмотрим более подробно структуру команды MVI A.

Команда размещается в двух байтах, и ее структура представлена на рисунке 2.

Рисунок 2

 

В первом байте находится код операции (сокращенно - КОП), который определяет, какие действия должна выполнить команда. На алгоритмическом языке Ассемблер код операции записывается в виде мнемоники – MVI A, а при переводе на язык машины в шестнадцатеричной системе счисления это будет – 3Е.

Во втором байте записываются непосредственно те данные, которые необходимо загрузить (передвинуть - M O V E) в аккумулятор <A>. При программировании на Ассемблере эти данные принято записывать либо в шестнадцатеричной, либо в двоичной системе счисления. При записи в шестнадцатеричной системе счисления можно просто записать две шестнадцатеричные цифры или еще в конце добавить букву h. При записи в двоичной системе счисления необходимо записать 8 цифр (0 или 1) и добавить букву b.

Такой способ адресации, когда после кода операции идут непосредственно поступающие на обработку данные, называется непосредственным способом адресации.

В этом случае в конце мнемоники обычно стоит буква I от слова I mmediate (непосредственный или немедленный). Такой способ адресации используется для работы с константами.

У нашего микропроцессора шина адреса – 16 бит или два байта. Поэтому если в регистрах надо записать какой-то адрес, для этого необходимо выделить два регистра. Поэтому регистры объединяются в пары.

На структурной схемы, представленной на рисунке 3 показаны 4 регистровые пары: <BC>, <DE> и <HL>. Регистровая пара <ZW> предназначена для специальных целей и недоступна программисту.

Структура команды LXI H.

Это команда с непосредственным способом адресации для загрузки регистровой пары <HL>. Мнемоника команды LXI H происходит от слов L oad e X tend I mmediate – Загрузить расширение непосредственно. Под расширением понимается не один регистр <H>, а регистровая пара <HL>. Поскольку для заполнения регистровой пары требуется два байта, то длина команды – три байта. В первом байте находится код операции 21, а во втором и третьем байте, те данные, которые необходимо поместить в регистровую пару <HL>. Это видно из рисунка 4, на котором частично представлена таблица машинных команд микропроцессора INTEL 8080. Команда находится во второй строке и в первом столбце, поэтому ее машинный код – 21. Под кодом 21 расположены еще две строки <B2> и <B3>, - это второй и третий байты команды.

Рисунок 3

Рисунок 4

Аналогично выглядит команда LXI B для загрузки регистровой пары <BC> с машинным кодом 01 и команда LXI D для загрузки регистровой пары <DE> с машинным кодом 11.

Обратите внимание, что на рисунке 3 регистровые пары изображены в обратном порядке. Сначала идет регистр <L>, а затем идет регистр <H>. Это связано с тем, что содержимое второго байта команды <B2> помещается в регистр <L>, а содержимое третьего байта команды <B3> помещается в регистр <H>. Обозначение регистра <H> происходит от слова higher – высший, а обозначение регистра <L> происходит от слова lower – ниже.

Следовательно, если нам необходимо поместить в регистровую пару <HL> адрес ячейки памяти 8203, то мы должны сформировать команду так: 1-ый байт – код операции 21, 2-ой байт - младший байт адреса 03, 3-ий байт – старший байт адреса 82. Но при записи команды на языке Ассемблер пишут адрес в естественной форме, слева старший байт, справа младший байт – MVI H, 8203. Программа преобразования команд, записанных на языке Ассемблер, в машинные коды выполнит замены. Вместо мнемоники MVI H поместит в первый байт команды код 21, во второй байт команды поместит младший байт адреса 03, а в третий байт поместит старший байт адреса – 82.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-05-15 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: