- •1. Мета роботи
- •2. Порядок виконання роботи
- •4. Короткі теоретичні відомості
- •4.1. Оперативна пам'ять
- •4.2. Регістри
- •1. Мета роботи
- •2. Порядок виконання роботи.
- •2.1. Вивчити матеріал, наведений у пункті 4 - "Короткі теоретичні відомості".
- •3.1. Назва і мета лабораторної роботи.
- •4. Короткі теоретичні відомості.
- •4.1. Робочий цикл процесора.
- •4.2 Машинні команди
- •4.2.1 Режими адресації операндів (даних)
- •4.2.2. Формат команди процесора 8086
- •4.3 Програмування на машинному рівні
- •4.3.1 Формат команди мови асемблера в середовищі debug. Com
- •4.3.2 Команди мови асемблера
- •4.4. Приклади розробки і виконання програми на мові асемблера
- •6. Література
4.2. Регістри
Крім 1 048 576 комірок оперативної пам'яті для короткочасного зберігання даних в ЕОМ є 14 спеціальних комірок, що називаються регістрами. Регістри знаходяться в центральному процесорі і використовуються для управління програмою , що виконується, для адресації пам'яті і для забезпечення арифметичних обчислень. Кожен регістр має розмір два байти (16 двійкових розрядів = слово ) і своє унікальне символічне ім'я.
За призначенням і способам використання регістри можна розбити на такі групи:
* регістри загального призначення ( AX, BX, CX, DX, SI, DI, BP, SP );
* сегментні регістри ( CS, DS, SS, ES );
* покажчик команд ( IP );
* регістр прапорів ( Flags ).
4.2.1. Регістри загального призначення (8 регістрів):
AX accumulator, акумулятор; ==> AH + AL
BX base, база; ==> BH + BL
CX counter, лічильник; ==> CH + CL
DX data, дані; ==> DH + DL
SI source index, індекс джерела;
DI destination index, індекс приймача;
BP base pointer, покажчик бази;
SP stack pointer, покажчик стека.
Зазначені регістри використовуються: в будь-яких арифметичних, логічних і т.п. машинних операціях; як модифікатори адреси (тільки регістри BX, BP, SI і DI) та ін.
------------------------------------------------------------------------------------- --------------------------------------------------------------
1 Пункти 2.1 - 2.2 і 3.1 - 3.7 виконуються при позааудиторній підготтовці до лабораторної роботи.
4.2.2. Сегментні регістри (4 регістри):
CS code segment, сегмент команд;
DS data segment, сегмент даних;
SS stack segment, сегмент стека;
ES extra segment, додатковий сегмент.
Зазначені 16-ти розрядні регістри використовуються для формування фізичного 20-ти розрядної адреси пам'яті шляхом сегментування ( базування ) адресного простору оперативної пам'яті, тобто поділу його на ділянки, блоки.
4.2.3. Покажчик команд
IP instruction pointer, покажчик команд
У цьому регістрі завжди знаходиться адреса команди, що повинна бути виконана наступною. Більш точно, у IP знаходиться адреса цієї команди, відрахованна від початку сегмента команд, на початок якого вказує регістр CS. Тому фізична адреса команди визначається парою регістрів CS і IP. Зміна будь-якого з цих регістрів є ніщо інше, як перехід. Тому вміст регістра IP (як і CS) можна змінювати командами переходу.
4.2.4. Регістр прапорів
Прапор - це біт, що приймає значення 1 ("прапор установлений"), якщо виконана деяка умова, і значення 0 ("прапор скинутий ") у протилежному випадку. В ЕОМ використовується 9 прапорів, причому конструктивно вони зібрані в один 16-розрядний регістр, що називається регістром прапорів і позначається як Flags. Кожний прапор - це один із розрядів даного регістра (деякі розряди регістра не зайняті) :
-
OF
DF
IF
TF
SF
ZF
AF
PF
CF
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Деякі прапори прийнято називати прапорами умов; вони автоматично змінюються при виконанні команд і фіксують ті або інші властивості їхнього результату (наприклад, дорівнює чи він нулю ?); перевірка цих прапорів дозволяє проаналізувати результати команд. Інші прапори називаються прапорами станів; самі по собі вони не змінюються, і змінювати їх повинна програма; стан цих прапорів впливає на подальше поводження процесора.
4.3 Сегментація та адресація оперативної пам'яті
Як було показано, оперативна пам'ять ЕОМ типу IBM PC із процесором 8086 складається з 1 048 576 байт (комірок). Кожний байт має своє унікальне місце розташування, називане фізичною адресою, по якому програми можуть читати і записувати інформацію.
Тому що байти оперативної пам'яті нумеруються, починаючи з нуля, і нумерація байтів виконується в двійкової системи числення, то, очевидно, що формування адреси (адресації) будь-якого байта цього мегабайтного простору потребує наявності як мінімум 20 бітів. Процесор 8086 опрацьовує інформацію по два байти. Його регістри можуть зберігати 16-бітові числа (у даному випадку - адреси) із значеннями від нуля до 65535, але жодний із них не може працювати з 20-бітами.
Тому, для вказівки повной мегабайтної адреси в процесорі 8086 використовується метод сегментації пам'яті, що дозволяє поділ усього простору пам'яті на логічні 64 Кбайтові фрагменти (блоки). За допомогою цього методу адреса конкретного байта може бути виражена двома значеннями : адресою сегмента (фрагмента) пам'яті і 16-бітовим зміщенням від його (сегмента) початку. Комбінація значень сегмента і зміщення називається логічною адресою і записується через двокрапку як сегмент : зміщення.
Для визначення початків сегментів пам'яті процесор 8086 використовує чотири 16-бітові сегментних регістри (CS - код; DS - дані; SS - стек; ES - додаткові дані), а для звернення до байта всередині сегмента - 16-розрядне зміщення. Створення 20-бітової фізичної адреси виконується процесором шляхом множення вмісту одного із сегментних регістрів на 1610 = 1016 (тобто зміщення вліво на 4 біти) і додавання до результату зміщення. При цьому виходить, що межі сегментів розташовуються через кожні 16 байтів фізичних адрес і в мегабайтному просторі може існувати максимально 65 536 таких меж сегментів (1048576 : 16 =65536). Розмір пам'яті 16 байтів називається параграфом.
Приклад: Нехай, логічна адреса подана шістнадцятковим значенням 145F:0032.
Використовуючи формулу сегмент * 16 + зміщення = фізична адреса, одержимо:
1 4 5 F * 1 6 = 1 4 5 F 0 (додали нуль наприкінці шістнадцяткового числа)
+
0 0 3 2
---------
1 4 6 2 2 Логічній адресі 145F:0032 відповідає фізична адреса 14622.
Нижче перераховані відомості про сегменти необхідно запам'ятати.
* Сегменти - це логічні вікна, через які програми переглядають області пам'яті зручними, у 64 Кбайти порціями. У пам'яті сегменти фізично не виділені.
* Кожному логічному значенню сегмента (0, 1, 2, ... , 65535)d = (0,1 ,2 , ... , FFFF )h
відповідає фізична межа параграфа (0,16,32, ... ,1048560)d = (0,10,20, ... , FFFF0)h
* Розміри сегментів можуть змінюватися від 10h (байт) до FFFFh (байт) і визначаються програмою користувача.
* Сегменти звичайно фізично розташовуються в пам'яті один за одним, проте можуть і перекриватися. При цьому той самий байт у пам'яті може мати різноманітні логічні адреси, що визначаються різними, але при цьому еквівалентними парами сегмент:зміщення. Але, незважаючи на це, кожний байт має тільки одну 20-бітову фізичну адресу. Так логічні адреси 1000:4622, 1400:0622, 1462:0002 однозначно визначають одну фізичну адресу 14622.
4.4. Представлення символьних даних
Серед даних, що зберігаються й обробляються в ЕОМ, значну частину складають символи. Це програми на алгоритмічних і машинно-орієнтованих мовах, довідкові дані і тексти коментарів для реалізації діалогу користувач - ЕОМ, облікові дані, пояснення і заголовки формованих документів і т.д. Саме вони забезпечують можливість спілкування з ЕОМ при впровадженні найрізноманітніших систем обробки інформації.
Символи (букви латинського і російського алфавітів, арабські цифри від 0 до 9, множина спеціальних символів: + , - , / , * , @ , $ , ? , % та ін.), як і будь-яка інша інформація, повинні зберігатися в ЕОМ у числовій формі. Для цього кожному символу ставиться у відповідність деяке невідмінне число, що називається кодом символа, і це число записується в пам'ять ЕОМ у двійковому вигляді. Конкретна відповідність між символами і їхніми кодами називається системою кодування.
У ЕОМ з MS DOS код кожного символу зберігається в одному байті, тому коди символів можуть приймати значення від 0 до 255. Такі кодування називаються однобайтними, вони дозволяють використовувати до 256 різноманітних символів.
Програми, що працюють під керуванням операційної системи DOS, звичайно використовують систему кодування ASCII (американський стандартний код для обміну інформації). У ній не передбачені коди для букв російського алфавіту, тому звичайно використовуються варіанти цієї системи кодування, в які включають букви російського алфавіту. Найчастіше, мабуть, використовується варіант, відомий під назвою "Альтернативне кодування". Таблиця ASCII-символів і їхнє уявлення в 10-й і 16-й формі наведена наведена нижче:
┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
│ C к10 16│ C к10 16│ C к10 16│ C к10 16│ C к10 16│ C к10 16│ C к10 16│ C к10 16│
├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ 32 20│ ! 33 21│ " 34 22│ # 35 23│ $ 36 24│ % 37 25│ & 38 26│ ' 39 27│
│ ( 40 28│ ) 41 29│ * 42 2A│ + 43 2B│ , 44 2C│ - 45 2D│ . 46 2E│ / 47 2F│
│ 0 48 30│ 1 49 31│ 2 50 32│ 3 51 33│ 4 52 34│ 5 53 35│ 6 54 36│ 7 55 37│
│ 8 56 38│ 9 57 39│ : 58 3A│ ; 59 3B│ < 60 3C│ = 61 3D│ > 62 3E│ ? 63 3F│
│ @ 64 40│ A 65 41│ B 66 42│ C 67 43│ D 68 44│ E 69 45│ F 70 46│ G 71 47│
│ H 72 48│ I 73 49│ J 74 4A│ K 75 4B│ L 76 4C│ M 77 4D│ N 78 4E│ O 79 4F│
│ P 80 50│ Q 81 51│ R 82 52│ S 83 53│ T 84 54│ U 85 55│ V 86 56│ W 87 57│
│ X 88 58│ Y 89 59│ Z 90 5A│ [ 91 5B│ \ 92 5C│ ] 93 5D│ ^ 94 5E│ _ 95 5F│
│ ` 96 60│ a 97 61│ b 98 62│ c 99 63│ d 100 64│ e 101 65│ f 102 66│ g 103 67│
│ h 104 68│ i 105 69│ j 106 6A│ k 107 6B│ l 108 6C│ m 109 6D│ n 110 6E│ o 111 6F│
│ p 112 70│ q 113 71│ r 114 72│ s 115 73│ t 116 74│ u 117 75│ v 118 76│ w 119 77│
│ x 120 78│ y 121 79│ z 122 7A│ { 123 7B│ ¦ 124 7C│ } 125 7D│ ~ 126 7E│ ⌂ 127 7F│
├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤
│ А 128 80│ Б 129 81│ В 130 82│ Г 131 83│ Д 132 84│ Е 133 85│ Ж 134 86│ З 135 87│
│ И 136 88│ Й 137 89│ К 138 8A│ Л 139 8B│ М 140 8C│ Н 141 8D│ О 142 8E│ П 143 8F│
│ Р 144 90│ С 145 91│ Т 146 92│ У 147 93│ Ф 148 94│ Х 149 95│ Ц 150 96│ Ч 151 97│
│ Ш 152 98│ Щ 153 99│ Ъ 154 9A│ Ы 155 9B│ Ь 156 9C│ Э 157 9D│ Ю 158 9E│ Я 159 9F│
│ а 160 A0│ б 161 A1│ в 162 A2│ г 163 A3│ д 164 A4│ е 165 A5│ ж 166 A6│ з 167 A7│
│ и 168 A8│ й 169 A9│ к 170 AA│ л 171 AB│ м 172 AC│ н 173 AD│ о 174 AE│ п 175 AF│
│ ▀ 176 B0│ ▄ 177 B1│ █ 178 B2│ │ 179 B3│ ┤ 180 B4│ ╡ 181 B5│ ╢ 182 B6│ ╖ 183 B7│
│ ╕ 184 B8│ ╣ 185 B9│ ║ 186 BA│ ╗ 187 BB│ ╝ 188 BC│ ╜ 189 BD│ ╛ 190 BE│ ┐ 191 BF│
│ └ 192 C0│ ┴ 193 C1│ ┬ 194 C2│ ├ 195 C3│ ─ 196 C4│ ┼ 197 C5│ ╞ 198 C6│ ╟ 199 C7│
│ ╚ 200 C8│ ╔ 201 C9│ ╩ 202 CA│ ╦ 203 CB│ ╠ 204 CC│ ═ 205 CD│ ╬ 206 CE│ ╧ 207 CF│
│ ╨ 208 D0│ ╤ 209 D1│ ╥ 210 D2│ ╙ 211 D3│ ╘ 212 D4│ ╒ 213 D5│ ╓ 214 D6│ ╥ 215 D7│
│ ╪ 216 D8│ ┘ 217 D9│ ┌ 218 DA│ ■ 219 DB│ ░ 220 DC│ ▌ 221 DD│ ▐ 222 DE│ ▒ 223 DF│
│ р 224 E0│ с 225 E1│ т 226 E2│ у 227 E3│ ф 228 E4│ х 229 E5│ ц 230 E6│ ч 231 E7│
│ ш 232 E8│ щ 233 E9│ ъ 234 EA│ ы 235 EB│ ь 236 EC│ э 237 ED│ ю 238 EE│ я 239 EF│
│ Ё 240 F0│ ё 241 F1│ Є 242 F2│ є 243 F3│ Ї 244 F4│ ї 245 F5│ ± 246 F6│ ≈ 247 F7│
│ ▬ 248 F8│ • 249 F9│ · 250 FA│ √ 251 FB│ ♦ 252 FC│ ○ 253 FD│ ● 254 FE│ 255 FF│
└─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
Аналіз таблиці ASCII-кодів, дозволяє констатувати таке:
* Код пробілу менше коду будь-якої букви і цифри і взагалі менше коду будь-якого символу.
* Коди цифр упорядковані по зростанню і йдуть без пропускань.
* Коди великих латинських букв упорядковані відповідно до алфавіту і також йдуть без пропускань.
* Усе те ж саме вірно і для малих латинських букв.
* У альтернативній кодировкі коди російських букв (великих і малих) упорядковані відповідно до алфавіту, але якщо коди великих букв йдуть без пропускань, то між кодами малих букв 'п' і 'р' вклиниваються коди інших символів.
4.5. Основи взаємодії користувача з ЕОМ
Після вмикання ЕОМ типу IBM PC автоматично здійснюється тестування пристроїв, потім завантаження операційної системи DOS і в командному рядку екрана з'являється запрошення до роботи, наприклад C:\>_ .
Поява запрошення означає, що одна із складових частин DOS - системний модуль, що називається командним процесором ( файл command. com ), готовий до прийому команд користувача.
Командний процесор ЗАВАНТАЖУЄ в ОП системну або прикладну програму ("задачу"), що належить до одного з двох типів, яким відповідають розширення імен програмних файлів exe і com, і ПЕРЕДАЄ їй КЕРУВАННЯ.
Програміст взаємодіє з "задачею", а не з DOS, аж до її закінчення, після чого знову вступає в дію командний процесор.
Формат команди DOS складається з трьох полів: Ім'я [Параметр[,Параметр]] [Ключ[,Ключ]]
У полі Ім'я вказується ім'я команди (програми). Це обов'язковий елемент.
У полі Параметр звичайно вказуються ті об'єкти, з якими має справу дана команда (програма). Це імена накопичувачів, каталогів, файлів, зовнішніх пристроїв.
У полі Ключ указуються різноманітні модифікації і режими у виконанні команди (програми).
Наприклад, для завантаження в ОП сервісної програми наладжувача (файл debug.com) і передачі їй керування необхідно: у командному рядку монітора набрати ім'я цієї програми debug і натиснути клавішу 'Enter'.
4.6. DEBUG. COM
Налагоджувач Debug дозволяє переглядати пам'ять, змінювати вміст комірок пам'яті, вводити програми і дані, а також здійснювати трасування (тобто покрокове виконання машинних команд) програм.
У Debug всі операції виконуються тільки в шістнадцятковій системі числення.
Для створення середовища наладжувача debug необхідно набрати в командному рядку монітора ім'я програми debug.com і натиснути <Enter>. У випадку успішного завантаження наладжувача на екрані з'явиться запрошення для введення команди у вигляді рисочки " - ".
Основні команди наладжувача DEBUG. COM:
Q - припинити роботу наладжувача Формат команди: Q
D - перегляд вмісту ділянки пам'яті Формати команди:
D {сегмент}:{стартове зміщення} - перегляд 128 байт пам'яті, починаючи зі стартового зміщення.
D {сегмент}:{стартове зміщення} {кінцеве зміщення} - перегляд вмісту пам'яті від стартового зміщення до кінцевого.
D {сегмент}:{стартове зміщення} L {кількість байт} - перегляд заданої кількості байтів, починаючи зі стартового зміщення.
Команда D запам'ятовує адресу останнього поданого байта, тому, вводячи команду D без параметрів, можна послідовно переглядати вміст пам'яті, "порціями" по 128 байт.
E - безпосередня зміна даних у пам'яті.
Формати команди: E {сегмент}:{стартове зміщення }<Пробіл> {список цифрових даних}
E {сегмент}:{стартове зміщення }<Пробіл> {'список символьних данных'}
- зміна даних у пам'яті, починаючи зі стартового зміщення.
E {сегмент}:{стартове зміщення }- на екрані стартове зміщення, вміст байта в 16-й с/ч, точка і пікування введення. Вводимо {нове значення} <Enter>
Якщо замість нового значення байта ввести "Пробіл", то старе значення байта не зміниться. Можна також продовжувати вводити і нові значення наступних байтів, розділяючи їх пробілами.
R - перегляд вмісту регістрів процесора з можливістю наступної зміни вмісту одного з регістрів.
Формати команди: R <Enter> - одночасний перегляд вмісту всіх регістрів.
R{регістр} - на екрані старий вміст, вводим нове значение - перегляд вмісту регістра і його зміна. Якщо замість нового вмісту ввести "Пробіл", те вміст регістра не змінюється.
N - присвоїти програмі ім'я для наступного її зчитування або запису на магнітний носій.
Формат команди: N {ім'я файла} <Enter>
W - запис програми з ім'ям, заданим у команді N. Перед використанням команди W необхідно командою R занести в регістр CX розмір програми, а в регістр BX -> 0.
Формати команди: W {сегмент}:{стартове зміщення }<Enter> - запис програми, починаючи з адреси {сегмент}:{стартове зміщення }, довжиною зазначеною в регістрі CX.
4.7. Приклад кодування символьної інформації
1) Складемо текст і размітимо його:
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 < - порядковий номер символа
_ K a z e n o v _ V . E . _ 1 <----------
_ _ _ _ 3 2 0 0 5 2 _ _ _ _ 2 |
D n e p r o p e t r o v s k 3 номери рядків
_ s t . R a b o c h a y _ _ 4 |
_ t e l . 4 5 - 3 4 – 4 5 _ 5 <---------
2) Використовуючи таблицю ASCII-символів, закодуємо символи тексту їх шістнадцятковими кодами.
Завершуючи кожний рядок тексту (порцію інформації з 14 символів) ознакою кінця рядка (код 13d=0Dh - CR) і ознакою перекладу рядка (код 10d=0Ah - LF), одержимо таку послідовність кодів:
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 < - порядковий номер символа
20 4B 61 7A 65 6E 6F 76 20 56 2E 45 20 20 0D 0A 1 <---------
20 20 20 20 33 32 30 30 35 32 20 20 20 20 0D 0A 2 |
44 6E 65 70 72 6F 70 65 74 72 6F 76 73 6B 0D 0A 3 номери рядків
20 73 74 2E 52 61 62 6F 63 68 61 79 20 20 0D 0A 4 |
20 74 65 6C 2E 34 35 2D 33 34 2D 34 35 20 0D 0A 5 <---------
3) Створимо середовище наладжувача debug. com: У командному рядку F:\912\91205>_ наберемо ім'я файла debug
Якщо все нормально, на екрані з’явиться "-" - запрошення DEBUG.
4) Визначемо розмір пам'яті ЕОМ. Це значення завжди! знаходиться в комірках пам'яті 00413h і 00414h. Переглянемо його з DEBUG : -d 0040:0013 L 2 <Enter> 0040:0010 80 02
80 02 - ємність пам'яті в кілобайтах, причому байти розташовуються в зворотній послідовності. (Це принцип зберігання інформації в ЕОМ, де старший байт зберігається за старшою адресою, а молодший байт - за молодшою). Переведемо отримане число в десяткову систему числення, одержимо, що ємність пам'яті даної ЕОМ = 640 Кбайт.
5) Визначимо серійний номер ПЕОМ. Він "зашитий" за адресою FE000h. Щоб побачити його, виведемо на екран вміст перших 25 байтів: -d fe00:0000 L 19 <Enter>
FE00:0000 31 35 30 31 35 31 32 20 43 4F 50 52 2E 20 49 42 1501512 COPR. IB
FE00:0010 4D 20 31 39 39 31 D7 E0 7E M 1991. .~
У результаті на екрані з'явився серійний семизначний номер ЕОМ і дата (у шістнадцятковій і символьній формах).
6) Визначимо дату запису BIOS у ПЗП. Він “зашитий” у 8-ми байтах з адреси FFFF5h: -d ffff:0005 L 8
FFFF:0000 30 38 2F-30 38 2F 39 33 08/08/93
7) Введення закодованного тексту
За умовою він повинен бути розташований, починаючи з адреси DS:0100 і займати 16*5+2=82d=50h байт.
Переглянемо вміст 50h байт пам'яті цієї області : -d ds:0100 L 50, а потім введемо закодований текст :
-e ds:0100 20 4B 61 7A 65 6E 6F 76 20 56 2E 45 20 20 0D 0A
-e ds:0110 20 20 20 20 33 32 30 30 35 32 20 20 20 20 0D 0A
-e ds:0120 44 6E 65 70 72 6F 70 65 74 72 6F 76 73 6B 0D 0A
-e ds:0130 20 73 74 2E 52 61 62 6F 63 68 61 79 20 20 0D 0A
-e ds:0140 20 74 65 6C 2E 34 35 2D 33 34 2D 34 35 20 0D 0A
Ще разом переглянемо дамп пам'яті, починаючи з адреси DS:0100: -d ds:0100 L 50
2CBE:0100 20 4B 61 7A 65 6E 6F 76 20 56 2E 45 20 20 0D 0A Kazenov V.E. ..
2CBE:0110 20 20 20 20 33 32 30 30 35 32 20 20 20 20 0D 0A 320052 ..
2CBE:0120 44 6E 65 70 72 6F 70 65 74 72 6F 76 73 6B 0D 0A Dnepropetrovsk..
2CBE:0130 20 73 74 2E 52 61 62 6F 63 68 61 79 20 20 0D 0A st.Rabochay ..
2CBE:0140 20 74 65 6C 2E 34 35 2D 33 34 2D 34 35 20 0D 0A tel.45-34-45 ..
8) Збережемо введений нами текст у файлі LR1. TXT на магнітному носії.
1)-N lr1.txt <Enter> 2)-R BX <Enter> 3)-R CX <Enter> 4)-W ds:0100 <Enter>
BX 3CF0 CX 0000 Writing 0050 bytes
:0000 <Enter> :0050 <Enter>
9) Вийдемо із середовища DEBUG по команді Q.
10) У середовищі NC підведемо курсор до файла lr1.txt і натиснемо F3. На екрані з'явиться вміст цього файла.
Kazenov V. E
320052
Dnepropetrovsk
st. Rabochay
tel. 45-34-45
Натиснувши клавішу F4, на екрані бачимо шістнадцяткове і символьне представлення тексту.
00000000 20 4B 61 7A 65 6E 6F 76 20 56 2E 45 20 20 0D 0A Kazenov V.E. ..
00000010 20 20 20 20 33 32 30 30 35 32 20 20 20 20 0D 0A 320052 ..
00000020 44 6E 65 70 72 6F 70 65 74 72 6F 76 73 6B 0D 0A Dnepropetrovsk..
00000030 20 73 74 2E 52 61 62 6F 63 68 61 79 20 20 0D 0A st.Rabochay ..
00000040 20 74 65 6C 2E 34 35 2D 33 34 2D 34 35 20 0D 0A tel.45-34-45 ..
5. Література
1. Л. Скэнлон Персональные ЭВМ IBM PC и XT. Программирование на языке ассемблера: Пер. с англ. - М. :Радио и связь. 1989г. (Стр. 10 - 26);
2. Абель П. Язык Ассемблера для IBM PC и программирования: Пер. с англ. - М. :Высш. шк. , 1992 р. (Стр. 17 - 32);
Лабораторна робота N 2
Регістрова, пряма і безпосередня адресація операндів у процесорі 8086.
