Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Новая_Арх.комп.обезано(ПМ).doc
Скачиваний:
8
Добавлен:
17.09.2019
Размер:
707.58 Кб
Скачать

Приложение б справочная информация по вызовам функций ms-dos

MS-DOS (прерывание 21h)

ah = 1h – ввод символа с клавиатуры с эхом (ожидает нажатия клавиши).

После выполнения:

al = ASCII-код;

ah = 2h – вывод символа на экран.

dl = ASCII-код;

ah = 3h – ввод символа из последовательного порта.

После выполнения:

al = ASCII-код;

ah = 4h – вывод символа в последовательный порт.

dl = ASCII-код;

ah = 6h – вывод символа на экран.

dl – ASCII-код символа;

ah = 9h – вывод строки на экран.

ds:dx – адрес выводимой строки, строка должна заканчиваться символом ’$’;

ah = fh – открытие файла. Используется FCB.

ds:dx – адрес FSB;

ah = 10h – закрытие файла. Используется FCB.

ds:dx – адрес FSB;

ah = 13h – удаление файла. Используется FCB.

ds:dx – адрес FSB;

ah = 14h – чтение записей файла с последовательным доступом. До этого необходимо установить адрес области DTA.

ds:dx – адрес FSB;

ah = 15h – запись файла с последовательным доступом. До этого необходимо установить адрес области DTA.

ds:dx – адрес FSB;

ah = 16h – создание файла. Используется FCB.

ds:dx – адрес FSB;

ah = 1ah – задание адреса области DTA.

ds:dx – адрес DTA;

ah = 2ch – считывание текущего времени.

После выполнения:

ch – час,

cl – минуты,

dh – секунды,

dl – сотые секунды;

ah = 3ch – создание файла. Используется ASCIIZ-строка.

ds:dx – адрес ASCIIZ-строка,

cl – атрибут файла.

После выполнения:

ax – логический номер файла;

ah = 3eh – закрытие файла. Используется ASCIIZ-строка.

bx – логический номер файла;

ah = 3fh – чтение данных из файла. Используется ASCIIZ-строка.

bx – логический номер файла,

ds:dx – адрес DTA,

cx – число байт для считывания;

ah = 40h – вывод данных в файл. Используется ASCIIZ-строка.

bx – логический номер файла,

ds:dx – адрес DTA,

cx – число байт для считывания;

ah = 4ch – завершение программы.

Приложение в

ОСНОВНЫЕ ДИРЕКТИВЫ АССЕМБЛЕРА [5]

Обозначение

Выполняемое действие

DB

Директива резервирования памяти, выделяющая 1 байт. Ставится обычно после имени переменной

DW

Директива резервирования памяти, выделяющая 2 байта (1 слово). Ставится обычно после имени переменной

DD

Директива резервирования памяти, выделяющая 4 байта (двойное слово). Ставится обычно после имени переменной

DUP

Директива, дублирующая число, которое после нее стоит, в выделенные ячейки памяти. Используется совместно с директивами резервирования памяти

SEGMENT;

ENDS

Директивы начала и конца сегмента. Ставятся после имени данного сегмента

PROC;

ENDP

Директивы начала и конца процедуры. Ставятся после имени данной процедуры

END

Директивы конца программы. Выполняет две функции: Ассемблер на ней заканчивает трансляцию программы; она служит для указания Ассемблеру, где начинается исполняемый блок программы. Обычно после директивы ставится либо название метки, либо имя процедуры, с которой начинается работа программы

ASSUME

Директива, связывающая имена сегментов программы с мнемониками сегментных регистров процессора. Пример:

ASSUME CS:CSEG, DS:DSEG, SS:SSEG

Имена сегментов CSEG, DSEG, SSEG связываются, в соответствии с функциями, которые они выполняют, с сегментными регистрами: CS (сегмент программного кода), DS (сегмент данных), SS (сегмент стека)

ПРИЛОЖЕНИЕ Г

ОСНОВНЫЕ КОМАНДЫ АССЕМБЛЕРА [5]

Таблица Г.1 – Основные команды Ассемблера

Обозначение

Выполняемое действие

1

2

MOV <операнд1>,<опе-ранд2>

Команда пересылки данных. Содержимое операнда2 записывается в операнд1

IN al,<адрес порта>

Команда пересылки содержимого порта в регистр процессора. Операндами приемника могут быть только: al (разрядность порта – 1 байт) или регистр ax (разрядность порта – 2 байта). Если адрес порта меньше 256, то в команде его можно указывать числом, если адрес больше, используется регистр dx (перед этим в него заносится адрес порта)

OUT <адрес порта>, al

