Введення в технологію програмування мовою Асемблера, сторінка 7

Для досить простих програм, що використовують по одному сегменту для коду, даних і стека, що характерно для більшості асемблерних програм, що розробляються, використовуються так звані спрощені директиви сегментації. У цьому випадку перед завданням сегментів слід вказати спеціальну директиву вказівки моделі пам'яті –model. Ця директива пов'язує сегменти, які в цьому випадку мають зумовлені імена з сегментними регістрів, і дозволяє суттєво спростити оформлення асемблерних програм. Наприклад, сегменти, оголошені спрощеними директивами, не потрібно закінчувати (закривати) директивоюends,як це потрібно за стандартного завдання сегментів. Вони закриваються автоматично, коли Асемблер виявляє нову директиву визначення сегмента чи кінець програми. Опис сегментів, при цьому, відкриваються директивами:.code,.dataі.stack. Крапки перед ім'ям директив вказують на належність їх до спрощених директив сегментів.

Тому в наступному рядку асемблерної програми зазвичай визначається директива, що визначає тип процесора, для якого пишеться програма. За умовчанням асемблери використовують набір команд базового процесора 8086 з 16-розрядними операндами і зміщеннями в сегментах. У системі команд кожної наступної моделі процесора сімейства Х86 до базової системи команд додавалися нові команди, і це має бути зазначено в програмі відповідною директивою завдання набору допустимих команд. Наприклад, щоб можна було асемблювати всі команди процесора 80486, необхідно навести директиву.486р. Для можливості асемблювання всіх команд процесорів 6-го покоління сімейства Х86 (доPentium III), необхідно задати директиву.686р, і т.п.

Якщо є директива.386і вище, асемблери завжди визначають всі сегменти як 32-розрядні, за умови, що не вказано явно операнд директиви моделі пам'ятіuse16. При цьому для асемблерів MASM і TASM директиву завдання допустимих команд доцільно вказувати в рядку перед рядком з директивоюmodel. Наприклад:

model small use16

Потім слідують директиви використовуваних сегментів, а також директиви асемблера і команди процесора, що містяться в них.

Аргументами директивиmodelє шість моделей пам'яті.

-Tiny-програми, дані та стек розташовуються в тому самому сегменті розміром до 64 Кбайт.

-Small-програми розташовуються в окремому сегменті, а дані та стек в іншому, загальному.

-Compact-програми розміщуються в окремому сегменті, а для зберігання даних можуть використовуватися кілька сегментів.

-Medium-програми розташовуються у кількох сегментах, проте дані – у одному.

-Large-та програми та дані можуть займати по кілька сегментів.

-Flatмодель, аналогічнаTiny,при 32-бітному сегменті розміром 4Гбайт.

Найбільш уживаними є модельtinyі модельsmall.

Приклад програми з використанням моделі пам'яті типуtiny.

; Виводить на екран повідомлення "Hello Comrade!" та завершується.

.model tiny ; Модель пам'яті при COM-файлах.

.code; Початок сегменту коду.

org 100h; Початкове значення лічильника – 100h.

message db 'Hello Comrade', 0dh, 0ah, '$'; рядок виведення.

main: mov ah, 9; Номер функції DOS → AH.

mov dx,offset message; Адреса рядка → DX.

int 21h; Виклик системної функції DOS.

ret; Завершення COM-програми.

end main; Кінець програми.

Тут:0dh, 0ahі $– керуючі символи ASCII:0dh– повернення каретки,

