- •Source Directory
- •IncludEимя_файла_с_путём
- •Include dop1.Asm
- •Операции
- •Взаимодействие с языками высокого уровня.
- •II equ word ptr ll ; Равно5678h
- •I2 equ word ptr c2 ; Равно…
- •Id_table label byte
- •Id_table label byte
- •Irp формальный_аргумент,
- •Irpc формальный_аргумент,строка_символов
- •Irpc rg,
- •IFxxx логическое_выражение_или_аргументы
- •If(e) логическое_выражение
- •If(n)def символическое_имя
- •Ifndef sw ;если sw не определено, то выйти из макроса
- •If(n)b аргумент
IncludEимя_файла_с_путём
Include dop1.Asm
INCLUDE “C:\ASM\INCLUDE\PRINT.ASM”
Директива завершения трансляции.
END[метка_точки_входа]
Директивы управления листингом.
PAGE[число_строк][,число_столбцов]
TITLEтекст
SUBTTLтекст
Операции
Операция является модификатором, который используется в операторе языка ассемблера или в директиве.
Арифметические:
значение1 +значение2
значение1 -значение2
значение1 *значение2
значение1 /значение2
значение1 MODзначение2
значение SHLвыражение
значение SHRвыражение
Логические:
значение1 ANDзначение2
значение1 ORзначение2
значение1 XORзначение2
NOTзначение
Отношения:
операнд1 EQоперанд2
операнд1 NEоперанд2
операнд1 LTоперанд2
операнд1 GTоперанд2
операнд1 LEоперанд2
операнд1 GEоперанд2
Например:
MOV AX,CHOICE LT 20
Будет заменено на одну из следующих строк:
MOV AX,0FFFFh ; ЕслиCHOICEменьше20
MOV AX,0 ; Если CHOICE больше или равно 20
Что сделает оператор:
MOV AX,((CHOICE LT 20) AND 5) OR ((CHOICE GT 20) AND 6)
-------------------------------------------------------------------------------------------
MOV AX,(0FFFFh AND 5) OR (0 AND 6)
MOV AX,5
--------------------------------------------------------------------------------------
MOV AX,(0 AND 5) OR (0FFFFh AND 6)
MOV AX,6
--------------------------------------------------------------------------------------
Операции, возвращающие значения:
MESSAGE DB ‘Для продолжения нажмите любую клавишу’
LMESSAGE DB $-MESSAGE
MOV AX,SEGTABLE ;Сегментныйадрес
MOV BX,OFFSETTABLE ;Смещение
TABLE DW 99DUP(1)
MOV CX,LENGTH TABLE ;Число элементов в таблице TABLE
MOV AX,TYPE TABLE ;Длина элемента в таблице TABLE
MOV CX,SIZE TABLE ;Число байтов в таблице TABLE
; SIZE = LENGTH * TYPE
Операции присваивания атрибутов:
тип PTR выражение
Если таблица из слов определена так:
WORD_TABLE DW 100DUP(?)
то оператор
FIRST_BYTE EQU BYTE PTRWORD_TABLE
присвоит имя первому байту таблицы и теперь по этому имени можно обращаться к таблице побайтно
MOV AL,FIRST_BYTE+8
регистр_сег:адресное_выражение
MOV AX,ES:[BP] ; Если данные в доп.сегменте данных
MOV AX,CS:PRICE ; Если данные в сегменте кода
JMP SHOT метка
JMP SHOT LAB1
. . .
LAB1: …
Взаимодействие с языками высокого уровня.
Для правильного обращения с подпрограммами, а тем более при взаимодействии с различными языками программирования, нужно учитывать виды моделей памяти:
TINY– единственный физический сегмент для кодов и данных
SMALL– один сегмент для кодов, другой – для данных
MEDIUM– один сегмент для данных, несколько – для кодов
COMPACT– один сегмент для кодов, несколько – для данных
LARGE– несколько сегментов и кодов, и данных
HUGE– то же, но сегменты данных могут превышать 64К
FLAT– (для защищённого режима) все логические сегменты в одном большом физическом сегменте.
Представление целых чисел
Тип данных (размер) |
Диапазоны значений | ||
десятичные |
шестнадцатеричные |
восьмеричные | |
char (1 байт) |
от –128 до +127 |
от –080h до +07Fh |
от –0200 до +0177 |
unsigned char (1 байт) |
от 0 до 255 |
от 0h до 0FFh |
от 00 до +0377 |
short (2 байта) |
от –32768 до +32767 |
от –08000h до +07FFFh |
от –0100000 до +077777 |
unsigned short (2 байта) |
от 0 до 65535 |
от 0h до 0FFFFh |
от 00 до 0177777 |
int (2 байта) |
от –32768 до +32767 |
от –08000h до +07FFFh |
от –0100000 до +077777 |
unsigned int (2 байта) |
от 0 до 65535 |
от 0h до 0FFFFh |
от 00 до 0177777 |
long (4 байта) |
от –2147483648 до +2147483647 |
от –080000000h до +07FFFFFFFh |
от –020000000000 до +017777777777 |
unsigned long (4 байта) |
от 0 до 4294967295 |
от 0h до 0FFFFFFFFh |
от 00 до 037777777777 |
|
signed type |
|
| |||||
- |
|
|
|
|
|
+ | ||
|
|
| ||||||
|
|
| ||||||
|
|
unsigned type |
|
Вещественные константы, (константы с плавающей точкой).
На представление данных ПТ существует единый промышленный стандарт IEEE754-1985 (от 1985 года)1. Согласно ему форма представления чисел в МП имеет вид:
A = (-1)S 1,M 2P
где S– однобитовый знак числа (0 – плюс, 1 – минус);1,M– мантисса: 1 – целая часть мантиссы (всегда 1, поэтому она не хранится),M– дробная часть мантиссы2;P=r+p–смещенный порядок– целое положительное число;r– смещение – целая положительная константа равная (2nr-1– 1),nr– разрядность поля порядка.
Такое представление мантиссы и порядка позволяет быстро сравнивать по абсолютной величине числа одинакового формата – первое же отличие поля порядка (а если они равны, то поля мантиссы), определяет соотношение чисел.
Типы вещественных чисел и диапазоны значений
Тип данных |
Размер (байт) |
Диапазон значений (примерно) |
float |
4 |
от 3.4E-38 до3.4E+38 |
double |
8 |
от 1.7E-308 до 1.7E+308 |
long double |
10 |
от 3.4E-4932 до3.4E+4932 |
Размещение в памяти.
Если определить на одном месте константы разного типа …
LL DD 12345678h ; Восьмибайтовая константа
CC EQU BYTE PTR LL ; Равно 78h