- •Лабораторная работа № 1 Ознакомление с работой учебной микроЭвм и процессом ввода-вывода информации
- •1 Цель работы
- •2 Теоретические сведения
- •1 3
- •2.1 Принцип работы микроЭвм
- •0000 03Ff 8000 83e0 8400 87ff ffff
- •2.2 Представление информации в микроЭвм
- •2.3 Инструкция по эксплуатации уоу "Электроника-580"
- •2.3.1 Индикатор адреса и данных
- •2.3.2 Ввод команд и данных в озу
- •2.3.3Чтение и запись информации в регистры
- •2.3.4 Чтение содержимого озу или ппзу
- •3 Порядок выполнения работы
- •4 Контрольные вопросы
- •5 Требование к отчету
- •2.1 Команды передачи данных
- •2.2 Арифметические команды
- •2.3 Логические команды
- •2.4 Команды передачи управления
- •2.5 Команды ввода и вывода , обращения к стеку и управления микропроцессором
- •3 Порядок выполнения работы
- •4 Контрольные вопросы
- •5 Требования к отчету
- •Лабораторная работа № 3 Подпрограмма и стек
- •1 Цель работы
- •2 Теоретические сведения
- •2.1 Использование стековой памяти
- •3. Порядок выполнения работы
- •4 Контрольные вопросы
- •3 Порядок выполнения работы
- •Перечень заданий
- •4 Контрольные вопросы
- •5 Требования к отчету
- •Список литературы
- •Уфимский Государственный Авиационный Технический Университет
- •450000, Уфа-центр, ул. К. Маркса, 12
2.2 Арифметические команды
Эти команды предназначены для выполнения операции сложения, сложения с переносом, вычитания, вычитания с заёмом, инкрементирования, декрементирования, десятичной коррекции аккумулятора. В большинстве случаев эти команды изменяют содержимое разрядов регистра флажков F, который содержит информацию следующего вида :
S |
Z |
0 |
AC |
0 |
P |
1 |
CУ |
b7 b6 b5 b4 b3 b2 b1 b0 ,
где разряд S - индикатор знака , Z - нуля ,
AC - вспомогательного переноса ,
P - четности , CУ - переноса .
Состояние регистра F используется последующими командами для выполнения и организации управления вычислительным процессом . Рассмотрим команды этой группы:
ADD Ri осуществляет сложение в прямых кодах содержимого аккумулятора и операнда , находящегося в РОН или ячейке памяти .
ADD B код- 80(16), выполняет операцию А=А+В , результат сложения остается в А .
ADD M код- 86(16), складывает содержимое аккумулятора с операндом ячейки памяти по адресу , указанному в регистровой паре H,L .
ADI V êîä Ñ6(16) выполняет сложение в АЛУ аккумулятора с операндом в команде, результат сложения заносит в А . В данной команде в первом байте располагается КОП, во втором - операнд V .
ADC Ri складывает содержимое А с РОН или ячейкой памяти и в младший разряд сумматора АЛУ прибавляет содержимое младшего разряда регистра F.
ADC M код- 8Е(16) складывает содержимое аккумулятора с ячейкой памяти с адресом , указанным в регистровой паре H,L, и к результату сложения прибавляет СУ. Результат операции передается в А .
ACI V осуществляет сложение аналогично ADI V, кроме того, к младшему разряду сумматора АЛУ прибавляет значение СУ регистра F(сложение с переносом).
DAD RP выполняет двухбайтное сложение регистровой пары RP с содержимым регистровой пары H,L .При наличии переноса Рст из сумматора -СУ=1 ,если его нет , то СУ=0 . Результат заносится в H,L .
DAD B код- 09(16) выполняет операцию HL= BC+HL; СУ=Рст.
SUB Ri позволяет непосредственно вычесть из аккумулятора содержимое РОН или ячейки памяти (A=A-Ri ) и результат вычитания занести в А (сложить в дополнительном коде А=А+ [()+1] без учета знака вычитаемого) эта команда не выявляет переполнения и имеет другие разновидности :
SUI V - вычитание непосредственно из А операнда.
SBB Ri - вычитание с заемом А=А+ [()+1] + [- СУ]д.
SBBV - вычитание непосредственно операнда с заемом А = А - V - СУ.
SBB M осуществляет вычитание A=A-М-СУ посредством сложения содержимого аккумулятора с инвертированным значением операнда, содержащимся в ячейке М, при СУ=1 и А=А++1 при СУ=0. Рассмотрим эту операцию подробнее :
Пусть необходимо вычесть с заёмом из А содержимое ячейки 8204(16).
Пусть А=F8(16), М=30(16), заема не было ; СУ=0.
Тогда в АЛУ под действием команды произойдет сложение :
F 8 (16) 3 0 (16)
1111 1000 A = [ - 8(10)] M= 0011 0000 = 48(10)
+ 1101 0000 [ M]= [-48(10)]
Pст= 1 1100 1000
С 8 (16) А = [-56(10)]
9 2
После сложения F = 92(16) , т.е. 1001 0010
Из состояния разрядов регистра флажков видно , что S =1 ,т.е. в результате сложения получено отрицательное число ( разряд 7 результата =1); Z =0(результат не равен 0 ); АС=0 (при сложении младшей тетрады нет переноса ); Р=0 (в результате сложения получилось число с нечетным числом "1" ); СУ=0 (не нужен заём при вычитании из старшего байта; при вычитании СУ=, при выполнении сложения типа ADD СУ=Рст - перенос в старший байт при сложении с повышенной точностью). Если перед вычитанием СУ=1, то, выполняя команду SBB M, получим А=С7, F=92(16). Заметим, что до выполнения команды в H занесен код 82(16), в L- 04(16),а в ячейку 8204(16)записан операнд 30(16).
INR Ri, INR RP являются разновидностями команды ADD, осуществляют прибавление "1" к РОН, ячейке памяти или содержимому регистровой пары .
DCR RI , DCX RP декрементируют содержимое Ri или RP .
DAA корректирует результат сложения, хранящийся в А в двоичном коде, в двоичнодесятичный код <8421> :
при АС =1 или b3b2b1b0(2) >9 прибавляет 6 к младшей тетраде байта,
при СУ=1 или b7b6b5b4(2) >9 прибавляет 6 к старшей тетраде .
Команда DAA после ADD позволяет выполнить сложение в коде D1 .