Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

состав команд логических операций



Логические команды составляют еще одну группу команд МП. Состав этих команд следующий: логическое умножение – И, логическое сложение – ИЛИ, ИЛИ – исключающее, отрицание – НЕ и сдвиг. В этой группе команд именно аккумулятор составляет ядро большинства операций. Как и при арифметических операциях, способ адресации и здесь влияет на способ и место нахождения других данных в системе. Команда ANI выполняет логическое умножение над содержимым аккумулятора (00010011) и содержимым программной памяти после команды (00000001). Содержимое аккумулятора подтверждается операции И побитно. И в соответствии с таблицей истинности для этой операции имеем: 00000001. Результатом всех операций И будет сброс индикатора переноса. Так же результат операции И проверяется с целью определения не ноль ли он и если нет, индикатор нуля Z сбрасывается в ноль.

Пример операции И с косвенной операцией (ANA M). Содержимое аккумулятора подвергается операции И (бит с битом) с содержимым ячейки памяти указанной парой регистров HL. Допустим, в аккумуляторе – 00111100, а в ячейке памяти – 00000001. Результат умножения будет 00000000, этот результат размещается в аккумуляторе. Индикатор переноса CY сбрасывается в ноль, кроме того, результат проверяется на ноль и поскольку, ответ да, индикатор нуля Z устанавливается в единицу.

В обоих примерах второй операнд (00000001) используется как маска. В первом примере она используется для сброса в ноль 7 старших бит, а во втором примере, с учетом наличия индикатора нуля, для тестирования значений ноль или единица в позиции младшего бита аккумулятора.

Команда ИЛИ

Мнемоника ORA. Выполняется с содержимым аккумулятора и содержимым какой-либо ячейки памяти или регистра.

Команда ИЛИ – исключающее

Мнемоника XRA. Этих команд так же несколько, в зависимости от способа получения данных.

Например. Выполним команду ИЛИ - исключающее над самим аккумулятором, т.е. Аккумулятор Аккумулятор.

Выполнение этой операции любого числа с самим собой всегда даст результат все нули, при этом индикатор нуля Z устанавливается в единицу, что означает нулевое содержимое аккумулятора.

Команда циклического сдвига с переносом

Мнемоника RAR.

Например, RAR А (сдвиг вправо с переносом).

Например.

Содержимое аккумулятора сдвинуто на одну позицию вправо и его младший бит (единица) передается в позицию индикатора переноса CY, тогда как имевшийся там бит (ноль) занимает позицию старшего бита аккумулятора. После завершения операции CY =1, а Z=0. Используя одну или несколько команд циклического сдвига, можно тестировать весь заданный состав бит, а индикатор переноса, может быть, затем проверен командой условного ветвления.

Команды логических операций используются, как правило, для манипуляции с переменными по законам алгебры логики. Они так же могут быть использованы для тестирования и сравнения бит в слове.

17. состав команд операций передачи данных

Эти команды выполняют передачу данных из регистра в регистр, размещение данных в памяти, размещение извлеченных из памяти данных в устройство ввода/вывода. Так же эти команды устанавливают индикатор переноса. Почти все эти команды не влияют на индикаторы регистра состояния. Каждая команда передачи данных содержит адрес источника и назначения данных. Способы адресации ориентированны на то, где и как осуществляется поиск данных. К основным в этой группе команд относятся:

· MOV R1, R2 – передача из регистра 2 в регистр 1,

· MVI, R (M) – загрузить регистр (или память),

· LXI R1.2 – загрузить пару регистров LHL, LDA, STA, SHLD, IN, OUT, STC – команды передачи данных.

Например, команда MOV A, L – следующая за мнемоникой буква А указывает назначения тогда как последняя буква L индефицирует источник данных.

Команда SPHL – здесь источником данных является пара регистров HL, приемником 16-тиразрядный указатель стека SP.

Существует несколько команд непосредственной загрузки данных. Эти команды часто используются для размещения начальных значений в регистры МП.

Команда LXI H – пара регистров HL должна быть загружена данными, следующими непосредственно за кодом операции в программной памяти. Эта команда является трехбайтовой: 1 байт – код операции (21); 2-ой байт – содержит младший байт и помещается в регистр L; 3-й байт – это старший байт, который помещается в регистр H.

Команда загрузки пары регистров HL с прямой адресацией LHLD. Второй и третий байт являются 16-тиразрядным адресом памяти данных для загрузки.

МП преобразует 2 следующих за кодом операции байта в 16-тиразрядный адрес, который служит указателем адреса памяти данных (ОЗУ) и загружается в пару регистров HL.

Типовой МП снабжен несколькими командами размещения. Например, команда STA - загрузка данных с прямой адресацией. Содержимое аккумулятора помещается в память, на которую указывает 16-тиразрядный адрес, составленный 2 и 3 байтом команды.

Команда ввода (IN) – по сути, идентична команде загрузки, только здесь источником данных является порт ввода, который идентифицируется 8-миразрядным числом (адрес устройства ввода/вывода). Назначение данных из порта всегда аккумулятор.

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

