15285

Налагодження програми мовою Асемблер з використанням циклів та розгалужень

Лабораторная работа

Информатика, кибернетика и программирование

Налагодження програми мовою Асемблер з використанням циклів та розгалужень Тема: Технологія та прийоми програмування мовою Асемблер. Мета роботи: набути навичок з реалізації задач мовою Асемблер що містять цикли та розгалуження. Ко...

Украинкский

2013-06-11

102.5 KB

10 чел.

PAGE  6

Налагодження програми мовою Асемблер з використанням циклів та розгалужень

Тема: Технологія та прийоми програмування мовою Асемблер.

Мета роботи: набути навичок з реалізації задач мовою Асемблер, що містять цикли та розгалуження.

 

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

  1.  Команди передачі управління

До цієї групи відносяться команди, які дозволяють контролювати процес виконання програми. Це команди переходів. Розрізняють команди безумовного переходу і команди переходу за умовою. Команди цієї групи дозволяють організовувати розгалуження в програмах.

Безумовний перехід. Базовою командою, що передає керування в іншу точку програми, є команда JMP. Команда має наступний синтаксис:

JMP label,

де label -  це мітка, яка позначається іменем і знаком “:” після нього.

Імя мітки – це набір знаків, проте, імя  не може починатися з цифри. Нижче приведені приклади  правильних імен міток

label1:
label2:
a:

Мітка може записуватися в окремій стрічці тексту програми або перед командою, наприклад,

x1: 
MOV AX, 1

або


x2: MOV AX, 2

Нижче наведений приклад використання команди JMP:

org    100h

mov    ax, 5          ; set ax to 5.

mov    bx, 2          ; set bx to 2.

jmp    calc           ; go to 'calc'.

back:  jmp stop       ; go to 'stop'.

calc:

 add    ax, bx         ; add bx to ax.

jmp    back           ; go 'back'.

stop:

ret                   ; return to operating system.

Як бачимо з наведеного прикладу, команда JMP забезпечує передачу керування як вперед так і назад. Проте, перехід (стрибок) може здійснюватися тільки в межах сегменту (65,535 байт).

 Короткий перехід за умовою. На відміну від команди JMP, що забезпечує безумовний перехід, є команди, що забезпечують перехід тільки при виконанні певної умови. Такі команди поділяються на три групи. До першої груп відносяться команди, що аналізують один прапорець регістру стану. До другої групи відносяться команди, що порівнюють числа як знакові, і до третьої групи відносяться команди, що порівнюють числа як беззнакові.  

 Треба відмітити, що є деякі команди, які мають різні назви, проте дизасемблюються в один і той самий машинний код, наприклад, команда JE дизасемблюється як JZ,  команда JC дизасемблюється як JB. Різні назви використовують для кращого розуміння тексту програми.

  1.  Цикли

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

Виділяється три типи циклів: цикл " ДЛЯ", цикл " ДОКИ", цикл " ДО". Один від одного різні типи циклів відрізняються в основному лише способом перевірки закінчення циклу. Вказані типи циклів ілюструє рис.1.

Рисунок 1 Типи циклів

Система команд мови Асемблер дозволяє організувати циклічне виконання деякого фрагменту програми за алгоритмами, що представлені на рис.1, приміром, використовуючи команди умовної передачі управління або команду безумовного переходу JMP.

ЦиклДОКИ: While X>0 do S

Мовою Асемблер:

A1: CMP CX, 0

 JLE A2

S; тіло циклу

JMP A1

A2: …

 ЦиклДО: Repeat S until X>0

Мовою Асемблер:

A: S; тіло циклу

 CMP CX, 0

JLE A

 

ЦиклДЛЯ: For I=1 to N do S

Мовою Асемблер:

 MOV CX, N

A: S; тіло циклу

 DEC CX

CMP CX, 0

 JNE A

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

LOOP <мітка>.

Ця команда виконує наступні функції:

  •  Автоматично зменшує значення лічильника;
  •  Виконує перевірку на вихід з циклу;
  •  Виконує перехід на початок тіла циклу.

Команда LOOP може бути використана лише у разі циклу з відомим числом повторень, тобто циклу "ДЛЯ". Кількість повторень циклу має бути присвоєна регістру СХ до початку циклу.

Цикл “ДЛЯ з використанням команди  LOOP буде програмуватися наступним чином:

 MOV CX, N

A: S; тіло циклу

LOOP A

