Програмування на мові Асемблер, Детальна інформація
Програмування на мові Асемблер
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
© Referats, Inc · All rights reserved 2021