Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Кафедра САПР
ЗВІТ
до лабораторної роботи №1
ЗАСОБИ КОМПІЛЯЦІЇ, ЛІНКУВАННЯ І НАЛАГОДЖЕННЯ ПРОГРАМ В СР/М ДЛЯ МІКРОПРОЦЕСОРА Intel 8080 (КР580ВМ80А)
з курсу: «Архітектура комп’ютерів»
Виконав:
студент гр. КН
Львів 2009
1. ТЕМА РОБОТИ
Засоби компіляції, лінкування і налагодження програм в СР\М для мікропроцесора Intel 8080 (КР580ВМ80А)
2. МЕТА РОБОТИ
Вивчити засоби компіляції, лінкування і налогоджування програм за допомогою компілятора СР/М для мікропроцесора Intel 8080 (КР580ВМ80А).
3. ІНДИВІДУАЛЬНЕ ЗАВДАННЯ
Ознайомитися на прикладі використання заданої програми ( день народження + місяць народження студента) з внутрішніми командами СР/М, а також із засобами динамічного від лагодження програм. Навчитися працювати з компілятором СР/М.
4. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
СР/М (Control Program for Microprocessоrs) - операційна система для МПС (мікропроцесорних систем) на базі мікропроцесорів 8080, 8085, Z80, К580. Це діалогова система, розрахована на роботу з одним користувачем, що забезпечує файлову організацію програм і даних. Діалог організовується за допомогою команд системи. Набір команд, що найбільш використовуються подано в підрозділі 2.1.
4.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 *.* Затерти усі файли на диску.
4.2 Робота з компілятором СР/М
Набір тексту програми здійснюється любим текстовим редактором. Файли, що містять початкові тексти програм пишуть з розширенням filename.asm .
Компілятор СР/М запускається на виконання командою c.exe . Після цього з'являється промпт - [cpm]. Для виходу з системи набираєм [cpm] dos .
Для компіляції необхідно запустити команду [cpm] m filename.asm . В результаті компіляції в СР/М утворяться файли: filename.prn .
Після компіляції необхідно зібрати програму у виконавчий модуль, командою [cpm] l filename.asm . В результаті отримаєм файли filename.com
Зкомпільовану та злінковану програму необхідно перевірити у режимі відлагодження. Для запуску програми у відлагоджувачі запускаєм команду [cpm] d filename.com .
4.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
4.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).Схема 1. Програмна модель МП КР580ВМ80А.
5. ТЕКСТ ПРОГРАМИ
LAB_01.ASM
org 100h
mvi a,2
mvi b,11
add b
hlt
LAB_01.PRN
0100 ORG 100H ; директива, яка задає адресу початку програми (з комірки пам'яті 100Н)
0100 3E02 MVI A,2 ; команда занесення числа 2 в регістр А
0102 060B MVI B,11 ; команда занесення числа 11 в регістр В
0104 80 ADD B ; команда сумування вмісту рег. В і акумулятора А. Результат в А
0105 76 HLT ; команда завершення
6. РЕЗУЛЬТАТИ ВИКОНАННЯ ПРОГРАМИ
80MATE (tm) CP/M-80 Emulator 1.2
Copyright (c) 1984 Vertex Systems Inc.
SN #007#
60K TPA
C:[cpm] dir
C| C EXE | D COM | L COM | LAB_01 ASM
C| M COM
C:[cpm] dir *.com
C| D COM | L COM | M COM
C:[cpm] dir lab_01.*
C| LAB_01 ASM
C:[cpm] dir lab_01.asm
C| LAB_01 ASM
C:[cpm] type lab_01.asm
org 100h
mvi a,2
mvi b,11
add b
hlt
C:[cpm] ren lab_01.txt=lab_01.asm
C:[cpm] dir
C| C EXE | D COM | L COM | LAB_01 TXT
C| M COM
C:[cpm] ren lab_01.asm=lab_01.txt
C:[cpm] save 1 pam.txt
C:[cpm] type pam.txt
C:[cpm] m lab_01.asm
CP/M MACRO ASSEM 2.0
0106
000H USE FACTOR
END OF ASSEMBLY
C:[cpm] l lab_01.prn
FIRST ADDRESS 0100
LAST ADDRESS 0105
BYTES READ 0006
RECORDS WRITTEN 01
C:[cpm] d lab_01.com
DDT VERS 1.0
NEXT PC
0180 0100
-g
*Execution halted
C:[cpm] save 1 pam.txt
C:[cpm] type pam.txt
>☻♠♂Аv
C:[cpm] era pam.txt
C:[cpm] dir
C| C EXE | D COM | L COM | LAB_01 ASM
C| LAB_01 COM | LAB_01 HEX | LAB_01 PRN | LAB_01 SYM
C| M COM
C:[cpm] d lab_01.com
DDT VERS 1.0
NEXT PC
0180 0100
-d
0100 3E 02 06 0B 80 76 00 00 00 00 00 00 00 00 00 00 >....v..........
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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,1b0
0100 3E 02 06 0B 80 76 00 00 00 00 00 00 00 00 00 00 >....v..........
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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 _
-f100,105,f
-d100
0100 0F 0F 0F 0F 0F 0F 00 00 00 00 00 00 00 00 00 00 ................
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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.....
-ilab_01.com
-r
NEXT PC
0180 0100
-d100
0100 3E 02 06 0B 80 76 00 00 00 00 00 00 00 00 00 00 >....v..........
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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.....
-l
0100 MVI A,02
0102 MVI B,0B
0104 ADD B
0105 HLT
0106 NOP
0107 NOP
0108 NOP
0109 NOP
010A NOP
010B NOP
010C NOP
-l100,105
0100 MVI A,02
0102 MVI B,0B
0104 ADD B
0105 HLT
0106
-s101
0101 02 05
0102 06
0103 0B
0104 80 .
-d100
0100 3E 05 06 0B 80 76 00 00 00 00 00 00 00 00 00 00 >....v..........
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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.....
-a100
0100 mvi a,2
0102 .
-d100
0100 3E 02 06 0B 80 76 00 00 00 00 00 00 00 00 00 00 >....v..........
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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.....
-m100,105,121
-d100
0100 3E 02 06 0B 80 76 00 00 00 00 00 00 00 00 00 00 >....v..........
0110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0120 00 3E 02 06 0B 80 76 00 00 00 00 00 00 00 00 00 .>....v.........
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.....
-r
NEXT PC
0180 0100
-l100
0100 MVI A,02
0102 MVI B,0B
0104 ADD B
0105 HLT
0106 NOP
0107 NOP
0108 NOP
0109 NOP
010A NOP
010B NOP
010C NOP
-u4
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI A,02
*Execution halted
C:[cpm] d lab_01.com
DDT VERS 1.0
NEXT PC
0180 0100
-u
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI A,02*0102
-u
C0Z0M0E0I0 A=02 B=0000 D=0000 H=0000 S=0100 P=0102 MVI B,0B*0104
-u
C0Z0M0E0I0 A=02 B=0B00 D=0000 H=0000 S=0100 P=0104 ADD B*0105
-u
C0Z0M0E0I0 A=0D B=0B00 D=0000 H=0000 S=0100 P=0105 HLT
*Execution halted
C:[cpm] d lab_01.com
DDT VERS 1.0
NEXT PC
0180 0100
-x
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI A,02
-t3
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI A,02*0102
C0Z0M0E0I0 A=02 B=0000 D=0000 H=0000 S=0100 P=0102 MVI B,0B*0104
C0Z0M0E0I0 A=02 B=0B00 D=0000 H=0000 S=0100 P=0104 ADD B*0105
-xa
A=0D
-xb
B=0B00
-t
C0Z0M0E0I0 A=0D B=0B00 D=0000 H=0000 S=0100 P=0105 HLT
*Execution halted
C:[cpm] d lab_01.com
DDT VERS 1.0
NEXT PC
0180 0100
-t4
C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI A,02
C0Z0M0E0I0 A=02 B=0000 D=0000 H=0000 S=0100 P=0102 MVI B,0B
C0Z0M0E0I0 A=02 B=0B00 D=0000 H=0000 S=0100 P=0104 ADD B
C0Z0M0E0I0 A=0D B=0B00 D=0000 H=0000 S=0100 P=0105 HLT
*Execution halted
C:[cpm] d lab_01.com
DDT VERS 1.0
NEXT PC
0180 0100
-g
*Execution halted
C:[cpm] d lab_01.com
DDT VERS 1.0
NEXT PC
0180 0100
-g102,105
*0105
-x
C0Z0M0E0I0 A=0B B=0B00 D=0000 H=0000 S=0100 P=0105 HLT
C:[cpm] dos
7. ВИСНОВКИ
Під час виконання цієї лабораторної роботи я вивчив засоби компіляції, лінкування і налогоджування програм за допомогою компілятора СР/М для мікропроцесора Intel 8080 (КР580ВМ80А), внутрішні команди СР/М, програмні засоби організації програми, програмну модель мікропроцесора КР580ВМ80А (Intel 8080).