Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ по арх и прогр МП.doc
Скачиваний:
64
Добавлен:
10.12.2013
Размер:
1.59 Mб
Скачать

5.1. Регистровая адресация

Регистровая адресация имеет место, если в команде указывается имя регистра, при этом учитывается размер операнда:

  • если в команде указан, например, AL, то операнд хранится в регистре AL и его размер равен одному байту. То же для всех однобайтных регистров.

  • Если в команде, например, BX, то операнд хранится в BX и имеет размер слова (два байта). То же для всех двухбайтных регистров.

Для хранения операндов и результатов могут использоваться РОН, индексные регистры и регистры-указатели.

Пример:

MOV AX, BX ; AX:=BX

ADD CX, AX ; CX:=AX

PUSH CX ; Затолкнуть в стек содержимое CX

5.2. Непосредственная адресация.

Операнд (8- или 16-разрядная константа) содержится непосредственно в теле команды, т.е. непосредственная адресация имеет место, если операнд указывается в команде численным значением (константа), в любой допустимой системе счисления (2,10,16). Т.к. результат по умолчанию сохраняется в первом операнде, нельзя адресовать непосредственно операнд, размещённый первым (т.е. нельзя MOV 15, AX).

Пример:

MOV AX, 100 ; AX:=100

ADD AX, 5 ; AX:=AX+5

MOV CX, 0FFFFH ; CX:=65535

5.3. Прямая адресация.

Прямая адресация имеет место, если операнд указывается именем, определённым в одном из сегментов.

Например:

MOV AX, X ; AX:=X ( Слово! )

ADD AH, B ; AH:=AH+B ( Байт! )

; где X и B ранее описаны

5.4. Косвенная регистровая.

Исполнительный адрес операнда (точнее, его смещение) содержится в одном из регистров BX, BP, SI или DI. Для указания косвенной адресации этот регистр должен заключаться в скобки:

MOV AX, [BX] ; AX:= слово, содержащееся по адресу DS:BX

Каждый из регистров по умолчанию работает со своим сегментным регистром: DS:BX; SS:BP; DS:SI; ES:DI. Допускается явное указание сегментного регистра, если он отличается от принятого по умолчанию:

MOV AX, ES:[BX]

Рис. 5.1. Косвенная адресация. Рис. 5.2. Адресация по базе.

5.5. Адресация по базе.

Базовый регистр BX или BP содержит базу (адрес начала некоторого сегмента памяти), относительно которой ассемблер вычисляет смещение.

Пример:

MOV AX, [BX]+10

5.6. Индексная адресация.

Один из индексных регистров SI или DI указывают положение элемента относительно начала некоторой области памяти. Пусть, например, AOB – массив байтов. Тогда:

MOV SI, 15 ; SI:=15

MOV AH, AOB[SI] ; AH:=[AOB+15], т.е. 16-й по порядку

; байт от начала массива

MOV SI, 0 ; SI:=0 MOV AOB[SI], AH

; пересылаем AH в первый элемент массива

Рис.5.3. Индексная адресация. Рис. 5.4. Адресация по базе с индексированием.

5.7. Адресация по базе с индексированием.

Вариант индексной адресации для случая, когда индексируемая область памяти задается своей базой.

Пример:

MOV AX, [BX][SI]

Этот тип индексации удобен при обработке двумерных массивов. Если, например, AOB рассматриваем как массив 10x10 байт, то для доступа к элементу AOB[2, 3] можно использовать фрагмент:

MOV BX, 20 ; BX:=20, база строки 2

MOV SI, 2 ; SI:=2, номер 3-го элемента

MOV AX, AOB[BX][SI] ; доступ к элементу

5.8. Контрольные задания.

1. Укажите правильную запись команды при непосредственной адресации второго операнда:

1) MOV AX, CX 4) MOV AL, 10

2) MOV AX, [BX] 5) MOV AX, TABLE

3) MOV AX, offset TABLE 6) MOV AX, [DI]

2. Укажите правильную запись команды при прямой адресации второго операнда:

1) MOV AX, CX 4) MOV AL, 10

2) MOV AX, [BX]+10 5) MOV AX, TABLE

3) MOV AX, OFFSET TABLE 6) MOV AX, [DI]

