Меню сайта

Урок 78. Команды управления микропроцессором

Оставшиеся команды микропроцессора 8088управляют его работой.
— — — Многие из них устанавливают или сбрасываютнекоторые флаги
— — — состояния.

Установка флагов

— — — Есть три команды, которые непосредственноуправляют состоянием
— — — флага переноса. — Команды STC, CLC, CMC соответственно могут
— — — устанавлмвать, сбрасывать и изменять флагпереноса. — Этот флаг —
— — — единственный, которому уделено такоевнимание, и в первую очередь,
— — — благодаря важности флага переноса приоперациях с повышенной
— — — точностью. — — — Флагпереноса критичен на промежуточных шагах любых
— — — многословных операций. — Возможность сбрасывать или устанавливать
— — — флаг переноса может помочь при циклическойобработке с повышенной
— — — точностью. — — — НаФиг. 4.31 показан пример использования команды CLC.
— — — Цикл внутри примера складывает отдельныебайты двух 10-разрядных
— — — упакованных десятичных чисел. — Программа выполняет цикл пять раз,
— — — так как за каждую итерацию онаобрабатывает две цифры. — Информация
— — — о переносе из одного оборота цикла вдругой передается через флаг
— — — переноса. -Команда CLC сбрасывает флаг переноса перед первым циклом
— — — для того, чтобы перед первым сложением небыло переноса. — Флаг
— — — переноса также важен в операциях сдвига,где он становится девятым
— — — или семнадцатым битом регистра во времявыполнения операции.

— — — — — Два флага состояния микропроцессора имеютспециальные команды
— — — работающие с ними. Программа можетустановить или сбросить маску
— — — прерываний соответственно командами STI иCLI. Команда STI включает
— — — систему прерываний микропроцессора 8088,позволяя ему реагировать
— — — на внешние прерывания. Команда CLIблокирует систему внешних
— — — прерываний.
— — — — — — — — -Microsoft (R) Macro Assembler Version 5.00 — — — — — — — — — — — — 1/1/80 04:02:06
— — — — — — — — -Фиг. 4.31 Десятичная арифметика повышенной точности — — — Page — 1-1

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — PAGE — — -,132
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — TITLE — -Фиг. 4.31 Десятичная арифметика повышенной точности

— — — — — — — — — -0000 — — — — — — — — — — — — — — — — — CODE — — -SEGMENT
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ASSUME -CS:CODE,DS:CODE

— — — — — — — — — -= 0005 — — — — — — — — — — — — — — — — — — — — — NUMBER_LENGTH — — EQU — — — — 5 — — — — — — — — — — — — — — — 5 байт для упакованного числа
— — — — — — — — — -0000 — 0005[ — — — — — — — — — -NUMBER_ONE — — — — — DB — — — — — NUMBER_LENGTH DUP (?)
— — — — — — — — — — — — — — — — — -??
— — — — — — — — — — — — — — — — — — — — — — — — — — — — ]
— — — — — — — — — -0005 — 0005[ — — — — — — — — — -NUMBER_TWO — — — — — DB — — — — — NUMBER_LENGTH DUP (?)
— — — — — — — — — — — — — — — — — -??
— — — — — — — — — — — — — — — — — — — — — — — — — — — ]
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ——————————————
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — Эта программа складывает два десятичныхупакованных
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — числа (NUMBER_ONE и NUMBER_TWO) изаносит результат
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — в NUMBER_TWO.
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — ——————————————

— — — — — — — — — -000A — — — — — — — — — — — — — — — — — START_ADD:
— — — — — — — — — -000A — B9 0005 — — — — — — — — — — — — — -&
nbsp- — — — — — MOV — — — — CX,NUMBER_LENGTH — — — — — — — — — — Определение длины чисел

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —— -Установка индексных регистров на младший байт складываемых чисел

— — — — — — — — — -000D — 8D 36 0004 R — — — — — — — — — — — — — — -LEA — — — — SI, NUMBER_ONE + NUMBER_LENGTH — 1
— — — — — — — — — -0011 — 8D 3E 0009 R — — — — — — — — — — — — — — -LEA — — — — DI, NUMBER_TWO +NUMBER_LENGTH — 1

— — — — — — — — — -0015 — F8 — — — — — — — — — — — — — — — — — — — CLC — — — — — — — — — — — — — — — — — — — — — — — — — — Нет младших разрядов

— — — — — — — — — -0016 — — — — — — — — — — — — — — — — — ADD_LOOP:
— — — — — — — — — -0016 — 8A 04 — — — — — — — — — — — — — — — — MOV — — — — AL, [SI] — — — — — — -Взять байт из первого числа
— — — — — — — — — -0018 — 12 05 — — — — — — — — — — — — — — — — ADC — — — — AL, [DI] — — — — — — -Добавить из второго с учетом переноса
— — — — — — — — — -001A — 27 — — — — — — — — — — — — — — — — — — — — — — — — — DAA — — — — — — — — — — — — — Коррекция до упакованного формата
— — — — — — — — — -001B — 88 05 — — — — — — — — — — — — — — — — MOV — — — — [DI], AL — — — — — — -Занесение байта результата
— — — — — — — — — -001D — 9C — — — — — — — — — — — — — — — — — — — — — — — — -PUSHF — — — — — — — — — — — — Сохранение флага переноса (CF)
— — — — — — — — — -001E — 4E — — — — — — — — — — — — — — — — — — — — — — — — -DEC — — — — SI — — — — — —Сдвиг указателя первого числа
— — — — — — — — — -001F — 4F — — — — — — — — — — — — — — — — — — — — — — — — -DEC — — — — DI — — — — — —Сдвиг указателя второго числа
— — — — — — — — — -0020 — 9D — — — — — — — — — — — — — — — — — — — — — — — — -POPF — — — — — — — — — — — — — Восстановление флагов
— — — — — — — — — -0021 — E2 F3 — — — — — — — — — — — — — — — — LOOP — — — ADD_LOOP — — — — — — -Обработка следующего байта

— — — — — — — — — -0023 — — — — — — — — — — — — — — — — — CODE — — -ENDS
— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — END

— — — — — — — — — -Фиг. 4.31 Операции с BCD повышенной точности

— — — — — Программа может установить или сброситьфлаг направления с
— — — помощью команд STD и CLD. Команда CLDсбрасывает флаг направления,
— — — приводя к тому, что строковые командыведут обработку при
— — — возрастающих адресах памяти. Команда STDустанавливает флаг, в
— — — результате чего строковые командыуменьшают адресный указатель
— — — после каждого выполнения.

Категория: Программирование на Ассемблере | Дата: 02.02.13

Меню раздела
Блок