Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lectures / 06-07

.pdf
Скачиваний:
44
Добавлен:
16.04.2013
Размер:
229.74 Кб
Скачать

Директивы определения данных: Примеры

Директивы определения символьных строк:

STR

DB

‘ZРВ’;

Z по адресу STR

STRZ

DD

‘PC’ ;P в старшем байте младшего слова

Директивы определения адресных констант:

var3

dw

var1 ; Адрес var1 как смещение

var4

dd

var1 ; Адрес var1 как segment:offset

 

 

; (мл.байт=offset)

Директива EQU

имя EQU выражение

Примеры:

 

 

MAX_SIZE EQU 200

; константа

CR EQU 0ВН

; константа

BET EQU AL[SI]+3

; адресное выражение

СNT EQU CX

; регистр

MPY EQU MUL

; мнемокод

TAB EQU DS:[BP][SI]

; адресное выражение

ADD_AX2 EQU add ax,2

; целая команда

Псевдооператор «=«

имя = числовое выражение

Примеры:

CONST = 56 ; аналогично CONST EQU 56

...

CONST = 57

...

CONST = CONST+1

Директива LABEL

имя LABEL тип

Примеры:

FCOM LABEL FAR

MOV DX, 0

B_TAB

LABEL BYTE

W_TAB

DW 2E25H, 43H, 0015H

Директива ORG

ORG выражение

Пример:

ORG 100H

Пример программы: V2 = V1 + 5

.model small

 

 

 

 

.data

 

 

 

 

 

V1 DW

265 ; определить и инициализировать

V2 DW

0 ; две переменные

.stack 80

 

 

 

 

 

.code

 

 

 

 

 

 

 

сохранение

 

START: PUSH DS

 

 

XOR AX,AX

 

адреса возврата в

 

PUSH AX

 

DOS в стеке

 

MOV AX, @data

 

 

 

 

 

инициализация

 

 

MOV DS, AX

 

 

 

регистра DS

 

 

MOV AX, V1

 

 

 

 

 

 

 

 

 

 

ADD AX, 5

; 5+V1 переслать в AX

MOV V2, AX

 

; результат в память

RETF

; Возврат в DOS. Адрес из стека

END START

Выражения

Примеры:

XXX EQU 100 ABC db 1,2,3,4,5 …….

mov EAX,ABC+2 ; адресное выражение mov EAX,ABC[EBX] ; адресное выражение mov EAX,3+2*5 ; константное выражение mov EAX,-XXX ; константное выражение

Арифметические операции

Бинарные: + сложение

-вычитание

*умножение

/деление нацело

MOD остаток от деления нацело Унарные: + -

Пример:

tab_size EQU 50 ; Размер массива в байтах size_el EQU 2 ; Размер элемента

…….

mov CX, tab_size/ size_el ; CX=число

; элементов массива

Операции сдвига

SHL сдвиг влево

SHR сдвиг вправо

Пример:

mask EQU 10111011b …….

mov AL, mask SHR 3 ; AL = 00010111

Логические операции

AND

И

OR

ИЛИ

XOR

Исключающее ИЛИ

NOT

НЕ

 

 

Пример: пересылка в al поля flags с инвертированным младшим битом

flags EQU 10010011b mov al, flags xor 01h

Соседние файлы в папке Lectures