Команда пересылки содержимого регистра процессора в порт. Замечания, записанные для команды in, выполняются и для данной команды

PUSH <операнд>

Команда работы со стеком. Помещает содержимое операнда в стек

POP <операнд>

Команда работы со стеком. Извлекает из стека число и помещает его в операнд

ADD <операнд1>,<опе-ранд2>

Команда сложения. Складывает операнд1 и операнд2, результат сложения помещает в операнд1

SUB <операнд1>,<опе-ранд2>

Команда вычитания. Вычитает из операнд1 операнд2, результат помещает в операнд1

MUL <операнд>

Команда умножения. Второй сомножитель задается неявно – либо al, либо ax. Если операнд занимает 1 байт, то используется регистр al и результат вычисления помещается в регистр ax (al – младшая часть результата, ah – старшая часть результата)

DIV <делитель>

Команда деления. Делимое задается неявно – либо в регистре ax, либо в регистрах ax и dx (ax – младшая часть, dx – старшая часть). Если делитель занимает 1 байт, то используется регистр ax и результат деления помещается так: частное в регистр al, остаток в ah. Если делитель занимает 2 байта, то используются ax и dx, а результат деления помещается так: частное в регистр ax, остаток в dx

INC операнд>

Команда увеличения. Увеличивает содержимое операнда на 1

Продолжение таблицы Г.1

1

2

DEC операнд>

Команда уменьшения. Уменьшает содержимое операнда на 1

AND <операнд1>,<опе-ранд2>

Команда логического умножения. Выполняет побитовую логическую операцию «И»

OR <операнд1>,<опе-ранд2>

Команда логического сложения. Выполняет побитовую логическую операцию «ИЛИ»

XOR <операнд1>,<опе-ранд2>

Команда логического исключающего сложения. Выполняет побитовую логическую операцию исключающего «ИЛИ»

NOT <операнд>

Команда логического отрицания. Выполняет побитовую логическую операцию «НЕ», т.е. инвертирует значения каждого бита

SHL <операнд>, <число сдвигов>

Команда линейного сдвига влево. Выполняет побитовый сдвиг содержимого операнда на число, указанное вторым операндом. На место сдвинутых бит ставятся нули, выталкиваемые биты отбрасываются

SHR <операнд>, <число сдвигов>

Команда линейного сдвига вправо. Выполняет побитовый сдвиг содержимого операнда на число бит, указанное вторым операндом. На место сдвинутых бит ставятся нули, выталкиваемые биты отбрасываются

ROL <операнд>, <число сдвигов>

Команда циклического сдвига влево. Выполняет побитовый сдвиг содержимого операнда на число бит, указанное вторым операндом. Выталкиваемые биты ставятся в начало

ROR <операнд>, <число сдвигов>

Команда циклического сдвига вправо. Выполняет побитовый сдвиг содержимого операнда на число бит, указанное вторым операндом. Выталкиваемые биты ставятся в начало

JMP <метка перехода>

Команда безусловного перехода. Выполнение программы продолжается с метки, указанной после команды

CALL <имя процедуры>

Команда вызова процедуры. Управление передается на первую команду процедуры с данным именем

RET

Команда возврата из процедуры. Возвращает управление на следующую команду после команды вызвавшей данную процедуру

CMP <операнд1>,<опе-ранд2>

Команда сравнения. Сравнивает два операнда. Работает как обычное вычитание, но без записи результата. После выполнения выставляются соответствующие флаги

Продолжение таблицы Г.1

1

2

J{N} <метка перехода>

Команды условного перехода. В зависимости от результата сравнения передают управление на указанную метку. Вместо N указываются буква нужного условия перехода:

je – = , jne – <>;

j l – <;

j

Числа со знаком

le – ;

jg – >;

jge – ;

j b – <;

j

Числа без знака

be – ;

ja – >;

jae – .

LOOP <метка>

Команда организации цикла. В команде указывается метка начала цикла. Команда работает с регистром cx, в котором хранится число циклов. Выполняет следующие действия: вычитает из содержимого регистра cx единицу, сравнивает его с нулем и если cx <> 0, то передает управление на метку начала цикла, если cx = 0, то выходит из цикла, передав управление следующей за ней команде

CLI

Команда сброса флага разрешения прерываний. Устанавливает в 0 бит, ответственный за разрешение прерываний в регистре флагов центрального процессора. Запрещает маскируемые прерывания

INT <номер прерывания>

Команда программного прерывания. Вызывает подпрограммы обработки соответствующих прерываний и передает им управление

STI

Команда установки флага разрешения прерываний. Устанавливает в единицу бит, ответственный за разрешение прерываний в регистре флагов центрального процессора. Разрешает прерывания