Слово состояния цикла процессора и его использование
В начале каждого машинного цикла на шину данных выдается байт состояния (в течение действия сигнала СИН). Назначение каждого разряда слова состояния Di следующее:
Как видно из схемы восьмиразрядного микропроцессора, у него нет раздельных сигналов чтение/запись памяти и чтение/запись устройств ввода/вывода, а лишь общий сигнал Чтение /Запись. Для формирования таких сигналов и используется информация о слове состояния цикла МП (рисунок 3.5).
3.5. Система команд 8-разрядного микропроцессора
Команды восьмиразрядного процессора можно классифицировать по нескольким признакам. По виду выполняемых операций все команды МП можно разделить на следующие группы:
1) Передачи данных; 5) Регистровых операций; 2) Арифметических операций; 6) Передачи управления; 3) Логических операций 7) Работа со стеком; 4) Сдвига; 8) Ввода/вывода; 9) Управление процессором. Эти команды занимают в памяти 1 байт, а при использовании непосредственного операнда - 2 байта. Команды можно классифицировать в соответствии с адресом, содержащимся в команде на следующие: 1) Команды обращения к памяти. Операция, указанная в команде, относится к содержимому, хранящемуся в памяти ЗУ по определенному адресу, т.е. команда задает адреса ячейки памяти ЗУ. Например, команда ADD 200 означает: выбрать число в качестве второго операнда для сложения с числом, хранимым в аккумуляторе и являющимся первым операндом. 2) Команды обращения к регистру. Для выполняемой операции не требуется адресация оперативной памяти. Операция выполняется, как правило, над одним операндом, хранящимся в аккумуляторе. Например, CLEAR (Очистить) - означает обнулить аккумулятор. 3) Команды обращения к устройствам ввода-вывода. Эти команды обеспечивают передачу данных между МП и периферийным оборудованием. Кроме этого команды классифицируют на группы по типу операций, которые должны выполняться. Команды передачи данных. С помощью таких команд можно осуществить передачу данных от одного из регистров А, В, С, D, E, H и L к одному из регистров А, В, С, D, E, H и L. Кроме того, можно выбрать ячейку памяти М (1байт) микропроцессора, адресуясь к ней, как к одному из регистров. При этом для адресации памяти используется содержимое регистровой пары HL. Есть еще одна возможность задать содержимое регистров: загрузить непосредственный операнд в выбранный регистр. Эти команды, однако, не позволяют выполнять запоминание в обратном направлении (не существует команд, по которым содержимое регистра могло бы быть помещено в поле операндов команды).
Формат команд:
При этом r1 определяет регистр или ячейку памяти, в которую производится запись, а r2 – регистр или ячейку памяти, из которых извлекается число или непосредственный операнд. Если r1=r2 то команда является пустой. Вместо этой команды можно использовать команду NOP. Пустая команда ни при каких обстоятельствах не изменяет содержимого регистров, памяти и состояния МП.
По этой команде число, расположенное в поле операндов, заносится в регистр r.
Примеры: M1: MOV A,B; <B>®<A> M2: MOV M,A; <A>®<M> или <A>®<<HL>> MOV B,M; <M>®<B> или <<HL>>®< B >. MVI M, 12Q; 12Q®<M> или 12Q® <<HL>>. Q – обозначает, что число в восьмеричной системе.
Пример: Передать содержимое ячейки 9В 73Н в регистр А; содержимое регистров Н и L не определено. Выполнение: MVI Н,9ВН; <9B>® H MVI L,73Н; <73>®L MОV А, М; Выборка из памяти <HL>.
Команды регистровых операций Команды регистровых операций занимают в памяти один байт. Они используются для того, чтобы содержимое того или иного регистра увеличить или уменьшить на единицу. Это относится к регистрам: r = B, C, D, E, H, L. Данные команды изменяют Z-, P- и S–биты состояния, хотя регистр А не участвует в операциях. Благодаря этому можно использовать названные регистры для организации программных циклов. Формат команд имеет следующий вид:
(Метка:) INR r; Увеличить содержимое регистра на единицу (Increment register) Пример: INR C; <C> + 1 ® <C> DCR r; Уменьшить содержимое регистра на 1 (Decrement register) Для загрузки аккумулятора А содержимым ячейки памяти используются команды LDAX B и LDAX D. LDAX B; Загрузить Акк. Содержимым ячейки памяти, адрес ; которой находится в регистровой паре В,С (Load Akkumulator)
LDAX D; <<D,E>> ® A. Обе эти команды однобайтные. Команда LDA адрес загружает в Акк. Содержимое ячейки памяти, адресуемой вторым и третьим байтами команды. [<B3> <B2>] ® A. Команда запоминания STA адрес производит противоположную передачу: A ® [<B3> <B2>].
Команды работы со стеком.
PUSH rp (rp = B, C; D, E; H, L, PSW) -Запоминание значения регистров в стеке. При выполнении команды содержимое пары регистров запоминается в стеке. Одной из пар регистров является слово состояния процессора PSW, которое состоит из содержимого аккумулятора (старший байт) и регистра состояния (младший байт). Нет такой команды, при выполнении которой запомнится в стеке только один регистр. Пример: PUSH B. При выполнении этой команды <B,C>, запоминается в вершине стека, а указатель стека уменьшается на 2. <B> запоминается первым, потом <C> заканчивает стек в его вершине. POP rp (rp = B, C; D, E; H, L, PSW)- Загрузка регистров из стека. По этой команде пара регистров rp загружается содержимым вершины стека. Пример: POP D. Эта команда загружает регистры D и E из вершины стека и увеличивает указатель стека на 2. Регистр Е загружается первым. Стек имеет следующие особенности: § указатель стека содержит адрес ячейки, которая была занята самой последней (младший занятый адрес). Стек может быть расположен в любом месте памяти; § данные запоминаются в стеке с использованием предуменьшения, то есть команды уменьшают указатель стека на 1 перед запоминанием каждого байта; § данные загружаются из стека с использованием послеувеличения, то есть команды увеличивают указатель стека 1 после загрузки каждого байта; § отсутствуют указатели выхода за границы стека в ту или иную сторону, что типично для микропроцессоров всех типов. SPHL - Загрузка указателя стека (sp) – однобайтная команда. <H> ® <<SP> +1>; <L> ® <<SP>>.
PCHL - Загрузка программного счетчика PC. <H,L> ® <PC>.
3.6. Программирование арифметических и логических операций.
С помощью одного байта можно представить 256 различных чисел. Старший разряд байта интерпретируется как знаковый (0 – положительное, 1 – отрицательное число). Все остальные биты используются для представления численного значения. Таким образом, в одном байте может быть представлены числа в диапазоне от –127 до 127. Для представления отрицательных чисел используется дополнительный код.
Дополнительный код А *=> Например, двоичный код числа А =-10: А=0000 1010
ë знаковый бит. Как при сложении, так и при вычитании операнды в пределах от 0 до 255 интерпретируются как положительные восьмиразрядные числа. При вычитании вычитаемое преобразуется в его дополнительный код и затем суммируется с уменьшаемым. Если суммирование приводит к результату большему 255 (переполнение), то С–бит становится равным единице, в противном случае С=0. Процессор имеет возможность выполнять операции сложения и вычитания чисел от –127 до +127 т.о., что результат имеет правильный знак. Для представления знака результата арифметической операции используется бит состояния S. Он устанавливается в единицу, если старший бит регистра А[7]=1. В противном случае он сбрасывается. Примеры арифметических операций 8-разрядных чисел.
Сложение: [+] [0] вычитание: [7] [0] 10 0000 1010 -10 0000 1010 8 0000 10008 0000 1000 18 0001 0010 2 0001 0010 <C-бит>=0 <S>=0 <C> =0 <S>=0
+10 0000 1010 -10 0000 1010 (-12) 1111 0100 12 1111 0100
<C>=0 <S>=1 <C> =1 <S>=1
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|