- •Машинно-зависимые языки программирования указатели на страницы ответов
- •1. Определения данных в программах на Ассемблере.
- •2. Целочисленные арифметические операции.
- •3. Арифметические операции в форматах bcd и ascii.
- •Xor ax, ax ; очистка ax
- •5. Сравнить программы exe и com.
- •6. Загрузка exe и com программ.
- •7. Формат exe-программы.
- •8. Использование сопроцессора (fpu).
- •9. Обработка массивов.
- •10. Обработка строк.
- •11. Машинное представление команд.
- •12. Структура процессора x86.
- •13. Формирование адреса, сегменты.
- •14. Формат программ на языке Ассемблера.
- •15. Команды условных и безусловных переходов.
- •16. Связь asm с Си и Pascal.
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