Пусть требуется регистр DS установить на начало сегмента В.
MOV AX, B
MOV DS, AX
Аналогично загружается регистр ЕS.
Регистр CS загружать не надо.
Регистр SS, который должен указывать на начало стека, можно загрузить двумя способами: в самой программе (также как регистры DS и ЕS), либо загрузку поручить операционной системе. Для этого в директиве SEGMENT, открывающей описание сегмента стека, указывают специальный параметр SТACK.
Структура программы
STACK SEGMENT STACK; сегмент стека
DB 128 DUP (?)
STACK ENDS
DATA SEGMENT; сегмент данных
<описания переменных и т.п.>
DATA ENDS
CODE SEGMENT; сегмент команд
ASSUME CS: CODE, DS: DATA, SS: STACK
START: MOV AX, DATA
MOV DS, AX; загрузка DS
<остальные команды программы>
CODE ENDS
END START; конец программы, точка входа
Побитовая обработка и ее основные виды
Логические команды
Выполняют логические операции – отрицание, конъюнкцию и дизъюнкцию.
Отрицание: NOT op
Допустимые типы операнда: r8, m8, r16, m16.
MOV AL,1100b; AL=00001100b
NOT AL; AL=11110011b
Конъюнкция (логическое умножение): AND op1,op2
|
|
В этой команде допустимы следующие комбинации операндов:
Op1 op2
r8 i8, r8, m8
m8 i8, r8
r16 i16, r16, m16
m16 i16, r16
x | y | x and y |
MOV AL,1100b; AL=00001100b
AND AL,1010b; AL=00001000b
Проверка: TEST op1,op2
MOV BH,1100b
TEST BH,0011b; =00000000->ZF=1
TEST BH,1010b; =00001000->ZF=0
Дизъюнкция (логическое сложение): OR op1,op2
Допустимые типы операндов – как в команде AND.
x | y | x or y |
MOV CL,1100b
OR CL,1010b; CL=00001110b
Исключающее ИЛИ (eXclusive OR): XOR op1,op2
Допустимые типы операндов – как в команде AND.
x | y | x хor y |
MOV CL,1100b
X OR CL,1010b; CL=00000110b
XOR АХ,АХ; АХ:=0
Команды сдвига
<мнемокод> ор,1; сдвиг ор на 1 разряд
<мнемокод> ор,CL; сдвиг ор на CL разрядов
Допустимые типы операнда ор: r8, m8, r16, m16.
Логические сдвиги
Логический сдвиг влево (shift left): SHL op,1