Логические операции
AND: Если оба из сравниваемых битов равны 1, то результат равен 1; во всех остальных случаях результат – 0
Пример:
AND AL, BH ; устанавливает в AL 0100 0100
AND AL, 00 ; устанавливает в AL 0000 0000
AND AL, 0Fh ; устанавливает в AL 0000 0101
OR: Если хотя бы один из сравниваемых битов равен 1, то результат равен 1; если сравниваемые биты равны 0, то результат – 0
Пример:
OR BH, AL ; устанавливает в BH 1101 1101
XOR: Если один из сравниваемых битов равен 0, а другой равен 1, то результат – 1; если сравниваемые биты одинаковы, то результат – 0
Пример:
XOR AL, AL ; устанавливает в AL 0000 0000
TEST: Действует как AND – устанавливает флаги, но не изменяет биты
TEST BL, 11110000B
JNZ …
TEST AL, 00000001B
JNZ …
NOT – инвертирует значения бит в байте\слове\регистре\памяти. Флаги не меняются
AL = 1100 0101
NOT AL = 0011 1010
Работа с файлом
int 13h – прерывание BIOS, на нижнем уровне
int 21h – прерывание DOS, на верхнем уровне
Каждому подкаталогу отводится 32 байта
Дескрипторы
0 – стандартный ввод (с клавиатуры)
1 – стандартный вывод (на экран)
2 – стандартная ошибка (на экран)
3 – стандартный вспомогательный порт
4 – стандартный принтер (вывод на принтер)
Функции DOS для работы с файлом
3C – создать (уничтожается имеющийся)
5A – создать временный файл (в DS:DX адрес пути к файлу НЕ ИМЕНИ в строке должно быть 13 пустых байт)
5B – создает новый файл (если существует, то завершение с CF = 1)
3D – открыть
3E – закрыть
68h – сбросить на диск
41h – удалить
42h – установить указатель (AL = 0 – в начало; AL = 1 – текущее положение значения смещения в CX:DX; AL = 2 – в конец)
3F – читать из файла
40h – записать в файл
43h – получить и установить атрибуты файла
56h – переименовать (старое имя – в DS:DX, новое – в ES:DX[?])
Атрибуты файла в CX (для создания с 3C):
0 – нет атрибутов
1 – только чтение
2 – скрытый
4 – системный
8 – метка тома
20 – атрибут архива
Режимы доступа в AL
0 – чтение
1 – запись
2 – чтение-запись
Примеры:
1) Создание
MOV AH, 3Ch
MOV CX, 0
MOV DX, OFFSET FILENAME ; адрес имени
INT 21h
MOV HANDLE, AX
DATA SEGMENT
FILENAME DB ‘myfile’, 0
HANDLE DW ?
Остальное – в лабах и методичке
Команды сдвига и циклического сдвига
Команды сдвига и циклического сдвига, которые представляют собой часть логических возможностей компьютера, имеют следующие свойства:
- обрабатывают байт или слово
- имеют доступ к регистру или к памяти
- сдвигают влево или вправо
- сдвигают на величину до 8 бит (для байта) и 16 бит (для слова)
- сдвигают логически (без знака) или арифметически (со знаком)
При выполнении команд сдвига флаг CF всегда содержит значение последнего выдвинутого бита. Команды сдвига:
SHR ; логический сдвиг вправо
SHL ; логический сдвиг влево
SAR ; арифметический сдвиг вправо
SAL ; арифметический сдвиг влево
Пример:
MOV CL, 03 ; AX:
MOV AX, 10110111B ; 10110111
SHR AX,1 ; 01011011 сдвиг вправо на 1
SHR AX,CL ; 00001011 сдвиг вправо на 3
MOV CL,03
MOV AX,10110111B ; 10110111
SAR AX, 1 ; 11011011
SAR AX,CL ;
Для заполнения левого бита SAR использует знаковый бит, SHR заполняет нулями
Сдвиг влево используется для удваивания чисел, а сдвиг вправо – для деления на 2.
Для проверки бита, занесенного в флаг CF, используется команда JC
Команды циклического сдвига – выдвинутый бит занимает освободившийся разряд
ROR ; циклический сдвиг вправо
ROL ; циклический сдвиг влево
RCR ; циклический сдвиг вправо с переносом
RCL ; ; циклический сдвиг влево с переносом