3. Укажите правильную запись команды для косвенной регистровой адресации второго операнда:

1) MOV AX, CX 4) MOV AL, 10

2) MOV AX, [BX] 5) MOV AX, TABLE

3) MOV AX, OFFSET TABLE 6) MOV AX, [DI]

4. Укажите правильную запись команды для адресации по базе второго операнда:

1) MOV AX, CX 4) MOV AL, 10

2) MOV AX, [BX]+10 5) MOV AX, TABLE

3) MOV AX, OFFSET TABLE 6) MOV AX, [DI]

5. Укажите правильную запись команды с индексированием второго операнда:

1) MOV AX, CX 4) MOV AL, 10

2) MOV AX, [BX] 5) MOV AX, TABLE

3) MOV AX, OFFSET TABLE 6) MOV AX, [DI]

6. Укажите правильную запись команды при регистровой адресации обоих операндов:

1) MOV AX, CX 4) MOV AL, 10

2) MOV AX, [BX] 5) MOV AX, TABLE

3) MOV AX, OFFSET TABLE 6) MOV AX, [DI]

7. Укажите правильную запись команды для прямой адресации первого операнда:

1) MOV AX, CX 4) MOV AX, TABLE [DI]

2) MOV AX, [BX] 5) MOV TABLE, AX

3) MOV AX, OFFSET TABLE

8. Укажите правильную запись команды для косвенной регистровой адресации первого операнда:

1) MOV AX, CX 4) MOV ES:[BX], 10

2) MOV [DI], [BX] 5) MOV AX, TABLE

3) MOV CX, OFFSET TABLE 6) MOV AX, [DI]

9. Укажите правильную запись команды с индексированием по базе второго операнда:

1) MOV AX, CX 4) MOV AX, TABLE [BX][DI]

2) MOV AX, TABLE [BP] 5) MOV TABLE[BP][SI], AX

3) MOV AX, OFFSET TABLE

10. Определить тип адресации второго операнда. Составить операционную схему выполнения команд.

1) MOV AL,20 3) PUSH AX

2) MOV AX,TAB 4) MOV TAB,20

5) MOV AX,CX 10) MOV BX,SI

6) MOV TAB,AL 11) MOV BP,20

7) MOV CX,[BX] 12) MOV [BP],20

8) MOV CX,ES:[BX+5] 13) MOV ES:[BP],20

9) MOV AX,[BX][DI+2] 14) MOV DS:[BP],20

11. Для каждой команды задания 10 нарисовать операционную схему, включить в эту схему УУ МП и указать все управляющие сигналы, которые выставляет УУ МП и для каких блоков и устройств ПК при исполнении

  • этой команды

  • закодированной в команде операции

  • чтения операндов в МП

  • записи результата операции

12. Для каждой команды задания 10 нарисовать операционную схему и регистр флагов, а в нем указать на какие флаги влияет результат операции.

13. Для каждой команды задания 10 нарисовать функциональную схему выполнения команды, включив в схему блоки МП и ОЗУ, а также шин адреса, данных, управления, связывающие эти блоки. На схеме указать имена и направления передачи сигналов для выполнения заданной команды, например, для этапа чтения команды из регистра команд схема может выглядеть как :

МП

ОЗУ

команда

CS:[IP]

чт

14. Для каждой команды, операционные схемы которых даны на рис. 5.5, 5.6, 5.7, 5.8 определить : размер выделенного штриховкой элемента; тип сегмента, в котором находится операнд; способы адресации операндов. Написать все допустимые варианты команд.

15. Составить команды для пересылки операнда из источника в приемник. Размер операнда, способ адресации, источники и приемники указаны в табл.5.1.

Таблица 5.1.

Размер операндов

Способ адресации

Источника

Приемника

1

Байт

Базово-индексн.

в доп. сегменте

Регистровый

2

Байт

Регистровый

Базовый со сдвигом

3

Слово

Индексн. со сдвигом

в доп. сегменте

Регистровый

4

Слово

Непосредственный

Прямой

5

Байт

Косвеная в стеке

Регистровый

6

Слово

Непосредственный

Регистровый

7

Слово

Непосредственный

Прямой в стеке

8

Байт

Регистровый

Индексн. В

доп. Сегменте