Обзор системы команд процессора х386. Операнды в командах. (Лекция 5)

Содержание

Слайд 2

Размещение многобайтной команды в памяти

Адрес команды в памяти – это адрес ее

Размещение многобайтной команды в памяти Адрес команды в памяти – это адрес
первого байта (байт СОР).
Каждый последующий байт команды располагается в памяти по адресу, на 1 больше предыдущего
Пример: Пусть, CS:0007 - адрес 4-байтной команды (0007 - 16–разрядный внутрисегментный адрес)
Адреса байтов памяти, которые занимает команда? Байты памяти с адреса CS:0007 по CS: 000A

Слайд 3

Основные группы команд

Команды пересылки данных. Перемещают (копируют) данные между регистрами процессора, памятью

Основные группы команд Команды пересылки данных. Перемещают (копируют) данные между регистрами процессора,
и портами. Не влияют на флаги.
Команды двоичной арифметики. Устанавливают арифметические флаги.
Команды логических операций. Выполняют операции булевой алгебры. Устанавливаются некоторые флаги.
Команды сдвигов. Выполняют сдвиг кода в регистре или памяти на заданное количество бит. Влияют на флаг CF.
Команды битовых операций. Манипулируют с отдельным битом регистра или памяти
Команды передачи управления, вызова процедур, прерываний. Их назначение - нарушить линейную последовательность чтения процессором команд из памяти.

Слайд 4

Операнды в командах

Команды без операндов
CLC ; сброс флага CF
◻ Команды с 1-м

Операнды в командах Команды без операндов CLC ; сброс флага CF ◻
операндом
INC BX ; увеличить на 1 код в регистре ВХ
Команды с 2-мя операндами.
Результат записывается на место 1-го операнда
ADD AL, BL ; AL ← AL + BL
ADD AL, 3 ; AL ← AL + 3
ADD ds:[7], BL ; ds:[0007]←ds:[0007]+BL
!! Недопустимое сочетание двух операндов: “память - память“

Слайд 5

Типы операндов в командах

Операнд
Регистр
Память
Непосредственный операнд

Что указывается в команде?
→ Имя регистра

Типы операндов в командах Операнд Регистр Память Непосредственный операнд Что указывается в
Адрес памяти
→ числовой или символьный код

Слайд 6

Размер операндов

Операнд может быть размещен в регистре, в памяти или в самой

Размер операндов Операнд может быть размещен в регистре, в памяти или в
команде – «непосредственный операнд».
Если один из операндов команды - регистр, а второй - память или непосредственный операнд, то длину операндов определяет формат регистра.
Примеры:
mov al, ds:[1] ; чтение из памяти 1 байта. Операнды: регистр-память
mov aх, ds:[1] ; чтение 2 байтов
mov еaх, ds:[1] ; чтение 4 байтов
mov еaх, 5 ; Операнды: регистр-непосредственный операнд.
При занесении непосредственного операнда в регистр ЕАХ процессор расширит его до 4-байтного формата (00 00 00 05)

Слайд 7

Обозначение операндов в описании системы команд

r ,sr, reg — регистр;
m, mem —

Обозначение операндов в описании системы команд r ,sr, reg — регистр; m,
адрес операнда в памяти;
i — непосредственный операнд;
r/m — регистр или память;
r/m/i — регистр, адрес памяти или непосредственный операнд;
r8, r16, r32 — 8-, 16- , 32-разрядный регистр;
m8, m16, m32 — 8-, 16- , 32- разрядный операнд из памяти;
i8, i16, i32— 8-ми, 16-ти , 32-х разрядный непосредственный операнд ;

Слайд 8

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

Команда
MOV r/m, r/m/i
MOVZX r16, r/m8
MOVSX r32, r/m8

Как выполняется

Пример описания команды процессора Команда MOV r/m, r/m/i MOVZX r16, r/m8 MOVSX
процессором
; пересылка r/m ← r/m/i
; пересылка r16 ← r/m8 с беззнаковым расширением
; пересылка r32 ← r/m8 с
расширением знаковым битом

Слайд 9

Способы задания внутрисегментного адреса операнда

1. Прямая адресация
Внутрисегментный адрес операнда в команде

Способы задания внутрисегментного адреса операнда 1. Прямая адресация Внутрисегментный адрес операнда в
задаете явно:
mov bx, es:[2]
2. Косвенная адресация
Внутрисегментный адрес (или его часть) записан в регистре. Процессор будет извлекать адрес из регистра и , возможно, вычислять окончательный внутрисегментный адрес
mov bx, es:[si] - внутрисегментный адрес будет взят процессором из регистра SI
mov bx, es:[si+5] - внутрисегментный адрес будет вычислен процессором, как сумма содержимого регистра SI и 5

Слайд 10

Варианты косвенной адресации

Для косвенной адресации используют регистры: si, di, bx, bp. Косвенная

Варианты косвенной адресации Для косвенной адресации используют регистры: si, di, bx, bp.
адресация имеет несколько вариантов:
[si+disp], [di+disp], [bx+disp], [bp+disp]
[bx+si+disp], [bx+di+disp], [bp+si+disp], [bp+di+disp]
Они отличаются использованием одного или пары регистров.
disp – это знаковое число (не обязательно)
Пример: пусть, BХ=0001 SI=0004
По какому адресу процессор будет обращаться в память за байтом в команде
mov dh, ds:[bx+si-4] ; dh ← ds: [1]
Имя файла: Обзор-системы-команд-процессора-х386.-Операнды-в-командах.-(Лекция-5).pptx
Количество просмотров: 48
Количество скачиваний: 0