Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prakt3.doc
Скачиваний:
9
Добавлен:
12.02.2016
Размер:
165.38 Кб
Скачать

Приклади адресації

{припустимо маємо наступні визначення для сегментів і даних}

DOSSEG

.MODEL SMALL

.STACK 100h

.DATA

HeM DB 'Hello, world',13,10,'$'

.CODE

mov ax,@data

mov ds,ax

mov ah,9

mov dx,OFFSET HeM

int 21h

Команда

Спосіб адресації

Результат

Машинний код

mov ds,ax

Регістрова

ds=5254

8ED8

mov si,7

mov di,11d

mov bp,0

mov bx,0

Безпосередня

si=0007

di=000B

bp=0000

bx=00000

BE0700

BE0B00

BD0000

DD0000

mov al,HeM

mov al,[HeM]

mov al,HeM+7

Пряма

al=48

al=48

al=77

A00000

A00000

A00700

mov al,[bp]

mov al,[bx]

Базова

al=64

al=48

8A4600

8A07

mov al,HeM[si]

mov al,[HeM+si]

mov al,[HeM][si]

mov al,[HeM].si

mov al,HeM.[si]

mov al,HeM.si

Індексна

al=77

8A840000

mov al,[bp][di]

mov al,[bx][si]

mov al,[bx+di+7]

mov al,[bp][si+HeM].7

Базово-індексна

al=00

al=6C

al=0A

al=00

8A03

8A00

8A4107

8A820007

mov ah,4ch

int 21h

END

Повертаючись до БСА, і враховуючи наведені способи адресації, зупинимось детальніше на форматі цього поля. Звернемо також, увагу на два останні біти КО, оскільки вони впливають на формування способу адресації.

1 0

7 6 5 4 3 2 1 0

...

d

w

mod

reg

r/m

КО

БСА

d –біт, що вказує напрям потоку між операндами.

w – визначає розмір операндів.

mod – двобітовий код, що вказує на тип адреси.

reg – трибітовий вказівник регістра

r/m – трибітовий вказівник регістру/пам’яті.

Позначення для регістрів:

Біти

w=0

w=1

000

AL

AX

001

CL

CX

010

DL

DX

011

BL

BX

100

AH

SP

101

CH

BP

110

DH

SI

111

BH

DI

Для сегментних регістрів :

00

ES

01

CS

10

SS

11

DS

Значення поля mod:

mod

Призначення

00

Біти r/m задають абсолютну адресу, а байт зміщення відсутній

01

Біти r/m задають абсолютну адресу, і присутній один байт зміщення

10

Біти r/m задають абсолютну адресу, і присутні два байти зміщення

11

Біти r/m задають регістр

Значення поля r/m:

Три біти r/m разом з бітами mod повністю визначають спосіб адресації.

r/m

mod = 00

mod = 01

mod = 10

mod=11

mod=11

w=0

w=1

000

BX+SI

BX+SI+ зміщення (1b)

BX+SI+ зміщення (2b)

AL

AX

001

BX+DI

BX+DI+ зміщення (1b)

BX+DI+ зміщення (2b)

CL

CX

010

BP+SI

BP+SI+ зміщення (1b)

BP+SI+ зміщення (2b)

DL

DX

011

BP+DI

BP+DI+ зміщення (1b)

BP+DI+ зміщення (2b)

BL

BX

100

SI

SI+ зміщення (1b)

SI+ зміщення (2b)

AH

SP

101

DI

DI+ зміщення (1b)

DI+ зміщення (2b)

CH

BP

110

ПРЯМА

BP+ зміщення (1b)

BP+ зміщення (2b)

DH

SI

111

BX

BX+ зміщення (1b)

BX+ зміщення (2b)

BH

DI

Приклади розшифрування машинних кодів.

Команда

Код

16-кова

2-кова

MOV AH,00

В4

10110 100 00000000

MOV AX,00

В8

10111 000 00000000

ADD BX,AX

03D8

0000 0011 11 011 000

MUL BX

F6E3

1111 0110 11 100 011

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]