Добавил:
СПбГУТ * ИКСС * Программная инженерия Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЗЯП. Указатели на страницы ответов.rtf
Скачиваний:
24
Добавлен:
30.11.2021
Размер:
7.65 Mб
Скачать

11. Машинное представление команд.

Машинный код — команды процессора Intel.

Байт кода операции.

2-7 биты: информационная часть кода операций.

1 бит:

1) d: направление передачи информации (1 — в регистр, 0 — в память),

2) s: размер непосредственного операнда (1 — byte, 0 — word),

3) v: значение счетчика в циклических командах (1 — CL, 0 — 1).

0 бит:

1) w: длина операндов (1 — word, 0 — byte),

2) z: значение флага ZF (при использовании REP).

Байт способа адресации.

1) Двухадресные команды

2) Сегментные регистры

3) Вторичный код операции

Биты 6-7 (mod) задают режим адресации. В зависимости от их значения процессор распознает значения битов 0-2 (r/m).

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

Если mod=11, r/m=reg, т.е. и приемник и источник являются регистрами. В этом случае имеем дело с регистровой адресацией.

Примеры

B8 0002 MOV AX, 2

КОП B8 : MOV AX, im16

Байт кода операции: 1011 1000 [КОП(4) W(1) REG(3)]

8B DA MOV BX, DX

КОП 8B : MOV RL6, r/m

Байт кода операции: 1000 1011 [КОП(6) D(1) W(1)]

Байт способа адресации: 1101 1010 [MOD(2) REG(3) r/m(3)]

12. Структура процессора x86.

[1] слайды 6-16.

[2] стр. 52-60.

Семейство процессоров 80х86 корпорации Intel включает в себя микросхемы: 8086, 80186, 80286, 80386, 80486, Pentium, Pentium II, Pentium III и т.д.

Совместимые с 80х86 микросхемы выпускают также фирмы AMD, IBM, Cyrix. Особенностью этих процессоров является преемственность на уровне машинных команд: программы, написанные для младших моделей процессоров, без каких-либо изменений могут быть выполнены на более старших моделях. При этом базой является система команд процессора 8086, знание которой является необходимой предпосылкой для изучения остальных процессоров.

Процессор Intel 8086 имеет 14 шестнадцатиразрядных регистров, которые используются для управления исполнением команд, адресации и выполнения арифметических операций.

Регистры общего назначения: AX, BX, CX, DX.

Индексные регистры: SI, DI.

Регистры сегментов: CS, DS, SS, ES.

Регистры-указатели: SP, BP.

Регистр указателя команд: IP.

Регистр флагов: FLAGS (CF, , PF, , AF, , ZF, SF, , , DF, OF).

13. Формирование адреса, сегменты.

[1] слайды 17-44.

[2] стр. 56-60, 240-244.

Сегменты:

— сегмент кода (CS).

— сегмент данных (DS).

— сегмент стека (SS).

— расширенный сегмент (ES).

Максимальный размер сегмента: 64 КБайта.

<имя_сегмента> segment [readonly] [выравнивание] [тип] [разряд] '[класс]'

...

<имя_сегмента> ends

Readonly: только для masm.

Выравнивание: byte, word, dword, para (16) (по умолчанию), page (256), mempage (4 КБайт).

Тип: public (memory), stack, common (размер максимального), at (at 40h), private (по умолчанию).

Разряд: USE16, USE32.

Режимы адресации операндов:

— регистровая;

push ds

mov bp, sp

— прямая;

mov Data, ax

— непосредственная;

mov ah, 4Ch

— косвенная;

mov al, [bx] ; база DS

mov ax, [bp] ; база SS

mov ax, es:[si] ; база ES

— базовая;

mov ax, [bp + 6] ; база SS

mov dx, 8[bx] ; база DS, bx + 8

— индексная;

mov dx, [si + 5] ; база DS

— базово-индексная;

mov bx, [bp][si] ; база SS

mov es:[bx+di], ax

mov ax, [bp + 6 + di] ; база SS