18. Состав команд операций ветвление

К этим командам относятся:

· IMP – безусловный переход по адресу;

· IZ – перейти, если ноль по адресу;

· INZ – перейти, если не ноль по адресу;

· IC - перейти, если перенос;

· INC – перейти, если нет переноса по адресу.

Обычно МП выполняет команды последовательно, т.е. 16-тиразрядный счетчик команд типового МП содержит всегда адрес следующий, извлекаемый из памяти команды до ее выполнения. Его содержимое (счетчик команд) обычно повышается на 1, при каждом счете.

Команды ветвления или перехода являются средством изменения значения содержимого счетчика команд и следовательно изменение нормальной последовательности выполнения программы.

Команда IMP – перейти. Она является трехбайтовой. Используется для изменения специфического адреса в счетчике команд.

Адрес 2000Н загружен в счетчик команд, информация об этом адресе следует непосредственно за кодом операции, поэтому такая адресация называется непосредственной. Младший байт адреса находится во втором байте памяти сразу за кодом операции. Команду безусловного перехода можно рассматривать как способ загрузки новой информации об адресе в счетчике команд.

Остальные команды ветвления являются командами условного перехода. Эти команды повлекут за собой непосредственную загрузку адреса только, если будет выполнены специальные условия. В противном случае, счетчик команд будет нормальным способом инкрементирован.

Например, команда IZ – перейти, если ноль.

В этом случае счетчик команд 2017Н до операции будет нормально инкрементирован, если только индикатор нуля Z неустановлен в 1. МП проверяет это и находит 1, значит, результат последней арифметической или логической операции был ноль. Условие перехода выполнены и МП загружает новый адрес 2008Н в счетчик команд. Этот новый адрес поступает из ПЗУ. Следующей выполненной командой программы будет команда размещения данных в памяти по адресу 2008Н (но не 2018Н).

Команды перехода или ветвления существуют практически во всех программах МП. Они очень эффективны, как средство принятия решений и удобны для формирования циклов программ.

19. состав команд операций вызова программ и возврата в основную программу

Этих команд две: команда вызова CALL и команда возврата RET. Эти команды всегда используются парами, т.е. если в тексте программы есть команда CALL, ее всегда сопровождает команда RET. Трехбайтовая команда CALL используется основной программой для перехода МП к подпрограмме.

В примере подпрограмма (п/п) является короткой последовательностью команд, целью которой является создание интервала времени в течение 1 секунды.

Когда МП передает первую команду CALL по адресу 1000Н, он находит адрес перехода в двух следующих байтах программы. Адрес, следующий за CALL команды, отправляется (2010) в стек и МП переходит тогда в начало подпрограммы по адресу 1000Н. Команды, составляющие эту программу, выполняются до тех пор, пока МП не встретит команду возврата RET. Сохраняющий в стеке адрес 2010 помещается в счетчик команд и МП продолжает выполнение основной программы, принимая ее там, где он ее покинул. Эта программа выполняется до тех пор, пока МП не встретит другую команду подпрограммы вызова CALL по адресу 2020. МП сохраняет адрес следующей команды 2023 в стеке и переходит к подпрограмме, находящейся по адресу 1000Н. После завершения выполнения этой подпрограммы команда возврата RET извлекает из стека адрес следующей команды основной программы (2023) и загружает ее в счетчик команд.

Данная подпрограмма может быть использована много раз в ходе выполнения одной и той же основной программы.

Подпрограммы, как правило, размещены в ПЗУ МП, но в некоторых случаях для ускорения выполнения программ, подпрограммы размещают в ОЗУ.

Команда вызова сочетает функции оператора загрузки в стек и перехода.

Эта команда сначала загружает в стек содержимое счетчика команд. После этого счетчик команд должен быть загружен новым адресом для выполнения перехода к подпрограмме.

Нарисуем блок-схему выполнения этой команды:

Имеет место следующей последовательности операции:

1. Указатель стека декрементирован от 210А до 2109.

2. Старший байт счетчика команд загружается в стек по адресу 2109.

3. Указатель стека декрементируется до 2108.

4. Младший байт счетчика команд загружается в ячейку памяти с адресом 2108.

5. Младший байт адреса подпрограммы загружается в младший байт счетчика команд.

6. Старший байт адреса перехода загружается в старший байт счетчика команд.

После этого МП ответвляется по адресу, на который указывает счетчик команд (в примере 1000Н). Этот адрес является началом подпрограммы. В конце подпрограммы находится команда RETERN. Обнаружив ее, МП извлекает в известном порядке из стека сначала младший, затем старший байты и размещает их в счетчике команд (в примере 2010). После этого продолжается выполнение основной программы до следующей команды CALL.

Имеется ряд других таких команд, как команды обслуживания стека, отсутствие операции, команда остановок и др. При их выполнении индикаторы регистра состояния не меняются.





Дата публикования: 2015-03-26; Прочитано: 403 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.018 с)...