Въведение в програмирането на асемблерен език, страница 7
За сравнително прости програми, които използват един сегмент за код, данни и стек, което е типично за повечето разработени асемблерни програми, се използват така наречените директиви за опростено сегментиране. В този случай, преди да посочите сегменти, трябва да посочите специална директива за определяне на модела на паметта -model. Тази директива асоциира сегменти, които в този случай имат предварително дефинирани имена със сегментни регистри, и прави възможно значително опростяване на дизайна на програмите за асемблиране. Например, сегменти, декларирани с опростени директиви, не е необходимо да се прекратяват (затварят) с директиватаends,, както се изисква за стандартните дефиниции на сегменти. Те се затварят автоматично веднага щом асемблерът срещне нова директива за дефиниране на сегмент или края на програмата. Описанието на сегментите в същото време се отваря от директивите:.code,.dataи.stack. Точките преди името на директивите просто показват, че принадлежат към директивите за опростени сегменти.
Следователно следващият ред на асемблерна програма обикновено съдържа директива, която указва типа процесор, за който се пише програмата. По подразбиране асемблерите използват 8086 процесорен набор от инструкции с 16-битови операнди и сегментни отмествания. В набора от инструкции на всеки следващ модел на процесора от семейството X86 бяха добавени нови инструкции към основния набор от инструкции и това трябва да бъде посочено в програмата чрез съответната директива за определяне на набора от валидни инструкции. Например, за да могат да се асемблират всички инструкции на процесора 80486, е необходимо да се въведе директивата.486p. За да можете да сглобите всички команди на 6-то поколение процесори от семейството X86 (доPentium III), трябва да зададете директивата.686pи т.н.
Ако е налице директивата.386или по-висока, асемблерите винаги дефинират всички сегменти като 32-битови, освен ако операндът на директиватаuse16на модела на паметта не е изрично указан. В този случай за MASM и TASM Assemblers е препоръчително да посочите директивата за указване на валидни команди в реда преди реда с директиватаmodel. Например:
модел малка употреба16
След това следвайте директивите на използваните сегменти, както и съдържащите се в тях директиви за асемблер и инструкции за процесора.
Аргументите към директиватаmodelса шест модела памет.
-Tiny-програмите, данните и стекът са разположени в един и същи сегмент с размер до 64 KB.
-Малките-програми са разположени в отделен сегмент, а данните и стекът са в друг, общ.
- ПрограмитеCompact-са разположени в отделен сегмент и могат да се използват множество сегменти за съхраняване на данни.
- ПрограмитеMedium-са разположени в няколко сегмента и всички данни са в един.
-Големи-и програмите и данните могат да обхващат множество сегменти.
-Плосък–модел, подобен наTiny,с 32-битов 4GB сегмент.
Най-често използваните са моделътtinyи моделътsmall.
Пример за програма, използваща модел памет от типtiny.
; Показва съобщението "Здравей другарю!" и завършва.
.модел мъничък ; Модел на паметта за COM файлове.
.код Началото на кодов сегмент.
org 100h ; Първоначалната стойност на брояча е 100h.
съобщение db ‘Здравей другарю’, 0dh, 0ah, ‘$’ ; изходна линия.
основен: mov ah, 9; Номер на DOS функция → в AH.
movdx,офсетно съобщение; Адрес на линия → в DX.
int 21h; Извикване на системна функция на DOS.
ret; Прекратете програмата COM.
край основен ; Край на програмата.
Тук:0dh, 0ahи $са ASCII контролни символи:0dhе връщане на каретка,
0ahе нов ред и$е краят на ред.
- AltGTU 419
- AltGU 113
- AMPGU 296
- ASTU 266
- BITTU 794
- BSTU "Voenmekh" 1191
- BSMU 172
- BSTU 602
- BSU 153
- BSUIR 391
- БелГУТ 4908
- BSEU 962
- БНТУ 1070
- BTEU PK 689
- БрСУ 179
- ВНТУ 119
- VGUES 426
- ВлГУ 645
- VMEDA 611
- ВолгГТУ 235
- ВНУ им. Далия 166
- VZFEI 245
- ВятГША 101
- ВятГГУ 139
- ВятГУ 559
- GGDSK 171
- GomGMK 501
- GSMU 1967
- GSTU im. Сухой 4467
- ГСУ им. Скарина 1590г
- GMA им. Макарова 300
- ГДПУ 159
- DalGAU 279
- DVGGU 134
- DVGMU 409
- DVGTU 936
- DVGUPS 305
- FEFU 949
- ДонГТУ 497
- DITM MNTU 109
- IVGMA 488
- IGHTU 130
- ИжГТУ 143
- KemGPPC 171
- KemGU 507
- KSMTU 269
- Киров АТ 147
- KGKSEP 407
- KGTA им. Дегтярев 174
- КнАГТУ 2909
- КрасГАУ 370
- КрасГМУ 630
- KSPU им. Астафиева 133
- KSTU (SFU) 567
- КГТЕИ (СФУ) 112
- PDA № 2 177
- КубГТУ 139
- КубСУ 107
- KuzGPA 182
- КузГТУ 789
- MSTU им. Носова 367
- МГУ ги. Сахарова 232
- IPEC 249
- МГПУ 165
- МАИ 144
- МАДИ 151
- MGIU 1179
- MGOU 121
- MGSU 330
- Московски държавен университет 273
- МГУКИ 101
- MGUPI 225
- MGUPS (MIIT) 636
- МГУТУ 122
- MTUCI 179
- ХАЙ 656
- TPU 454
- NRU MPEI 641
- НМСУ "Горни" 1701
- ХПИ 1534
- НТУУ "КПИ" 212
- НУК тях. Макарова 542
- HB 777
- NGAVT 362
- NSAU 411
- NGASU 817
- NGMU 665
- NGPU 214
- NSTU 4610
- НГУ 1992г
- NSUE 499
- NII 201
- OmGTU 301
- OmGUPS 230
- СПбПК №4 115
- PGUPS 2489
- ПСПУ им. Короленко 296
- ПНТУ им. Кондратюк 119
- RANEPA 186
- ROAT MIIT 608
- RTA 243
- RSHU 118
- РГПУ им. Херцен 124
- РГППУ 142
- RSSU 162
- "МАТИ" - РГТУ 121
- РГУНиГ 260
- REU ги. Плеханов 122
- РГАТУ им. Соловьова 219
- RyazGMU 125
- RGRTU 666
- SamGTU 130
- СПбГАСУ 318
- INGECON 328
- СПбГИПСР 136
- СПбГЛТУ им. Киров 227
- СПбГМТУ 143
- СПбГПМУ 147
- SPbGPU 1598
- СПбГТИ (ТУ) 292
- СПбГТУРП 235
- Държавен университет в Санкт Петербург 582
- GUAP 524
- СПбГУНИПТ 291
- СПбГУПТД 438
- СПбГУСЕ 226
- СПбГУТ 193
- СПГУТД 151
- SPbGUEF 145
- Електротехнически университет в Санкт Петербург "LETI" 380
- ПИМаш 247
- NRU ITMO 531
- СГТУ им. Гагарина 114
- СахСУ 278
- SZTU 484
- СибАГС 249
- СибГАУ 462
- СибГИУ 1655 г
- СибГТУ 946
- SGUPS 1513
- СибГУТИ 2083
- СибУПК 377
- SFU 2423
- SNAU 567
- SSU 768
- TRTU 149
- ТОГУ 551
- TGEU 325
- TSU (Томск) 276
- TSPU 181
- ТулГУ 553
- УкрГАЖТ 234
- UlGTU 536
- UIPCPRO 123
- USPU 195
- USTU-UPI 758
- UGNTU 570
- USTU 134
- ХГАЕП 138
- KhSAFC 110
- HNAGH 407
- HNUVD 512
- KhNU им. Каразина 305
- ХНУРЕ324
- KhNEU 495
- Процесор 157
- ЧитГУ 220
- SUSU 306
За да отпечатате файла, изтеглете го (във формат Word).