МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
Національній університет "Львівська політехніка"
ЗАСОБИ КОМПІЛЯЦІЇ, ЛІНКУВАННЯ І НАЛАГОДЖЕННЯ ПРОГРАМ В СР/М ДЛЯ МІКРОПРОЦЕСОРА Intel 8080 (КР580ВМ80А)
Звіт
до лабораторної роботи №1
з курсу "Комп'ютери та мікропроцесорні системи"
Виконав:
Студент групи КН-3
ЛЬВІВ 2008
Тема: ЗАСОБИ КОМПІЛЯЦІЇ , ЛІНКУВАННЯ І НАЛАГОДЖЕННЯ ПРОГРАМ В СР/М ДЛЯ МІКРОПРОЦЕСОРА Intel 8080 (КР580ВМ80А.
Мета: Вивчити засоби компіляції, лінкування і налогоджування програм за допомогою компілятора СР/М для мікропроцесора Intel 8080 (КР580ВМ80А).
1. ЛАБОРАТОРНЕ ЗАВДАННЯ
1. Набрати, скомпілювати та запустити програму задану викладачем .
2. Опрацювати осноні команди відлагоджувача програм СР/М.
2. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
СР/М (Control Program for Microprocessоrs) - операційна система для МПС (мікропроцесорних систем) на базі мікропроцесорів 8080, 8085, Z80, К580. Це діалогова система, розрахована на роботу з одним користувачем, що забезпечує файлову організацію програм і даних. Діалог організовується за допомогою команд системи. Набір команд, що найбільш використовуються подано в підрозділі 2.1.
2.1 Внутрішні команди СР/М
DIR (Роздрук списку файлів):
DIR Друкувати список файлів текучого диску;
DIR *.* Друкувати список усіх файлів розміщених на текучому
диску;
DIR *.ext Друкувати список усіх файлів з розширенням "ext";
DIR filename.* Друкувати список усіх файлів з ім'ям "filename";
DIR filename.ext Друкувати ім'я тільки вказаного файлу.
TYPE (Проглянути текстовий файл):
TYPE filename.ext Проглянути на консолі файл " filename.ext "
REN (Зміна назви файлу):
REN newname.ext=oldname.ext Поміняти ім'я файлу з " oldname.ext "
на " newname.ext".
SAVE (Збереження оперативної пам'яті у файл на диску):
SAVE n filename.ext Записати n сторінок оператівної пам'яті (одна сторінка
= 256 байтів), починаючи з адреси 100h, на диск у файл
"filename.ext".
ERA (Затерти):
ERA filename.ext Затерти вказаний файл;
ERA filename.* Затерти усі файли з ім'ям " filename ";
ERA *.ext Затерти усі файли з розширенням "ext";
ERA *.* Затерти усі файли на диску.
2.2 Робота з компілятором СР/М
Набір тексту програми здійснюється любим текстовим редактором. Файли, що містять початкові тексти програм пишуть з розширенням filename.asm .
Компілятор СР/М запускається на виконання командою c.exe . Після цього з'являється промпт - [cpm]. Для виходу з системи набираєм [cpm] dos .
Для компіляції необхідно запустити команду [cpm] m filename.asm . В результаті компіляції в СР/М утворяться файли: filename.prn .
Після компіляції необхідно зібрати програму у виконавчий модуль, командою [cpm] l filename.asm . В результаті отримаєм файли filename.com
Зкомпільовану та злінковану програму необхідно перевірити у режимі відлагодження. Для запуску програми у відлагоджувачі запускаєм команду [cpm] d filename.com .
2.3 Інструментальні засоби динамічного відлагодження програм
Команди відлагодження програми: DDT VERS 1.0
D Вивести тег (192 комірок) пам'яті у шістнадцятковому форматі вміст з текучої та подальших комірок;
Наприклад, вивід тегу пам'яті з адреси 100h по 1BFh, (адреси вказані на початку рядків, а далі байти інформації записані по адресах від 0 до F) :
DDT VERS 1.0
-D
0100 01 ВС 0F 56 67 78 89 90 8C 65 54 34 D1 11 45 38
0110 62 34 78 4A 29 30 C0 8F 45 D4 09 38 88 9E 44 02
0120 94 0F 69 59 4B 39 E2 72 8C 92 44 E0 72 51 F2 77
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
01B0 33 44 C6 78 11 D0 77 45 F4 53 B4 58 A5 28 39 46
D start Вивести тег пам'яті у шістнадцятковому форматі, починаючи з комірки, яка розмищена за вказаною адресою ("start");
D start,end Вивести комірки пам'яті у шістнадцятковому форматі, починаючи з адреси "start" і закінчуючи адресою "end";
F start,end,data Записати у файл усі комірки пам'яті з адреси "start" до адреси " end " шістнадцяткове значення " data ";
Ifilename.ext Утворити блок управління файлом і записати його під ім'ям "filename.ext " для того, щоб можна було завантажити файл з таким ім'ям в оперативну пам'ять за допомогою команли " R ";
R Завантажити в оперативну пам'ять вміст файлу, ім'я якого вказане в команді "I" починаючи з текучої комірки;
R start Завантажити в оперативну пам'ять вміст файлу, ім'я якого вказане в команді "I" починаючи з комірки за адресою "start";
L Реасемблювати і вивести на консоль вміст подальших комірок пам'яті починаючи з текучої комірки;
L start Реасемблювати і вивести на консоль вміст подальших комірок пам'яті починаючи з комірки за адресою "start";
L start,end Реасемблювати і вивести на консоль вміст подальших комірок пам'яті починаючи з комірки за адресою "start" і закінчуючи адресою "end";
S start Вивести в шістнадцятковому форматі і змінити вміст комірок пам'яті за адресою " start ", продовжуючи обробку подальших комірок пам'яті до вводу символа ".";
A start Вставити, починаючи з адреси "start", оператор мови Асемблера. Продовжувати обробку подальших комірок пам'яті до вводу символа ".";
M start1,end1,start2 Скопіювати вміст області пам'яті, яка розміщена з адреси "start1", по адресу "end1", в іншу область пам'яті, що розміщена з адреси "start2";
G Виконати усю програму без переривань, починаючи з текучої адреси;
Gstart Виконати програму без переривань, починаючи з адреси "start";
Gstart,end Виконати програму без переривань, починаючи з адреси "start" і перервати виконання в точці за адресою "end";
Gstart,end1,end2 Виконати програму без переривань, починаючи з адреси "start" і перервати виконання або в точці за адресою "end1", або в точці за адресою "end2";
Gend Виконати програму без переривань, з текучої адреси і перервати виконання в точці за адресою "end";
Gend1,end2 Почати виконання програми без переривань, починаючи з текучої адреси і перервати виконання або за адресою "end1", або за адресою "end2";
X Вивести текучий вміст регістрів центрального процесора;
Наприклад, після виконання команди X на екран виведеться рядок:
C1Z0M1E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 LXI B,0FBC
Xregister Вивести вміст регістра "register" центрального процесора.
Unumber Виконати "number" машинних інструкцій і після їх завершення вивести вміст регістрів центрального процесора;
Tnumber Трасування, виконання "number" машинних інструкцій, роздрукувати вміст регістрів центрального процесора після виконання кожної інструкції;
Наприклад, після виконання команди T на екран виведеться рядок виконання команди LXI B,0FBC :
C0Z0M0E0I0 A=00 B=0FBC D=0000 H=0000 S=0100 P=0103 JMP 013D
2.4 Програмні засоби організації програми
Директиви асемблера визначають порядок компілювання, розміщення в пам'яті інформації, присвоюють значення символьним іменам, резервують пам'ять та виконують ряд інших функций. Директиви або псевдокоманди не виконують дій над даними, а лиш використовуються як задають повідомлення в процесі компіляції на машинну мову. На початку асемблерної програми для МП КР580ВМ80А необхідно використовувати директиву ORG. Формат директиви:
[мітка:] ORG < вираз > ,
< вираз > директиви задає 16-ти бітову адресу, яка вказує комірку пам'яті в яку буде завантажуватись перший байт наступної команди або байт даних. Для програм відлагоджувача СР/М рекомендується на початку асемблерної програми вказувати директиву ORG з заданням початкової адреси 100 h, наприклад
ORG 100h ; Задається абсолютний адрес 100h
LXI H, area1 ; Адрес=100h
LXI D, area2 ; Адрес=103h
. . . .
HLT ; Остання команда
Програмною моделю мікропроцесора називають сукупність апаратних вузлів однокристальної інтегральної схеми (КР580ВМ80А), вміст і стан яких можна аналізувати та змінювати за допомогою команд програми.
Мікропроцесор КР580ВМ80А містить фіксовану систему з 78 мнемонік команд, які включають 111 операцій для реалізації прикладних програм. Інструментальні засоби динамічного відлагодження програми дозволяють конролювати основні програмно-доступні вузли МП під час виконання програми: C0Z0M0E0I0 A=00 B=0FBC D=0000 H=0000 S=0100 P=0103
C,Z,M,E,I - регістр прапорців (C-перенесення, Z-нуль, M-знак, E-допоміжне перенесення, I-парності кількості одиниць).
А - акумулятор (8- розрядний результат заноситься в А),
B (B,C), D(D,E), H(H,L) - регістрові пари(включають по парі 8-розрядних регістрів),
B,C,D,E,H - 8-розрядні регістри загального користування (РЗК),
S (SP) - 16- розрядний вказівник вершини стеку (stack pointer),
P (PC) - 16- розрядний лічильник команд (program counter).
3. Карта пам”яті
4.Текст програми
org 100h
mvi b,89
mov a,b
sta 250h
mvi a,10
sta 251h
add b
sta 252h
nop
hlt
5.Текст .prn – файлу
0100 ORG 100H
0100 0659 MVI B,89 ; ввожу перше значення
0102 78 MOV A,B ; заношу його в регістр А
0103 325002 STA 250H;
0106 3E0A MVI A,10 ; ввожу друге значення
0108 325102 STA 251H
010B 80 ADD B;сумую два значення
010C 325202 STA 252H
010F 00 NOP
6.Результати роботи
C:[cpm] m lab1.asm
CP/M MACRO ASSEM 2.0
0111
000H USE FACTOR
END OF ASSEMBLY
C:[cpm] l lab1.asm
FIRST ADDRESS 0100
LAST ADDRESS 0110
BYTES READ 0011
RECORDS WRITTEN 01
C:[cpm] d lab1.com
DDT VERS 1.0
NEXT PC
0180 0100
-d
0100 06 59 78 32 50 02 3E 0A 32 51 02 80 32 52 02 00 .Yx2P.>.2Q..2R..
0110 76 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 v...............
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0180 1A 84 12 13 C3 69 01 D1 2E 00 E9 0E 10 CD 05 00 .....i..........
0190 32 5F 1E C9 21 66 1E 70 2B 71 2A 65 1E EB 0E 11 2_..!f.p+q*e....
01A0 CD 05 00 32 5F 1E C9 11 00 00 0E 12 CD 05 00 32 ...2_..........2
01B0 5F 1E C9 21 68 1E 70 2B 71 2A 67 1E EB 0E 13 CD _..!h.p+q*g.....
-d100,160
0100 06 59 78 32 50 02 3E 0A 32 51 02 80 32 52 02 00 .Yx2P.>.2Q..2R..
0110 76 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 v...............
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0160 00 .
-f190,1b0,0
-d190
0190 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B0 00 1E C9 21 68 1E 70 2B 71 2A 67 1E EB 0E 13 CD ...!h.p+q*g.....
01C0 05 00 C9 21 6A 1E 70 2B 71 2A 69 1E EB 0E 14 CD ...!j.p+q*i.....
01D0 05 00 C9 21 6C 1E 70 2B 71 2A 6B 1E EB 0E 15 CD ...!l.p+q*k.....
01E0 05 00 C9 21 6E 1E 70 2B 71 2A 6D 1E EB 0E 16 CD ...!n.p+q*m.....
01F0 05 00 32 5F 1E C9 21 70 00 00 4A 01 00 E1 B4 13 ..2_..!p..J.....
0200 C3 83 06 00 00 00 C3 4F 03 C3 24 05 2A 73 1E EB .......O..$.*s..
0210 0E 1E CD 05 00 F5 79 CD 8F 06 F1 C9 FE 20 C8 FE ......y...... ..
0220 09 C8 FE 2C C8 FE 0D C8 FE 7F CA 24 05 C9 0E 0D ...,.......$....
0230 CD 15 00 0E 0A CD 15 00 C9 CD 8C 06 FE 0D CA 18 ................
0240 05 CD 1C 00 CA 39 00 0E 04 21 7A 06 36 20 23 0D .....9...!z.6 #.
-l
0100 MVI B,59
0102 MOV A,B
0103 STA 0250
0106 MVI A,0A
0108 STA 0251
010B ADD B
010C STA 0252
010F NOP
0110 HLT
0111 NOP
0112 NOP
-d100
0100 06 59 78 32 50 02 3E 0A 32 51 02 80 32 52 02 00 .Yx2P.>.2Q..2R..
0110 76 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 v...............
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0150 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0180 1A 84 12 13 C3 69 01 D1 2E 00 E9 0E 10 CD 05 00 .....i..........
0190 32 5F 1E C9 21 66 1E 70 2B 71 2A 65 1E EB 0E 11 2_..!f.p+q*e....
01A0 CD 05 00 32 5F 1E C9 11 00 00 0E 12 CD 05 00 32 ...2_..........2
01B0 5F 1E C9 21 68 1E 70 2B 71 2A 67 1E EB 0E 13 CD _..!h.p+q*g.....
-m180,1a0,130
-d100
0100 06 59 78 32 50 02 3E 0A 32 51 02 80 32 52 02 00 .Yx2P.>.2Q..2R..
0110 76 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 v...............
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0130 1A 84 12 13 C3 69 01 D1 2E 00 E9 0E 10 CD 05 00 .....i..........
0140 32 5F 1E C9 21 66 1E 70 2B 71 2A 65 1E EB 0E 11 2_..!f.p+q*e....
0150 CD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0170 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0180 1A 84 12 13 C3 69 01 D1 2E 00 E9 0E 10 CD 05 00 .....i..........
0190 32 5F 1E C9 21 66 1E 70 2B 71 2A 65 1E EB 0E 11 2_..!f.p+q*e....
01A0 CD 05 00 32 5F 1E C9 11 00 00 0E 12 CD 05 00 32 ...2_..........2
01B0 5F 1E C9 21 68 1E 70 2B 71 2A 67 1E EB 0E 13 CD _..!h.p+q*g.....
-t100
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI B,59
C0Z0M0E0I0 A=00 B=5900 D=0000 H=0000 S=0100 P=0102 MOV A,B
C0Z0M0E0I0 A=59 B=5900 D=0000 H=0000 S=0100 P=0103 STA 0250
C0Z0M0E0I0 A=59 B=5900 D=0000 H=0000 S=0100 P=0106 MVI A,0A
C0Z0M0E0I0 A=0A B=5900 D=0000 H=0000 S=0100 P=0108 STA 0251
C0Z0M0E0I0 A=0A B=5900 D=0000 H=0000 S=0100 P=010B ADD B
C0Z0M0E1I1 A=63 B=5900 D=0000 H=0000 S=0100 P=010C STA 0252
C0Z0M0E1I1 A=63 B=5900 D=0000 H=0000 S=0100 P=010F NOP
C0Z0M0E1I1 A=63 B=5900 D=0000 H=0000 S=0100 P=0110 HLT
-x
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI B,59
-xp
P=0100
-u
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI B,59*0102
Висновок: на даній лабораторній роботі я ознайомився із засобами компіляції,лінкування і налагодження програм в СРМ для мікропроцесора Intel 8080.На практиці застосував усі можливості даного відлагоджувача.