Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы теория.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
37.81 Кб
Скачать

3 Команда test, алгоритм команды, формируемые флаги, формат, пример использования

Команда TEST вычисляет поразрядное логическое "И" своих двух операндов. Каждый бит результата равен 1, если соответствующие биты операндов равны 1, иначе каждый бит равен 0. Результат нигде не запоминается, только соответствующим образом выставляются флаги SF, ZF и PF.

Логические операции выполняются поразрядно, поэтому межразрядные

связи отсутствуют. Устанавливаются флаги: SF,ZF,PF, а флаги: CF и OF

cбрасываются на ноль. Команда TEST выполняет операцию AND, изменяет флаги, а результат не формирует.

Для двухоперандных команд используются три формата

kop mem/reg,mem/reg

7 0 7 6 5 3 2 0 7 0 7 0

┌────────────┬───┬───┐ ┌─────┼─────┼─────┐ ┌ ─ ─ ┐ ┌ ─ ─ ┐

│ КОП │ d │ w │ │ mod │ reg │ r/m │ displ disph

└────────────┴───┴───┘ └─────┴─────┴─────┘ └ ─ ─ ┘ └ ─ ─ ┘

kop mem/reg,data

7 0 7 0 7 0 7 0 7 0 7 0

┌───────┬──┬─┐ ┌───┬────┬─────┐ ┌ ─ ─ ─┐ ┌ ─ ─ ┐ ┌─────┐ ┌ ─ ─ ┐

│ KOP │S │W│ │mod│ kop│ r/m │ dispL dispH │dataL│ dataH

└───────┴──┴─┘ └───┴────┴─────┘ └ ─ ─ ─┘ └ ─ ─ ┘ └─────┘ └ ─ ─ ┘

kop AC,data

7 0 7 0 7 0

┌───────┬─┐ ┌─────┐ ┌ ─ ─ ┐

│ KOP │W│ │dataL│ dataH

└───────┴─┘ └─────┘ └ ─ ─ ┘

Билет 4.

2. Инициализация сегментных регистров при запуске exe-файла.

Пример расположения в памяти небольшого EXE-файла.

DS,ES -> ┌──┬──┬────────┐ Сегмент PSP содержит 256 байт, где

│CD│20│ │ располагаются системная информация,

13 8A h ├──┴──┘ │ необходимая для выполнения программы.

│ PSP │ В первых двух байтах записана команда

│ 256 байт │ int 20h, при выполнении которой управ-

SS -> ├──────────────┤ передается в DOS.

│ Sseg │ Во второй половине PSP записываются

13 9A h │64 б= 40h │ параметры, передаваемые в командной

SP -> ├──────────────┤ строке.

00 40h│ Dseg │

│ <=16 байт │

CS -> ├──────────────┤

13 9F h │ Cseg │

└──────────────┘

Регистры сегментов данных DS и ES устанавливаются DOS на начало

PSP. В программе может использоваться несколько сегментов данных. Обра-

щаться к этим сегментам можно только последовательно. Порядок работы с

данными определяет сам программист. Поэтому инициализация сегментных

регистров данных выполняется командами программы.

Регистр SS устанавливается на начало сегмента стека автоматически,

если в описании присутствует параметр stack

Sseg segment stack

Если stack не указать, то в программе необходимо инициализировать

свой сегмент стека

mov AX,Sseg

mov SS,AX.

Сегментный регистр CS всегда устанавливается DOS на начало Cseg.

Если в программе несколько сегментов кода, то CS устанавливается на

сегмент, где находится пусковой адрес.