Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичні вказівки до лабораторних робіт.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
464 Кб
Скачать
☆

Контрольний приклад

program al1;

uses crt;

var i,z,j,min:integer;

a: array [1..2,1..2] of integer;

label m,m1,m2;

begin

clrscr;

for i:=1 to 2 do

for j:=1 to 2 do

begin

write('input a[',i,',',j,']=');

readln(a[i,j]);

end;

min := 32000;{ініціалізація змінної}

asm

xor bx,bx

xor ax,ax

lea bx,a

mov cx,2

m: push cx

mov cx,2

mov si,0

m1: mov ax,[bx][si]

cmp ax,min

jge m2

mov min,ax

m2: add si,2

loop m1

pop cx

add bx,4

loop m

end;

writeln('min=',min);

readkey;

end.

Порядок виконання роботи

1. Вивчити теоретичні відомості.

3. Написати програму.

4. Зробити звіт .

Зміст звіту

1. Теоретичні відомості.

2. Текст програми.

3. Результати.

4. Висновки.

5. Відповіді на контрольні питання.

Контрольні питання

1. Як нумеруються елементи масиву?

2. Як залежить адреса елемента масиву від індексу цього елемента?

3. Як здійснюється доступ до елементів масиву?

Лабораторна робота N 5

Тема роботи: Програмні сегменти.

Мета роботи: Навчитися розробляти повну програму мовою Асемблер.

Теоретичні відомості.

Дотепер ми вважали, що в ПК використаються 16-розрядні адреси. Але настав час згадати, що обсяг пам'яті ПК дорівнює 220 байтів (1 Мб), а це вимагає 20-розрядних адрес. У даній лабораторній роботі розглядається, як наявність таких 20-розрядних адрес позначається на програмах і як виглядає повна програма на мові Асемблер.

1. Сегментування адрес у пк

1.1. Загальна схема базування адрес

ПК відноситься до ЕОМ, у яких заради скорочення розміру команд використовується базування адрес. Тому насамперед розглянемо, що таке базування адрес в ЕОМ.

Якщо в оперативній пам'яті ЕОМ є 2К осередків, то для посилань на ці осередки потрібні k-розрядні адреси; будемо називати їх абсолютними адресами (інша назва - фізичні адреси). Ясно, що при великому обсязі пам'яті великим буде розмір абсолютних адрес, а це веде до збільшення довжини команд й надалі до збільшення розміру програм у цілому. Це погано. Щоб скоротити розміри команд, використовують такий спосіб. Пам'ять умовно поділяють на ділянки, які прийнято називати сегментами. Початкові адреси сегментів (ці адреси називаються базами) можуть бути будь-якими, але на довжини сегментів накладається обмеження: розмір будь-якого сегмента не повинен перевершувати, скажемо, 2 m осередків, де m<k. У цих умовах абсолютну адресу А будь-якої комірки пам'яті можна представити у вигляді суми A=B+ofs, де В - база сегмента, до якого ставиться осередок А, а ofs зсув (offset) або відносна адреса осередку, тобто її адреса, відлічена початку сегмента, від адреси В:

Обмеження розміру сегментів означає, що 0<=ofs=2m-l, і тому для запису зсувів досить m розрядів. Отже, у сумі А=В+ofs більша адреси А доводиться на базу В, а ofs - це лише невеликий додаток. З огляду на це надходимо в такий спосіб. Якщо в команді треба вказати абсолютну адресу А, більший додаток - базу В - "ховаємо" у деякий регістр R, а в команді вказуємо лише цей регістр і менший додаток ofs, тобто замість команди

КІП ... А...

використаємо команду

КІП ... R ofs ...

Що це дає? Оскільки команда працює з виконавчою адресою, а віна обчислюється по формулі [k]+ofs=B+ofs=A, то ця команда буде працювати з потрібною нам адресою А. З іншого боку, поля R і ofs займають мало місця в команді, тому розмір команди зменшиться - у порівнянні з тим случаємо, коли в команді вказується абсолютна адреса. До цього ми й прагнули.

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

Регістри, у яких зберігаються бази, прийнято називати базовими регістрами, а спосіб запису в командах не абсолютних адрес, а базових регістрів і зсувів, називається базуванням адрес.

Така загальна схема базування адрес, використана в багатьох ЕОМ. У ПК використовується ця ж схема, але з рядом особливостей, які ми зараз і розглянемо.