На главную Назад
Добро пожаловать, уважаемый посетитель!

Впроцессоре 8088 имеется четыре 16-битовых регистров, которые мо-

гут приниматьучастие в адресации операндов.Один из них является

одновременно регистром общего назначения- регистр базы BX. Другие

Microsoft (R) Macro Assembler Version 5.00 11/17/88 21:42:25

Фиг 3.2 Адресация операндов Page1-1

 

PAGE,132

TITLEФиг 3.2 Адресация операндов

 

0000CODESEGMENT

 

ASSUME CS:CODE,DS:CODE,SS:CODE

 

0123ORG123H

0123????OPNDDW?

 

0200ORG200H

 

020043INCBX ; Увеличение регистра

0201FF 06 0123 RINCOPND; Увеличение ячейки памяти

0205FF 07INCWORD PTR [BX]; Увеличение слова памяти

 

0207FF 87 0123 RINC[OPND+BX]; Смещение плюс индекс

020BFF 84 0123 RINC[OPND+SI]

020FFF 84 0123 RINCOPND[SI]; Другой способ - тот же результат

0213FF 85 0123 RINCOPND + [DI]

0217FF 86 0123 RINC[OPND] + [BP]

 

021BFF 00INCWORD PTR [BX + SI]; База плюс индекс

021DFF 03INCWORD PTR [BP] + [DI]

 

021FFF 81 0123 RINC[OPND + BX + DI] ; База + индекс + смещение

0223FF 82 0123 RINCOPND[BP][SI]

 

0227CODEENDS

END

 

Фиг 3.2 Адресация операндов

три- этоуказатель базы (Base Poiner- BP),индекс источника

(Source Index -SI) и индекс назначения (DestinationIndex - DI).

ПрограммаможетиспользоватьрегистрыBP,SIиDI в качестве

16-битовых операндов, но отдельные байты в них недоступны. Основное

назначениеэтихрегистров-поставлять16-битовыезначения,

используемые в формировании адресов операндов.

Каждая команда в 8088 задает для выполнения некоторую операцию.

Разные операциимогут иметь отнуля до двухоперандов. Например,

командеразрешенияпрерыванийSetInterrupt(STI)операнды не

нужны. Команда увеличения (INC)требует, чтобы программист опреде-

лилодин операнд,- регистрили ячейкупамяти, - который должен

быть увеличенна еденицу. Команда ADD(сложение) должна иметь два

операнда -складываемые величины. Некоторыекоманды неявно задают

расположение операнда, но большинство команд позволяют программисту

выбиратьв качествеоперанда регистрили ячейкупамяти. Еслив

качестве операндавыбран регистр, топрограммисту остается только

указать его имя. Для указания же в качестве операнда участка памяти

у вас есть много различных способов.

Хорошимпримером служиткоманда INC.Она имеетединственный

операнд.На Фиг.3.2 изображенлистинг ассемблерас несколькими

различными вариантамикоманды INC. Перваякоманда INC называетв

качестве операнда регистр BX. Заметим,что в поле операндов в этом

случае кроме BX ничего нет. Остальные команды в примере указывают в

качестве операнда ячеку памяти. Ихотя в них иногда появляется имя

регистра BX,он не является здесьсамим операндом, а используется

для определения его адреса.


 

Mail.ru