Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Презентации / 2-assembler-5.3.13.ppt
Скачиваний:
37
Добавлен:
11.04.2015
Размер:
365.57 Кб
Скачать

Работа с данными и адресами: операторы и директивы

OFFSET – вычислить смещение от начала сегмента в адресном выражении

ALIGN – установить начало очередных данных на границу указанного размера

PTR – установить размер указываемых данных

TYPE, LENGTHOF, SIZEOF – вычислить размер данных

LABEL – задать имя и тип адреса, без выделения памяти,

11

Адресация в Ассемблере

1. Регистровая адресация - операнды располагаются в любых регистрах общего назначения или сегментных регистрах

mov bx, ax

mov es, ax

2. Непосредственная адресация mov ax, 2

add ax, 2

3. Прямая адресация - если известен адрес операнда располагающегося в памяти

mov ax,es:0001 mov ax, es:word_var

В последнем случае ассемблер сам заменит слово word_var на соответствующий адрес

Адресация в Ассемблере

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

mov ax, [bx]

5. Адресация по базе со сдвигом - комбинация двух предыдущих методов адресации

mov ax, [bx+2] mov ax, [bp]+2

Адресация в Ассемблере

6. Косвенная адресация с масштабированием

mov ax,[esi*2]+2 - этот метод адресации полностью идентичен предыдущему, за исключением того, что с его помощью можно прочитать элемент массива слов, двойных слов или учетверенных слов, просто поместив номер элемента в регистр множитель, может быть равен 1, 2, 4 или 8 - соответствует

размеру элемента массива — байту, слову, двойному слову, учетверенному слову соответственно

Адресация в Ассемблере

7.Адресация по базе с индексированием - в этом методе адресации смещение операнда в памяти вычисляется как сумма чисел, содержащихся в двух регистрах, и смещения, если оно указано Все следующие команды — это разные формы записи одного и того же действия:

mov ax,[bx+si+2] mov ax,[bx][si]+2 mov ax,[bx+2][si] mov ax,[bx][si+2] mov ax,2[bx][si]

8.Адресация по базе с индексированием и масштабированием - это самая полная возможная схема адресации, в которую входят все случаи, рассмотренные ранее, как частные

mov eax, ds:[eax+ebx*2+2]

Адресация

• Прямая (адрес задан непосредственно)

MOV al,var1

MOV al,[var1]

MOV al,[arrayB+1] MOV al,[arrayD+4]

• Косвенная

MOV al,[esi]

INC BYTE PTR [esi]

16

Безусловный переход и цикл

JMP метка_перехода

– безусловный переход

LOOP метка_перехода

ECX/CX уменьшается на единицу

если ECX/CX не ноль, то переход по метке

иначе следующая команда

LOOPD всегда ECX

LOOPW всегда CX

17

TITLE Add and Subtract, Version 2 (AddSub2.asm)

;Сложение и вычитание 32-битных целых переменных

;результат – в переменной.

INCLUDE Irvine32.inc

.data

 

 

 

val1

dword

10000h

Ещё пример

val2

dword

40000h

 

val3

dword

20000h

 

finalVal dword

?

 

.code main PROC

mov eax,val1

;

Загрузить 10000h

add eax,val2

;

добавить

40000h

sub

eax,val3

;

вычесть 20000h

mov

finalVal,eax

;

записать

результат (30000h)

call DumpRegs

;

отобразить регистры

exit

 

main ENDP

 

END main

18

Способы адресации Построить сегменты и создать exe файлы

Процесс создания программы

Редактор

Ввод предписаний

Ваш исходный текст

Изменения текста

Ассемблер

Предписания трансляции

 

Текстовые библиотеки

Объектный код

Компоновщик

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

Загрузочный код

Статический код

Загрузчик

Предписания загрузки

link32 AddSub.obj irvine32.lib kernel32.lib

Исполняемый код

Решения ОС

ОС+аппаратура

Предписания исполнения

Результат

Внешние события

 

Внешние данные и код 20

Соседние файлы в папке Презентации