0ahпереклад рядка та$- закінчення рядка.

  • АлтДТУ 419
  • АлтДУ 113
  • АмПГУ 296
  • АГТУ 266
  • БІТТУ 794
  • БДТУ «Воєнмех» 1191
  • БДМУ 172
  • БДТУ 602
  • БДУ 153
  • БДУІР 391
  • БелДУТ 4908
  • БДЕУ 962
  • БНТУ 1070
  • БТЕУ ПК 689
  • БрДУ 179
  • ВНТУ 119
  • ВГУЕС 426
  • ВлДУ 645
  • ВМедА 611
  • ВолгДТУ 235
  • ВНУ ім. Даля 166
  • ВЗФЕД 245
  • ВятГСХА 101
  • ВятДГУ 139
  • ВятДУ 559
  • ГГДСК 171
  • ГомГМК 501
  • ДДМУ 1967
  • ДДТУ ім. Сухого 4467
  • ДМУ ім. Скорини 1590
  • ДМА ім. Макарова 300
  • ДДПУ 159
  • ДальГАУ 279
  • ДВДГУ 134
  • ДВДМУ 409
  • ДВГТУ 936
  • ДВГУПС 305
  • ДВФУ 949
  • ДонДТУ 497
  • ДІТМ МНТУ 109
  • ІвДМА 488
  • ІДХТУ 130
  • ІжДТУ 143
  • КемГППК 171
  • КемДУ 507
  • КДМТУ 269
  • КіровАТ 147
  • КДКСЕП 407
  • КДТА ім. Дегтярьова 174
  • КНАГТУ 2909
  • КрасГАУ 370
  • КрасДМУ 630
  • КДПУ ім. Астаф'єва 133
  • КДТУ (СФУ) 567
  • КДТЕІ (СФУ) 112
  • КПК №2 177
  • КубДТУ 139
  • КубДУ 107
  • КузДПА 182
  • КузДТУ 789
  • МДТУ ім. Носова 367
  • МДЕУ ім. Сахарова 232
  • МГЕК 249
  • МДПУ 165
  • МАІ 144
  • МАДІ 151
  • МДІУ 1179
  • МГОУ 121
  • МДСУ 330
  • МДУ 273
  • МГУКІ 101
  • МГУПД 225
  • МГУПС (МІІТ) 636
  • МГУТУ 122
  • МТУСІ 179
  • ХАІ 656
  • ТПУ 454
  • НДУ МЕІ 641
  • НМСУ «Гірський» 1701
  • ХПІ 1534
  • НТУУ «КПІ» 212
  • НУК ім. Макарова 542
  • НВ 777
  • НДАВТ 362
  • НДАУ 411
  • НДАСУ 817
  • НДМУ 665
  • НДПУ 214
  • НДТУ 4610
  • НГУ 1992
  • НГУЕУ 499
  • НДІ 201
  • ОмДТУ 301
  • ОмГУПС 230
  • СПбПК №4 115
  • ПГУПС 2489
  • ПДПУ ім. Короленка 296
  • ПНТУ ім. Кондратюка 119
  • РАНХіГС 186
  • РОАТ МІІТ 608
  • РТА 243
  • РДДМУ 118
  • РДПУ ім. Герцена 124
  • РДППУ 142
  • РДСУ 162
  • «МАТІ» — РДТУ 121
  • РГУНіГ 260
  • РЕУ ім. Плеханова 122
  • РДАТУ ім. Соловйова 219
  • РязГМУ 125
  • РДРТУ 666
  • СамДТУ 130
  • СПбДАСУ 318
  • Інжекон 328
  • СПбГІПСР 136
  • СПбГЛТУ ім. Кірова 227
  • СПбДМТУ 143
  • СПбГПМУ 147
  • СПбДПУ 1598
  • СПбГТІ (ТУ) 292
  • СПбДТУРП 235
  • СПбДУ 582
  • ГУАП 524
  • СПбГУНіПТ 291
  • СПбГУПТД 438
  • СПбГУСЕ 226
  • СПбГУТ 193
  • СПГУТД 151
  • СПбГУЕФ 145
  • СПбГЕТУ «ЛЕТИ» 380
  • ПІМаш 247
  • НДУ ІТМО 531
  • СДТУ ім. Гагаріна 114
  • СахДУ 278
  • СЗТУ 484
  • СибАГС 249
  • СибДАУ 462
  • СибДІУ 1655
  • СибДТУ 946
  • СГУПС 1513
  • СібГУТІ 2083
  • СибУПК 377
  • СФУ 2423
  • СНАУ 567
  • СумДУ 768
  • ТРТУ 149
  • ТОГУ 551
  • ТДЕУ 325
  • ТДУ (Томськ) 276
  • ТДПУ 181
  • ТулДУ 553
  • УкрДАЖТ 234
  • УлДТУ 536
  • УІПКПРО 123
  • УрДПУ 195
  • УГТУ-УПІ 758
  • УГНТУ 570
  • УДТУ 134
  • ХДАЕП 138
  • ХДАФК 110
  • ХНАГГ 407
  • ХНУВС 512
  • ХНУ ім. Каразіна 305
  • ХНУРЕ324
  • ХНЕУ 495
  • ЦПУ 157
  • ЧитДУ 220
  • ЮУрДУ 306
Повний список ВНЗ

Щоб надрукувати файл, скачайте його (у форматі Word).