Таким чином, команда LOOP замінила три команди:

  •  DEC CX
  •  CMP CX , 0
  •  JNE A2

  1.  Вкладені цикли

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

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

  1.  Постановка завдання

  1.  Використовуючи середовище емулятора МП і8086, створити і налагодити проект асемблерної програми відповідно до індивідуального завдання і результатів виконання практичної роботи №3 зі складання програми для розв’язання  задачі: знайти числа A, B, C для яких виконується умова – A*B*C=A+B+C. Знайдені числа розмістити в трьох масивах – відповідно для чисел А, чисел В і чисел С.
    1.  Використовуючи середовище емулятора скласти лістинг програми (табл..1)

Таблиця 1 Лістинг програми

Зміщення

Код (Hex)

Мнемокод команди

К-сть байт

Коментар

100

C7

MOV w.[00136H], 0000 

6

Код операції – запис числа 0 в комірку памяті [00136H]

101

06

102

36

Молодший байт адреси

103

01

Старший байт адреси

104

00

Молодший байт операнду

105

00

Старший байт операнду

106

01

MOV CX, 0004H

3

Запис числа 4h в CX

107

04

Молодший байт операнду

108

00

Старший байт операнду

  1.  Запустити виконання програми в середовищі емулятора. Записати отримані результати виконання програми.
    1.  У випадку некоректної роботи складеної програми,  використовуючи покроковий режим роботи емулятора, виявити і усунути допущені помилки при складанні програми.

  1.  Варіанти індивідуальних завдань
    1.  Варіанти індивідуальних завдань наведені у табл. 2.

Таблиця 2 Варіанти індивідуальних завдань

№ варіанту

Розташування чисел

Діапазон зміни чисел

A

B

C

A

B

C

1

BL

CL

mem

0…5

1…5

0…9

2

BL

CH

mem

1…9

0…5

0…9

3

BH

CL

mem

0…9

1…7

0…5

4

mem

BL

BH

0…5

1…5

0…9

5

mem

CL

CH

1…9

0…5

0…9

6

mem

BH

CH

0…9

1…7

0…5

7

AL

mem

BL

0…5

1…5

0…9

8

BH

mem

AH

1…9

0…5

0…9

9

CL

mem

AL

0…9

1…7

0…5

10

BX

CX

mem

0…5

1…5

0…9

11

mem

BX

CX

1…9

0…5

0…9

12

BX

mem

mem

0…9

1…7

0…5

13

mem

CX

mem

0…5

1…5

0…9

14

mem

mem

AX

1…9

0…5

0…9

15

mem

mem

mem

0…9

1…7

0…5

  1.  Зміст звіту

  1.  Назва теми.
    1.  Мета роботи.
    2.  Індивідуальне завдання.

  1.  Алгоритми реалізації завдання.
    1.  Текст програми реалізації завдання з коментарями.
    2.  Результати виконання програми.
    3.  Висновки.
    4.  Відповіді на контрольні запитання.

  1.  Контрольні запитання
    1.  Які типи циклів застосовуються у програмах, складених мовою Асемблер?  
    2.  Які групи команд Асемблера застосовуються для організації циклів?
    3.  Які групи команд Асемблера застосовуються для організації розгалужень?
    4.  Що таке вкладені цикли і як вони використовуються?

  1.  Джерела інформації
    1.  Ю.І. Якименко, Т.О. Терещенко, Є.І. Сокол та ін. Мікропроцесорна техніка: Підручник. – Київ. – ІВЦ «Видавництво «Політехніка». – 2004. – 439 с.
    2.  Юров В., Хорошенко С. Assembler: учебный курс – СПб: Питер Ком, 1999. – 672 с.


“ДОКИ

мова

Тіло циклу

ДО

Умова

Тіло циклу

Так

Так

Ні

Ні

ДЛЯ

Лічильник

Тіло циклу


 

А также другие работы, которые могут Вас заинтересовать

83563. Міжнародні кримінальні суди: міжнародні кримінальні трибунали ad hoc і постійний Міжнародний суд 37.84 KB
  До юрисдикції трибуналу відносилися злочини проти миру військові злочини і злочини проти людяності. і додатках до них а також геноцид і злочини проти людяності. У Статуті трибуналу по Руанді йшлося про злочини проти людяності а також про порушення норм що стосується конфліктів неміжнародного характеру як вони відображені в Женевських конвенціях 1949 р. Міжнародного кримінального суду як постійного органу що має юрисдикцією відносно осіб відповідальних за найсерйозніші злочини які викликають заклопотаність міжнародного співтовариства.
