Подпрограммы

Макрокоманды

Пременные

Определение символьного имени

Формат оператора

Каждый оператор языка ассемб заним отдельн строку и имеет формат

Поле_метки (:, )) поле_операции операнды коммент (Имя) (,) (;)

Операции делятся на 2 группы

1) машиннные команды вход в сост сист команд процессора

2) псевдокоманды ассемб (директивы) в общем случ псевдоком не имеют машиннного кода они использ для управл процес трансляции

 

Нужно различать символьные имена и цифры.

Если использ 16-ая СС в котор задейств буквы от A до F то перед этой цифрой надо постав 0 (01А8В)

Имена начин с букв и разреш символов.

Когда запис цел числа то в конце став условный знак СС: 12d – в 10СС принято по умолчанию(28о-в 8СС, 3Вh-в 16СС, 101b-2CC)

Для определ символ имен использ выраж:

Имя EQU выражение (число, строкасимволов, псевдоним)

В качестве выражен может использ такие выраж, кот на этопе трансляц выр в число

X equ 5
mes equ ‘сообщение’

Addr x equ dword ptr[bp+6]

Вместо equ можно использ = для числен выражен котор не измен.

Имена опред через equ можно переопределить.

 

-именованные области памяти для хранения данных.

Переменные имеют след атрибуты: сегмент, смещение, тип

Для опред псевдоимен: имя (db,dw,dd,…) выражение

Array x db 5,6,7,8,9

Messag db ‘error’

X db ? – резерв памяти под переменн

z db 10 dup (0)

y dw 1,2,3

0 рост адресов→

|1|0|2|0|3|0

Тип переменной можно изменит 2-мя способами

1) x dd 1234h
mov al, byte ptr x

2) x byte lable byte

x dd ?

для изменения сегмента использ префиксы замены сегмента

mov al, es:[bx] mov cx, ss[bp+4]

 

последовательность команд которая объявл специальн образом имеет имя и может иметь формальные парамет

объявление макроком машинного кода не имеет

в исх тексте прогр принеобход использ указ ее имя с фактич параметр. На этапе трансляции ассембл производ макрорасшир, т.е. вставляет вместо макрообращ последов команд и замен формальн парам фактич

имя macro формальные парам

local метки

последов команд

endm

– память ↑, + быстро работ

Если в макроком использ метки то они должны быть объявлены локальными. При объявл меток локальн ассембл созд новые метки

 

– хранятся в памяти только 1 раз в отлич от макроком. Вызов и возврат из подпрогр производ во время выполн программы

Имя proc тип (near, far)

Послед команд

Имя endp

Для передачи парам в подпрогр испрольз след способы

1) через регистр процессора (при выз MS DOS и BIOS) 2) через общую память 3)через стек (использ при выз функц Windows и в языках выс уровня)

Пример far(F+)

(a:byte,b:word, c:string): string

Тест проц:

push bp

mov bp sp…

pop bp

ret 8