- •Команды языка ассемблера
- •3.2.1 Программные сегменты. Директива assume
- •6. Арифметические команды ……………………………………………….
- •Архитектура пк.
- •Регистры.
- •Регистры общего назначения.
- •1.1.2. Сегментные регистры
- •1.1.3 Регистр флагов
- •Организация памяти.
- •1.3. Представление данных
- •1.3.1 Типы данных
- •1.3.2 Представление символов и строк
- •Операторы программы на ассемблере
- •2.1 Команды языка ассемблера
- •2.2. Режимы адресации и форматы машинных команд
- •3. Псевдооператоры
- •3.1 Директивы определения данных
- •3.2 Структура программы на ассемблере
- •3.2.1 Программные сегменты. Директива assume
- •Начальная загрузка сегментных регистров
- •Упрощенная директива сегментации
- •4. Ассемблирование и компоновка программы.
- •5. Команды пересылки данных
- •5.1 Команды общего назначения
- •5.2 Команды работы со стеком
- •4.3 Команды ввода-вывода
- •5.4 Команды пересылки адреса
- •5.5 Команды пересылки флагов
- •6. Арифметические команды
- •Арифметические операции над целыми двоичными числами.
- •6.1.1 Сложение и вычитание.
- •6.1.2 Команды приращения и уменьшения приемника на единицу
- •6.2 Умножение и деление.
- •6.3 Изменение знака.
- •7. Логические операции
- •8. Сдвиги и циклические сдвиги
- •9. Строковые операции
- •10. Логика и организация программ
- •10.1 Безусловные переходы
- •10.2 Условные переходы
- •10.3 Циклы
- •10.4 Процедуры в языке ассемблера
- •10.5 Прерывания int
- •10.6 Системное программное обеспечение
- •10.6.1.1 Чтение клавиатуры.
- •10.6.1.2 Вывод символов на экран.
- •10.6.1.3 Завершение программ.
- •10.6.2.1 Выбор режимов дисплея.
- •11. Дисковая память
- •11.1 Оглавление диска (каталог)
- •11.2 Таблица распределения файлов
- •11.3 Операции ввода-вывода на диск
- •11.3.1 Запись файла на диск
- •11.3.1.1 Данные в формате asciiz
- •11.3.1.2 Файловый номер
- •11.3.1.3 Создание дискового файла
- •Чтение дискового файла
6.3 Изменение знака.
Инструкции NEG может изменить знак содержимого регистра общего назначения или переменной. Например,
...
MOV AX,1 ;устанавливает AX в 1
NEG AX ;изменяет AX в -1
MOV BX,AX ;копирует AX в BX
NEG BX ;изменяет BX в 1
...
В результате получим в AX -1, а в BX 1.
7. Логические операции
Ассемблер поддерживает полный набор инструкций, которые производят логические операции, включая END, OR, XOR и NOT. Эти инструкции полезны для манипуляции отдельными битами внутри байта или слова и для реализации булевской алгебры.
С двумя исходными битами логическая инструкция генерирует результат, показанный в таблице . Логические инструкции производят эти побитовые операции над соответствующими битами операндов источника. Например,
AND AX,DX
производит логический AND с битом 0 AX и с битом 0 в DX, как с битами источника, и битом 0 в AX, как битом назначения. И то же самое, с битами 1,2 и т.д. до 15 бита.
Логические операции Табл.4
Исходный бит А Исходный бит В A AND B A OR B A XOR B
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
Инструкция AND обрабатывает два операнда в соответствии с правилами, показанными в табл. . , устанавливая каждый бит в назначении в 1 только тогда, когда соответствующие биты источников - 1. AND позволяет Вам выделить указанный бит или установить указанные биты в 0. Например,
...
MOV DX,3dAH
IN AL,DX
AND AL,1
...
выделяет бит 0 из байта статуса цветного графического адаптера (CGA). Этот код устанавливает AL в 1, если видеопамять на CGA может быть обновлена без снега и устанавливает в 0, в противном случае.
Инструкция OR обрабатывает 2 операнда в соответствии с правилами, показанными в табл.4.2 устанавливая каждый бит в назначении в 1 если хотя бы 1 соответствующий исходный бит установлен в 1. OR позволяет Вам устанавливать исходный бит(ы) в 1.
Например,
...
MOV AX,40h
MOV ds,AX
MOV bx,10h
OR WORD PTR [bx],0030h
...
устанавливает 4-й и 5-й биты слова, флага аппаратуры BIOS, в 1, заставляя BIOS поддерживать монохромный дисплейный адаптер.
Инструкция XOR обрабатыват 2 операнда в соответствии с правилами, приведенными в табл.4, устанавливая каждый бит назначения в 1, только если 1 из соответствующих битов источника был 0, а другой 1. Например,
...
MOV AL,01010101b
XOR AL,11110000b
...
устанавливает AL в 10100101b или A5h. Главное здесь то, что когда выполняется "исключающее или" AL с 11110000b или 0F0h, единичные биты 0F0h переключают значения соответствующих битов, в то время как нулевые биты в 0F0h оставляют соответствующие биты в AL неизменными. В результате этого, все биты в старшей половине AL изменяются, а биты в младшей половине AL остаются неизменными. Поэтому XOR, удобный способ обнулить регистр. Например, этот код установит AX в 0:
XOR AX,AX
NOT переключает каждый бит операнда в противоположное состояние, как, если бы была выполнена XOR с операндом источника 0FFh. Например,
...
MOV bl,10110001b
NOT bl ;переключает BL в 01001110b
XOR bl,0fffh ;возвращает BL в 10110001b
...