Програмування на мові Асемблер, Детальна інформація

Програмування на мові Асемблер
Тип документу: Реферат
Сторінок: 9
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 0
Скачувань: 1210


0004



0006



ss:sp 3 0008



ss:sp 2 000A



ss:sp 1 000C



на рис.4.4 зображено,як розміщується в пам’яті невеликий сегмент із 12 байт.В регістрі ss знаходиться адрес початку стекового сегмента 0F00.Регістр sp вказує на зміщення відносно йієї початкової адреси в інтервалі від 0000 до 000А.Останній байт стека має зміщення 000В.Під елементи стека виділяють 2-байтові слова..

Щоб використовувати цей стек , в програмі досить декларувати STACK 12 , після чого асемблер компановщик DOS самі точно визначать , де розмістити стек в пам яті. Регістри ss i sp не потрібно ініціалізувати , це робить DOS при загрузці ас програми на рисунку 44 .SP1 вказує , куди при запуску програма вказує sp.Потрібно замітити , що логічний адрес ss:sp вка-

зуэ на байт , розміщений нижче останнього ,байта в стеку.

Потрібно пам ‘ятати , що основа стека розміщується в більш високих адресах пам ‘яті.В пам яті стек росте в напрямі зменшення адрес пам яті і зменшується в протилежному напрямку .

До бажаного результату приведем на рис.4.4 виконання слідуючих команд :

mov ax , 100

push ax ; sp 2

mov bx , 200

push bx ; sp3

Команда push виконує дві дії :

Зменшує на 2 значення sp

Задане значення регістра записується по адресу [ ss:sp ]- розуміємо значення з зміщенням sp в середині стекового сегмента .

Порядок цих кроків істтній . Спочатку push віднімає 2 із sp. На рис. 4.4 першиц оператор push

записує sp2 в sp , поміщаючи потім туди значення з регістра ax . Після виконання цих дій вказівник степення адресує останнє поміщення в стек юдюжзначення.

Управління стеком

Принцип правильного управління стеком простий :

кожна команда push в програмі повинна мати відповідну команду pop , при цьому програма може коректно записувати і відновлювати значення.

Інакше , сдідуючі проштовхування приведуть до все більшого росту стека ,і можуть викликати переповнення сигмента , виділеного програмою. Це призводить до зависання системи , тому що починають перекриватись області пам ‘яті .

Якщо ж кількість команд pop , більше числа к. .Push ,може бути зникнення стека, що й приведе до зависання програми.

The online video editor trusted by teams to make professional video in minutes