Скачиваний:
17
Добавлен:
11.04.2015
Размер:
17.57 Кб
Скачать
  1. Методы адресации.

Режим адресации

Формат операнда

Регистр сегмента

Примеры

1

2

3

4

Регистровый

Регистр

Не используется

mov ax, cx

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

Данное

Не используется

mov cx, 500

mov ax, -30

Прямой

Сдвиг, метка

DS

mov ax, tab

Косвенный регистровый

[bx]

[bp]

[di]

[si]

DS

SS

DS

DS

mov bx, offset tab

mov ax, [bx]

По базе

[bx]+сдвиг

[bp]+сдвиг

DS

SS

mov bx, offset tab

* mov ax, [bx]+4

* mov ax, 4 [bx]

* mov ax, [bx+4]

Прямой с индексированием

[di]+ сдвиг

[si]+ сдвиг

DS

DS

mov di, 2

mov al, b_tab[di]

По базе с индексированием [здесь “сдвиг” может быть опущен]

[bx][si]+ сдвиг

[bx][di]+ сдвиг

[bp][si]+ сдвиг

[bp][di]+ сдвиг

DS

DS

SS

SS

mov ax,tab[bx][di]

или

mov ax,tab[bx+di]+ сдвиг

Примечание:

1) "сдвиг" может быть как положительным, так и отрицательным;

2) столбец " регистр сегмента" говорит о том, из какого сегмента берутся данные при выполнении команд;

3) команды, помеченные *, могут быть записаны одним из указанных способов.

Пример: сравнить два значения и вывести на экран сообщение, которое из них больше.

dseg segment ;заголовок сегмента данных

mesl db 'а больше b',l 0,13,'$' ; сообщение

mes2 db 'b больше a',10,13,'$' ; сообщение

a db 10 ; а - байт равный 10

b db 15 ; b — байт равный 15

dseg ends ; конец сегмента данных

cseg segment ; начало кодового сегмента

assume cs:cseg,ds:dseg

start: mov ax,dseg ; инициализация регистра

mov ds,ax ; сегмента данных

mov al,a ; а пересылается в регистр al

cmp al,b ; сравнение а и b

jge m1 ;если а больше, то идём на метку

m1

mov ah,9 ; иначе печатаем сообщение,

lea dx,mes2 ; что b больше а int 21h

jmp quit ; переход на выход в DOS

ml: mov ah,9 ; печатаем сообщение,

lea dx,mes1 ; что а больше b

int 21 h

quit: mov ah,4ch ; выход в DOS int 21 h

cseg ends ;конец кодового сегмента

end start ; точка входа

Соседние файлы в папке Ответы по пунктам