Лабораторная работа №2 [вариант 10]
.docМинистерство образования РФ
Уфимский Государственный Авиационный Технический Университет
Кафедра АСУ
Отчет по лабораторной работе №2
Система команд микроЭВМ
Выполнили: студенты гр. АСОИ-331
Максютова Д.Р. Катьянова Е.В.
Проверил: Дубинин Н.М.
Уфа 2008
1. Цель работы
Изучить систему команд УОУ, построенного на базе микропроцессора КР 580 ВМ 80А, их структуру, процедуру их кодирования и ввода в ОЗУ, организацию командного управления и выполнить вычисления на УОУ.
2. Теоретические сведения
Последовательность (закон) преобразования информации в ЭВМ задается программой. Программа размещается в ОЗУ в виде команд, представленных в машинных кодах. Представление программ в машинных кодах требует много времени на ввод команд и их проверку. Поэтому для уменьшения времени на программирование, вероятности ошибок кодирования, повышения наглядности представления команд, для задания закона преобразования информации используется машинно-ориентированный язык Ассемблер. Поскольку различные микро ЭВМ отличаются структурой и конструктивными особенностями, изменяется содержание и языка Ассемблер. Однако эти изменения имеют преемственность, а представление программы на языке Ассемблер позволяет получать наиболее короткие программы, занимающие меньший объем памяти по сравнению с программами, написанными на языках высокого уровня. Программа, представленная в мнемонике Ассемблера, также должна быть оттранслирована, т.е. переведена и размещена в машинных кодах в ОЗУ. Для такого перевода необходима программа-транслятор, которой в мониторе УОУ не имеется. Поэтому, хотя в данной работе и изучается язык Ассемблер, и команды представляются в его мнемонике, запись команд в ОЗУ осуществляется в шестнадцатеричной системе счисления вручную с клавиатуры УОУ.
3. Выполнение работы
3.1. Ответы на вопросы:
1. Указать назначение разрядов регистра F.
Регистр флагов F содержит информацию следующего вида:
-
S
Z
0
AC
0
P
1
CУ
b7 b6 b5 b4 b3 b2 b1 b0,
где разряд S - индикатор знака,
Z - индикатор нуля,
AC - индикатор вспомогательного переноса,
P - индикатор четности,
CУ - индикатор переноса.
Состояние регистра F используется последующими командами для выполнения и организации управления вычислительным процессом.
2. В каких кодах осуществляется операция вычитания в микро ЭВМ?
Операция вычитания осуществляется в дополнительных или обратных кодах.
3. Каким образом определяется адрес следующей команды после выполнения команд JMP аа, JPE аа?
JMP aa - безусловный переход к команде, находящейся в ячейке (байт 3, байт 2 = аа). Второй и третий байты команды загружаются в W, Z и РС, а через регистр адреса команда извлекает очередную необходимую команду программы.
4. Каким образом определяется адрес ячейки M для занесения операнда V при реализации команды MVI M, V?
MVI M, V (код - 36(16)) осуществляет непосредственную передачу V в ячейку с адресом, указанным в регистровой паре H, L. Поэтому перед выполнением данной команды необходимо предварительно поместить младший байт адреса ячейки М в регистр L, старший байт адреса в регистр H. Такая операция выполняется командой LHLD аа, где в ячейке с адресом аа располагают будущее содержимое L, а в ячейке аа+1 содержимое H.
5. Для каких целей используется команда DAA?
DAA корректирует результат сложения, хранящийся в А в двоичном коде, в двоично-десятичный код <8421>:
при АС =1 или b3b2b1b0(2)>9 прибавляет 6 к младшей тетраде байта;
при СУ=1 или b7b6b5b4(2)>9 прибавляет 6 к старшей тетраде.
6. Каков должен получиться результат после выполнения команды ANA B, если A=78(16), B=5F(16)?
ANA B осуществляет операцию A(A&B).
А = 78(16) = 1111000(2).
В = 5F(16) = 1011111(2).
Тогда А = 1011000(2) = 58(16).
7. Как определяется адрес ячейки памяти при выполнении команды ADD M, и в каких кодах выполняется сложение?
ADD M (код - 86(16)) складывает содержимое аккумулятора с операндом ячейки памяти по адресу, указанному в регистровой паре H, L. Осуществляет сложение в прямых кодах.
3.2. Перевод чисел из десятичной в двоичную и шестнадцатеричную системы счисления:
X(10) = 7.11
X(2) = 111.000111000010
X(16) = 7.1C2
X*(2) = 0011 1000 (коэффициент фиксации = 3)
X*(2)д = 0011 1000
X*(16) = 38
X*(16)д = 38
Y(10) = -18.3
Y(16) = -90.4C
Y(2 )= -10010.010011001100
Y*(2) = 11001001 (коэффициент фиксации = 3)
Y*(16) = C9
Y*(2)д = 10110110 + 20 = 10110111
Y*(16)д = B7
3.3. Уточненный алгоритм вычислений согласно варианту:
3.4. Программа, реализующая данный алгоритм в мнемонике Ассемблера и в машинных кодах:
Адрес |
Команда |
Код |
А |
D |
H, L |
82 |
||
0B |
0C |
0D |
||||||
8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 830A 830B 830C 830D 830E 830F 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 |
LXI H,VV
MVI M,V
INX H MVI M,V
DCX H MOV D,M MOV A,D RAR JC aa
INX H ADD M JM aa
DCX H SBB M INX H INX H MOV M,A RST 4*8 |
21 0B 82 36 38 23 36 C9 2B 56 7A 1F DA 14 83 23 86 FA 0A 83 2B 9E 23 23 77 E7 |
38 1C
E5
AC
|
38
|
820B
820C
820B
820C
820B
820C 820D
|
38
|
C9
|
AC
|
3.5. Операции сложения, вычитания, сдвига согласно варианту 10:
1) x = 0011 1000(2) → сдвиг вправо → x = 00011 100(2), СУ=0
x = 1C(16)
2) A ← (A+M(820C)) = A ← (A+Y) → 0001 1100(2) = 1C(16)
1100 1001(2) = C9(16)
1110 0101 (2) = E5(16)
3) A ← (A-M(820B)) = A ← (A-X-СУ) → 1110 0101 (2) = E5(16)
0011 1000(2) = 38 (16)
1(2) = 1(16)
1010 1100 (2) = AC(16)
4. Вывод
Показано, что программа размещается в ОЗУ в виде команд, представленных в машинных кодах; запись команд в ОЗУ осуществляется в шестнадцатеричной системе счисления вручную с клавиатуры УОУ; в качестве последней команды останова использована RST4*8, позволяющая вызвать Монитор для индикации результатов.