- •Лабораторная работа № 4..................................34 Лабораторная работа № 1 Ознакомление с работой учебной микроЭвм и процессом ввода-вывода информации
- •1 Цель работы
- •2 Теоретические сведения
- •2.1 Инструкция по эксплуатации уоу "Электроника-580"
- •3 Порядок выполнения работы
- •Лабораторная работа № 2 Система команд микроЭвм
- •1 Цель работы
- •2 Теоретические сведения
- •3 Порядок выполнения работы
Лабораторная работа № 2 Система команд микроЭвм
1 Цель работы
Изучить систему команд УОУ , построенного на базе микропроцессора КР 580 ВМ 80 А, их структуру, процедуру их кодирования и ввода в ОЗУ, организацию командного управления и выполнить вычисления на УОУ .
2 Теоретические сведения
Последовательность ( закон ) преобразования информации в ЭВМ задается программой. Программа размещается в ОЗУ в виде команд, представленных в машинных кодах . Представление программ в машинных кодах требует много времени на ввод команд и их проверку. Поэтому для уменьшения времени на программирование, вероятности ошибок кодирования, повышения наглядности представления команд для задания закона преобразования информации используется машинно-ориентированный язык Ассемблер. Поскольку различные микроЭВМ отличаются структурой и конструктивными особенностями, изменяется содержание и языка Ассемблер. Однако эти изменения имеют преемственность, а представление программы на языке Ассемблер позволяет получать наиболее короткие программы, занимающие меньший объем памяти по сравнению с программами, написанными на языках высокого уровня (БЕЙСИК, СИ). Программа, представленная в мнемонике Ассемблера, также должна быть оттранслирована, т.е. переведена и размещена в машинных кодах в ОЗУ . Для такого перевода необходима программа-транслятор, которой в мониторе УОУ не имеется. Поэтому, хотя в данной работе и изучается язык Ассемблер и команды представляются в его мнемонике, запись команд в ОЗУ осуществляется в шестнадцатеричной системе счисления вручную с клавиатуры УОУ.
Система команд микропроцессора КР 580 ВМ 80А приведена в таблице.2.1. Команды условно разбиты на пять групп, в первом столбце таблицы представлены наименования команд в мнемонике Ассемблера, где
Ri, Rj {A ,B ,C ,D , E , H , L , M };
V - 8-битное данное [V(16) ] ;
aa - 16-битный адрес памяти [aa(16)] ;
RP- регистровая пара B,C; D,E; H,L или указатель стека SP ;
ap - 8-битный адрес порта [ap(16)].
Во втором столбце таблицы указано содержание первого байта команды (ПБ), где Т означает ссылку на дополнение к таблице 2.1, в котором ПБ конкретизирован в зависимости от типа команды. В третьем столбце таблицы 2.1 размещена размерность команды в байтах, в четвертом - её функциональное назначение, в последующих столбцах указано содержание поименованных разрядов регистра F после выполнения команды :
" + " - возможно изменение в состояние, зависящее от результата выполнения команды ;
" - " - состояние не меняется ;
" 0 ", " 1 " - состояние нуля или единицы .
3 Порядок выполнения работы
НАЧАЛО
H,L Nя RAL (четные) A (A-M(Nÿ ))
RAR (нечетные) ( четные )
А(A-M(Nя)-CÓ)
X M(HL) 1 ( нечетные )
СУ = 1
HL+1 0
A (A+M(Nя+1)) HL Nя+2
Y M(HL)
1 0
RG..M(Nя) S=1 A M(HL)
A RG... RST 4*8
3.1 В регистровую пару HL ячейки 8200 заносятся значение адреса Nя = 820A, а в регистр этой же ячейки 53: REGL0AREGH82REGC53
3.2 В ячейку 8200 заносится код операции 71: МОV M,C
3.3 Который передает число 53 из регистра C в ячейку 810A:
ADDR8200MEM71STEP
3.4 В ячейку 8201 заносится код операции 2C. В регистре L значение увеличивается на единицу. В результате команды L получен 0B, H=82:
ADDR8201MEM2CSTEP
3.5 В регистр ячейки B заносим число E3, затем в ячейку 8202 заносим код операции 70 MOV M,B, который передает число из регистра B в регистровую пару HL. В результате в ячейке 820B находится число E3:
REGBE3ADDR8202MEM70STEP
3.6 В следующую ячейку 8203 заносим код операции 2D, который соответствует команду DCR L. Затем в следующую за ней ячейку код 53 MOV D,M
3.7 В результате этих операций регистр D содержит число 53,а в регистровой паре HL адрес 820A: ADDR8203MEM53STEP8204MEM56STEP
3.8 Чтобы перенести число из регистра в аккумулятор необходимо занести код операции 1F в ячейку 8205. В результате выполнения этой операции в аккумуляторе находится число 53. Т.к. в аккумуляторе находится нечетное число, то выполним команду RAR код операции 1E, которое заносится в ячейку 8206 и команда осуществляет сдвиги вправо.
3.9 Нахождение числа в аккумуляторе 53(16) 0101001(2) после выполнения операции станет - 00101001(2) = 29(16). В итоге в аккумуляторе содержится число 29: ADDR8206MEM1FSTEP
3.10 Используя команду JC КОП DA в ячейку 8207: ADDR8207MEMDAS7ED
SBB M(код 9E)
3.11 Заносимую ячейку памяти 820A вычитаем A=A-M(8240)-СУ:
ADDR820AMEM9ESTEP
3.12 Выполним инкрементацию регистровой пары HL 2 раза, с помощью команды INR L(код 2С). Заносятся в ячейки 820B и 820C, в результате команды в регистрах L=0C, L=82:
ADDR820BMEM2CSTEP8200MEM2CSTEP
3.13 Передаем число 29 из аккумулятора в ячейку 821C: MOV M,A(код 77), которую записываем в ячейки 820С: ADDR820CMEM77STEP
3.14 Чтобы расширить команду RST4*8 необходимо занести код E7 в ячейку 820C: ADDR820CMEME7STEP