
- •Робота з компілятором ср/м
- •Інструментальні засоби динамічного відлагодження програм
- •Програмні засоби організації програми
- •Текст програми
- •Результати виконання програми
- •Міністерство освіти та науки України Національний університет “Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій
- •Способи адресації операндів і команди пересилання даних однокристального мп кр580
- •Теоретичні відомості Способи адресації в мп кр580
- •2.2. Команди пересилання даних мп кр580
- •Наприклад :
- •2.3. Стек і команди роботи зі стеком в однокристальному мп кр580
- •Карта пам'яті
- •Текст програми
- •Результати виконання програми
- •Теоретичні відомості
- •2. Короткі теоретичні відомості
- •Карта пам'яті
- •Текст програми
- •Результати виконання програми
- •Теоретичні відомості
- •2. 6. С умова адреси - умовний виклик підпрограми.
- •2. 8. R умова - умовне повернення з підпрограми.
- •2. 10. Організація підпрограм.
- •Карта пам’яті Текст програми
- •Результати виконання програми:
- •Теоретичні відомості
- •Арифметична операція множення
- •Арифметична операція ділення
- •Словесний опис алгоритму
- •Приклад множення чисел
- •Запис початкових даних
- •Додання
- •Другого множника
- •Зсув першого множника
- •Результати виконання програми
- •Міністерство освіти та науки України Національний університет “Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій
- •Теоретичні відомості
- •Арифметична операція додавання чисел в bcd кодах
- •2.2 Арифметична операція віднімання чисел в bcd кодах
- •2.3 Арифметична операція додавання/віднімання знакових чисел в bcd кодах
- •Перетворення чисел двійково-десяткового формату в двійковий формат і з двійкового формату в bcd-коди.
- •Карта пам'яті
- •Код програми
- •Зміст файлу lr6.Prn
- •Результати виконання програми
- •Теоретичні відомості
- •Додавання та віднімання багаторозрядних чисел цілого типу
- •Множення та ділення багаторозрядних чисел цілого типу
- •Арифметичні операції над дійсними числами
- •3.1 Арифметичні операції над числами в форматі з фіксованою комою
- •Арифметичні операції над числами в форматі з плаваючою комою
- •Код програми
- •Зміст файлу lr7.Prn
- •Результати виконання програми
2. 6. С умова адреси - умовний виклик підпрограми.
Якщо УМОВА, тоді СТЕК<-РС, РС<-АДРЕСА.
Якщо умова істинна, тоді виконуються дії, аналогічні команді CALL. У протилежному випадку - продовжується виконання основної програми. Як умови використовуються прапорці Z, CY, P, S. Із врахуванням умов можливі вісім таких команд умовного виклику підпрограми:
CZ - виклик, якщо Z=l (нуль);
CNZ - виклик, якщо Z=0 (не нуль);
СС - виклик, якщо С=1 (перенос);
CNC - виклик, якщо СY=0 (нема переносу);
СРО - виклик, якщо Р=0 (непарність);
СРЕ - виклик, якщо Р=1 (парність);
СР - виклик, якщо S=0 (плюс);
CM - виклик, якщо S=1 (мінус). Приклад: 0415 CNZ 10A2 Н
Інакше PC<- 0418.
2. 7. RET - безумовне повернення з підпрограми.
PC<-CТЕК SP<-SP+2
Адреса повернення в основну програму вибирається із стека і
заноситься в лічильник команд, а вміст вказівника стека SP збільшуєт я на 2. Вважається, що адреса повернення попередню була занесена у стек командою CALL, або іншим шляхом.
2. 8. R умова - умовне повернення з підпрограми.
Якщо УМОВА, тоді РС<-СТЕК.
Якщо умова виконується, тоді виконуються дії, аналогічні команді RET, у протилежному випадку наступна команда. Як умови перевірки використовуються прапорці Z, CY, P і S. З врахуванням умов можливі вісім таких команд умовного повернення з підпрограми:
RZ - повернення, якщо Z=1 (нуль);
RNZ - повернення, якщо Z=0 (не нуль);
RC - повернення, якщо С=1 (перенос);
RNC - повернення, якщо CY=0 (нема переносу)
RPO - поаернення, якщо Р=0 непарність);
2. 9. RSTn - повторний запуск. СТЕК<-РС; SP<-SP-2; PC<-8n; п=0, 1,..., 7.
Вміст лічильника команд запам'ятовується у стеку. При цьому, вказівник стека зменшується на 2. У лічильник команд заноситься адреса, яка визначається як добуток n на 8, за яким буде вибиратися подальша команда. Ця однобайтова команда аналогічна трибайтовій команді виклику підпрограми CALL, але має 8 фіксованих адрес переходу на підпрограми:
RST0 - 00Н; RST1 - 08Н; RST2 - 10Н; RST3 - 18Н; RST4 - 20Н;
RST5 28Н; RST6 - ЗОН; RST7 - 38Н.
Приклад: RST4; Викликати підпрограму з адресою 20Н.
2. 10. Організація підпрограм.
Виклик підпрограми порушує природний порядок виконання команд. З точки виклику, керування передається першій команді підпрограми, потім звичайно послідовно виконуються команди підпрограми, а по її завершенні керування передається на команду, яка є наступною після команди виклику підпрограми.
На практиці часто одна викликана підпрограма викликає другу, а друга третю і т. д. Для правильної роботи такого механізму вкладень ("гніздування") підпрограм необхідно забезпечити достатню область пам'яті під стек.
Правильно складені підпрограми не повинні міняти вміст регістрів мікропроцесора, крім регістрів, які використовуються для початкових даних і результату. Для цього на початку підпрограми вміст регістрів, які додатково використовуються, запам'ятовуються у стеку, а в кінці підпрограми відновлюються.
Якщо, наприклад, деяка підпрограма MOVE використовує регістри А, В і С, тоді їх запам'ятовування і відновлення здійснюється так:
MOVE: PUSH PSW; запам'ятовування регістрів А і F
PUSH В ; запам'ятовування регістрів В і С
POP В ; відновлення регістрів В і С
POP PSW ; відновлення регістрів А і F
RET ; повернення з підпрограми
Порядок витягування даних із стека зворотний до порядку їх занесення у стек. Враховуючи, що адреса повернення підпрограми
MOV А, В; передати В в А для аналізу ANI 80Н ; встановити ознаку Z
JNZ MINUS JMP PLUS MINUS:
PLUS:
Варіант 2. (з аналізом ознаки S). MOV А, В
ANA А; встановити ознаку S JP PLUS
MINUS:
PLUS:
Варіант 3. (З аналізом ознаки CY). MOV А, В
RLC; встановити ознаку CY JNC PLUS
Адреса |
Дані |
Коментар |
|||||
Hex |
Bin |
Hex |
Dec |
Bin |
|||
200h
|
0000 |
0010 |
89 |
137 |
10001001 |
1-е дане |
|
0000 |
0000 |
||||||
201h |
0000 |
0010 |
88 |
136 |
10001000 |
2-е дане |
|
0000 |
0001 |
||||||
202h |
0000 |
0010 |
87 |
135 |
10000111 |
3-е дане |
|
0000 |
0010 |
||||||
203h |
0000 |
0010 |
86 |
134 |
100001100 |
4-е дане |
|
0000 |
0011 |
||||||
204h |
0000 |
0010 |
85 |
133 |
10000101 |
5-е дане |
|
0000 |
0100 |
||||||
205h |
0000 |
0010 |
84 |
132 |
10000100 |
6-е дане |
|
0000 |
0101 |