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

 

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

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

ОФОРМЛЕННЯ АЛГОРИТМІВ ЦИКЛІЧНОГО ТИПУ

Принцип організації циклів у мікропроцесорній системі

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

Для організації циклічних обчислень звичайно в один із регістрів завантажується деяке число (наприклад n), яке є лічильником циклу і у кожному циклі воно збільшується або зменшується на одиницю. У кінці (або на початку) циклу це число порівнюється з деякою константою і по результату порівняння - рівні вони чи ні - приймається рішення, закінчувати цикл чи продовжувати.

Найбільш зручно з цією метою використовувати регістр-лічильник cx.

Для організації циклу широко використовують команду LOOP і її модифікації LOOP, LOOPZ, LOOPnc і LOOPnz.

Формат команди LOOP:

LOOP <адреса переходу>.

При виконанні команди LOOP спочатку зменшується вміст регістра cx на одиницю, потім вміст цього регістру порівнюється з нулем. Якщо вміст цього регістру не дорівнює нулю, то відбувається близький перехід до початку циклу, якщо дорівнює нулю, то цикл закінчується і виконується наступна команда (див.рис. 1).

Рисунок 1 - Схема організації циклу

Приклад організації циклу

Завдання:

Записати на Асемблері програму обчислення суми чисел S=3+6+9+12+15, використовуючи команду LOOP. При побудові алгоритму розв'язування прийняти:

1)

накопичення суми передбачається у регістрі ах; порядок накопичення суми: [ax] + [bx] -> [ax];

2)

для обчислення доданків передбачається використати регістр bx; порядок обчислення доданків: [bx] + 3 -> [bx]

 

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

Таблиця 1

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

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

Примітка

100, 101, 102

mov cx, 5

5 -> [cx]

103, 104, 105

mov ax, 0

0 -> [ax]

106, 107, 108

mov bx, 3

3 -> [bx]

109, 10A

add ax, bx

S := S + a

10B, 10C, 10D

add bx, 3

a := a + 3

10E

LOOP 109

 

111

hlt

 

 

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

  1. Який алгоритм називається циклічним?
  2. Як називається послідовність операторів програми, що виконується неодноразово?
  3. Який формат має оператор LOOP?
  4. На що вказує адреса переходу в операторі LOOP?
  5. На виконання яких дій вказує оператор LOOP?
  6. Запишіть оператори Асемблера для виконання команд алгоритму:
    S:=0; S:=S + a.
  7. При якій умові закінчується цикл, організований оператором LOOP?
  8. Запишіть оператор, який зменшує вміст регістра dx на 2.

 

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