83564. Міжнародна співпраця в боротьбі із злочинністю 36.13 KB
  Важливою формою міжнародної співпраці в боротьбі із злочинністю є надання правової допомоги в кримінальних справах. Правовою основою такої співпраці є багатосторонні конвенції наприклад Європейська Конвенція про взаємну правову допомогу в кримінальних справах 1959 р. і двосторонні міжнародні договори наприклад Договір між Україною та Сполученими...
83565. Поняття, цілі та принципи права міжнародної безпеки 36.29 KB
  Право міжнародної безпеки галузь міжнародного права принципи і норми якої регулюють взаємодію суб\'єктів в цілях забезпечення миру і безпеки. Безпека кожної держави залежить від безпеки всіх тому скорочення озброєння до рівня необхідного для самооборони і участі в колективних миротворчих діях стало вимогою часу. Сучасна система безпеки охоплює не тільки військові та політичні але також і інші аспекти економічні екологічні гуманітарні і зрозуміло правові.
83566. Загальна колективна безпека. Право на самооборону та гуманітарна інтервенція 37.54 KB
  Колективна безпека – це система спільних дій держав та або міжнародних організацій з метою підтримання міжнародного миру та безпеки попередження або припинення за допомогою адекватних та легітимних засобів актів агресії. Залежно від рівня створення систем колективної безпеки розрізняють два їх види – загальну універсальну та регіональні системи колективної безпеки. Основи загальної колективної безпеки заклав Статут ООН. Характерною рисою системи безпеки ООН перш за все є попередження загрози миру шляхом створення і підтримки усесторонньої...
83567. Регіональні міжнародні організації у системі колективної безпеки. Організація з безпеки і співробітництва в Європі, Організація Північноатлантичного договору 37.3 KB
  Організація з безпеки і співробітництва в Європі Організація Північноатлантичного договору Статут ООН містить спеціальний розділ VIII про регіональні угоди і органи для вирішення питань що відносяться до підтримки миру і безпеки на регіональному рівні. Рада Безпеки заохочує мирне вирішення суперечок в рамках таких угод і органів. Без повноважень Ради Безпеки вони не можуть вчиняти примусові дії за винятком тих що здійснюються в порядку колективної самооборони.
83568. Заходи зміцнення довіри. Міжнародний контроль 36.51 KB
  Заходи зміцнення довіри порівняно новий елемент системи міжнародної безпеки. Першими міжнародноправовими актами з даного питання можна вважати Угоди між СРСР і США про заходи щодо зменшення небезпеки виникнення ядерної війни 1971 р. Саме поняття заходи зміцнення довіри було введено в обіг Заключним актом НБСЄ 1975 р. Заходи довіри розроблялися і Генеральною Асамблеєю ООН.
83569. Роззброєння. Договір ПРО 39.94 KB
  Вона припускає розпуск збройних сил ліквідацію військових споруд і озброєнь; знищення і припинення виробництва зброї масового знищення а також засобів її доставки; скасування органів військового керівництва і припинення військового навчання; припинення витрачання коштів на військові цілі. І Особливе значення має запобігання вживанню ядерної зброї і інших видів зброї масового враження хімічної бактеріологічної радіологічної екологічної. Генеральна Асамблея ООН прийняла ряд резолюцій що забороняють застосування ядерної зброї. був...
83570. Поняття та джерела права збройних конфліктів 38.01 KB
  Право збройних конфліктів являє собою самостійну галузь міжнародного права принципи і норми якої регулюють допустимість засобів і методів ведення війни забезпечують захист жертв збройних конфліктів встановлюють взаємостосунки між воюючими і невоюючими державами. Ми можемо знайти правила ведення війни у правових памятниках старовини та у практиці держав. Так ще Закони Ману містили норми про заборону деяких засобів ведення війни зокрема отруйних стріл. Або загальновідоме Іду на Ви князя Святослава як звичай оголошення війни.
83571. Поняття та види збройних конфліктів 36.34 KB
  Розрізняють міжнародні збройні конфлікти і збройні конфлікти неміжнародного характеру. міжнародними збройними конфліктами визнаються такі конфлікти коли один суб’єкт міжнародного права застосовує збройну силу проти іншого суб’єкта. міжнародними є також збройні конфлікти в яких народи ведуть боротьбу проти колоніального панування і іноземної окупації та проти расистських режимів в здійснення свого права на самовизначення. Збройні конфлікти неміжнародного характеру це збройні конфлікти що не підпадають під дію ст.