Главная страница

 

ДОМ
ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Информатика и программирование
Информационные технологии
Компьютерные сети
Информационная безопасность
Как заработать в сети Интернет
Информационные технологии
CASE-технологии
Программные средства
Низкоуровневое программирование
Модели данных
Структуры данных
Низкоуровневое программирование

ОФОРМЛЕННЯ АЛГОРИТМІВ З ГАЛУЖЕННЯМ

 

Принцип передачі управління у мікропроцесорній системі

Природній порядок виконання команд програми - послідовний. Тобто після виконання команди виконується наступна у програмі команда. Адреса наступної команди програми формується у командному вказівнику ip, який ще називають лічильником команд. Після виконання команди автоматично збільшується вміст ip.

Але завжди виникає необхідність змінити хід виконання програми, тобто здійснити перехід із однієї точки програми в іншу. Наприклад, якщо в результаті виконання деякої команди змінити вміст ip чи cs, то таким чином наступною буде виконуватися команда, що буде вибиратися із іншої ділянки пам'яті.

Розрізняють команди:

*      дальнього переходу (змінюють вміст регістрів ip і cs);

*      короткого і близького (змінюють вміст ip ).

Команда безумовного переходу

Jmp <адреса переходу> змінює вміст командного вказівника ip.

У якості адреси переходу можуть використовуватися мітки.

Фрагмент програми:

Команди умовного переходу

дозволяють організувати перехід до двох різних ділянок програми в залежності від деякої умови

Jcc <адреса переходу> тут сс - означає деяку умову, що перевіряється.

Фрагмент програми:

Регістр ознак

При виконанні ряду операторів (cmp, sub, add) відбувається установка ознак у регістрі ознак (рис 1).


Рисунок 1 - Умовне позначення регістра ознак

В командах умовного переходу перевіряється стан однієї чи декількох ознак, які були виставлені до виконання цієї команди . Звичайно у попередній команді виконується порівняння деяких величин за допомогою команди Sub, Cmp.

Оператор порівняння Cmp

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

Cmp r1, r2

[r1] - [r2]

Оператор порівняння Cmp ставиться у відповідність команді віднімання, але значення результату не зберігається, вносяться лише зміни у регістр ознак.

Деякі команди умовного переходу

Таблиця 1

Мнемоніка

Умова переходу

Je

ZF=1, [r1] = [r2]

Jz

ZF=1, [r1] - [r2]=0

Jg

ZF=0, SF=OF, [r1] > [r2]

Jge

SF=OF, [r1] >= [r2]

Jae

CF=0, [r1] >= [r2]

Jnz

ZF=0, (ненульовий результат)

Jnc

SF=0, (додатній результат)

Js

ZF=1, (від'ємний результат)

jle

ZF=1, SF<>OF, [r1] <= [r2]

 

Приклад програми з галуженням

Завдання.

Записати на Асемблері програму порівняння вмісту комірок [120] i [122]. Якщо вміст комірки [120] більше вмісту комірки [122], то установити у регістрі cx число FFFF h , інакше установити у регістрі dx - CCCC h. Для тестування програми прийняти:

1)

12 -> [120]

2)

12 -> [120]

 

5 -> [122]

 

75 -> [122]

1. Розподілення комірок ОП:

Для тесту 1

Адреса комірки

Вміст

120

0c

121

00

122

05

123

00

 

Для тесту 2

Адреса комірки

Вміст

120

2E

121

00

122

4B

123

00

Примітка:

(12)10 = 000С h

(46)10 = 002Е h

(5)10 = 0005 h

(75)10 = 0004В h

2. Текст програми на Асемблері

Таблиця 2

Виконавча адреса

Мнемоніка оператора

Примітка

100, 101, 102

mov dx, 0

Очищення dx

103, 104, 105

mov cx, 0

Очищення cx

106, 107, 108, 109

mov ax, [120]

[120] -> [ax]

10A, 10B, 10C, 10D

Mov bx, [122]

[122] -> [bx]

10E, 10F

cmp ax, bx

[ax] - [bx], результат не зберігається

110, 111

jae 116

Перевірка ознаки переносу CF=0

112, 113, 114

mov dx, CCCC

CCCC -> [cx]

115

jmp 119

Безумовний перехід до комірки 119

116, 117, 118

mov cx, FFFF

FFFF -> [dx]

119

Hlt

Зупинка

 

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

  1. Який алгоритм називається розгалуженим?
  2. Де формується адреса наступної команди програми, яка виконується МП?
  3. Які оператори дозволяють змінити хід виконання програми?
  4. Який формат має оператор безумовного переходу?
  5. Який формат мають оператори умовного переходу?
  6. Що перевіряється при виконанні оператора умовного переходу?
  7. Як називається перехід у програмі, якщо змінюється вміст регістра IP?
  8. Як називається перехід у програмі, якщо змінюється вміст регістрів CS та IP?
  9. При виконанні яких операторів відбувається установка ознак у регістрі ознак?
  10. На що вказує ознака ZF=1?
  11. На що вказує ознака SF=1?
  12. Яку команду умовного переходу потрібно використати, щоб здійснити перевірку умови [cx]>=[bx]?

 

Copyright © Eugene, 2007
e-mail: webmaster@ITDom.info
Rambler's Top100 Рейтинг@Mail.ru