DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Організація підпрограм та вивчення основних операцій переходів МП Intel 8086(80286)

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра систем автоматизованого проектування

Інформація про роботу

Рік:
2003
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Архітектура комп'ютерів
Група:
КН-37
Коротко про документ

Про що ця робота

У звіті описано організацію підпрограм та вивчення основних операцій переходів мікропроцесора Intel 8086. Наведено приклади коду мовою асемблера для виконання лабораторних завдань.

У роботі розглядаються

  • Архітектура мікропроцесорів
  • Мова асемблера
  • Підпрограми та процедури
  • Операції переходів
  • Регістр прапорців
  • Програмування на Intel 8086

Зміст і розділи

  1. Мета роботи
  2. Теоретичні відомості
  3. Завдання
  4. Код програми
  5. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів, які вивчають архітектуру комп'ютерів та програмування асемблером.
Викладачі:Герус В. А.

Ключові поняття

Intel 8086підпрограмапроцедурарегістр прапорцівкоманда переходустексегмент кодуnearfar

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР  Звіт з лабораторної роботи № 8 ”ОРГАНІЗАЦІЯ ПІДПРОГРАМ ТА ВИВЧЕННЯ ОСНОВНИХ ОПЕРАЦІЙ ПЕРЕХОДІВ МП INTEL 8086(80286)” Львів 2003 МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР  Звіт з лабораторної роботи № 8 ”ОРГАНІЗАЦІЯ ПІДПРОГРАМ ТА ВИВЧЕННЯ ОСНОВНИХ ОПЕРАЦІЙ ПЕРЕХОДІВ МП INTEL 8086(80286)” Данчук Є.С. Перевірив: Герус В.А. Львів 2003 Мета роботи Отримати навички організації підпрограм та вивчити основні операції переходів МП Intel 8086(80286). Теоретичні відомості В прикладних програмах часто виникає необхідність декілька разів виконувати одну і ту ж послідовність команд над різними вхідними даними. В такому випадку зручно запрограмувати дану послідовність команд у вигляді підпрограми. В асемблері Intel 8086(80286) таку підпрограму організовують, як процедуру з параметром NEAR, а саме: АА PROC NEAR ... ... RET АА ENDP Параметр NEAR вказує, що дана процедура не є точкою входу. Кодовий сегмент асемблерної програми може містити будь-яку кількість процедур. Серед них є процедура, яка містить адресу точки входу для виконання програми і володіє параметром FAR. Цю процедуру назвемо "основною", а всі інші другорядними. Викликати другорядні процедури можна за допомогою оператора CALL, формат якого такий: CALL <адреса>, де <адреса > - ім'я процедури. Наведемо приклад програми, в якій присутня "основна" процедура та другорядні процедури: CODESG SEGMENT PARA BEGIN PROC FAR ... CALL AA CALL BB RET BEGIN ENDP AA PROC NEAR ... RET AA ENDP BB PROC NEAR ... RET BB ENDP CODESG ENDS END BEGIN Отже, у вище наведеному сегменті коду присутні три процедури. Основна з іменем BEGIN та дві другорядні з іменами АА і ВВ. Ім'я BEGIN є адресою точки входу в основну програму. Процедура BEGIN викликає дві процедури АА та ВВ, які оператором RET повертають керування в основну процедуру. Оператор RET в процедурі BEGIN повертає керування в DOS. При відсутності оператора в основній процедурі буде виконуватися процедура АА. Відсутність оператора RET у процедурах АА :та ВВ може призвести до непередбачених наслідків. Для зміни нормальної послідовності кроків в асемблерній програми призначена команда JMP форма запису якої має такий вигляд: JMP А100 … А100: У цьому випадку команда JMP безумовно передає керування на мітку А100. Окрім команди безумовного переходу, є команди умовних переходів, які тісно пов'язані з регістром прапорців. Цей регістр містить 16 бітів прапорців, які керують різними командами для індикації стану операції. Регістр стану містить дев'ять прапорців: Номер біту: 15,14,13,12,11,10, 9,8, | 7,6,5,4, 3, 2,1,0 Прапорець: *, *, *, *, О, D, I, T, |S,Z,*,A,*, P,*,C Прапорці S,Z,A,P,C аналогічні до регістра прапорців МП КР580ИК80А (Intel 8080). Т - прапорець трасування. Якщо цей прапорець встановлений в одиницю, то процесор переходить в покроковий режим виконання програми, тобто: в кожний момент часу виконується лише один оператор. D - прапорець напрямку. Використовується при стрічкових операціях для визначення напрямку передачі даних, якщо D=0 , то дані передаються зліва направо, а при одиниці все навпаки. І - прапорець переривань. При I=0 переривання заборонені, а якщо I=1 - дозволені. О - прапорець переповнення. Фіксує арифметичні переповнення, тобто перенос в старший біт при знакових арифметичних операціях. Усі команди переходів діляться на знакові та беззнакові. Поділ цей проводиться по типу даних, над якими проводяться арифметичні операції порівняння. Беззнакові дані використовують всі біти як біти даних. У знакових даних лівий біт відповідає за знак, причому, якщо його значення дорівнює нулю, то число додатне, а якщо дорівнює одиниці, то від'ємне. Переходи для беззнакових даних Мнемоніка Опис Прапорець, який перевіряється JE/JZ Перехід, якщо дорівнює/нуль ZF JNE/JNZ Перехід, якщо не дорівнює/ не нуль ZF JA/JNBE Перехід, якщо вище/не нижче або дорівнює ZF,CF JAE/JNB Перехід, якщо вище або дорівнює/не нижче CF JB/JNAE Перехід, якщо нижче/не вище або рівне CF JBE/JNA Перехід, якщо нижче або дорівнює/не вище CF,AF Переходи для знакових даних Мнемоніка Опис Прапорець, який перевіряється JE/JZ Перехід, якщо дорівнює/ нуль ZF JNE/JNZ Перехід, якщо не дорівнює/ не нуль ZF JG/JNLE Перехід, якщо більше/ не менше або дорівнює ZF,SF,OF JGE/JNL Перехід, якщо більше або рівне/ не менше SF,OF JL/JNGE Перехід, якщо менше/ не більше або дорівнює SF,OF JLE/JNG Перехід, якщо менше або дорівнює/не більше ZF,SF,OF Спеціальні арифметичні перевірки Мнемоніка Опис Прапорець, який перевіряється JS Перехід, якщо є знак (від'ємне) SF JNS Перехід, якщо нема знака (додатне) SF JC Перехід, якщо е перенос CF JNC Перехід, якщо немає переносу CF JO Перехід, якщо є переповнення OF JNO Перехід, якщо нема переповнення OF JP/JPE Перехід, якщо паритет парний PF JNP/JP Перехід, якщо паритет непарний PF Існує ще одна команда умовного переходу JCXZ, вона перевіряє чи значення в регістрі дорівнює СХ нулю. Дана команда не обов'язково має міститься після арифметичної команди, чи команди порівняння. Завдання Код програми .model small .stack 100h .data janet0 db 10,13,'Viberit : for Lab3 --> 1, for Lab5 --> 2 $' janet1 db 10,13,' -->: $',10,13 janet2 db 10,13,'(a/\b)|+|(c\/d)-e $',10,13 janeta db 10,13,'a=$',10,13 janetb db 10,13,'b=$',10,13 janetc db 10,13,'c=$',10,13 janetd db 10,13,'d=$',10,13 janete db 10,13,'e=$',10,13 janetr db 10,13,' Vidpovid=$',10,13 janet3 db 10,13,'SUM(n-1)!/SUM(n+1) 1<n<10$',10,13 janetn db 10,13,'n=$',10,13 janett db '($' janettt db ')$' buf_end db '$' .code start: mov ax,@data mov ds,ax jmain: lea dx,janet0 mov ah,9 int 21h lea dx,janet1 int 21h ;------------- mov ah,1 int 21h cmp al,49 je lab3 cmp al,50 je lab5 jmp jhlt ;------------- lab5: lea dx,janet3 mov ah,9 int 21h lea dx,janetn int 21h j5_1: call inchar cmp al,13 je j5_1 cmp al,0 je j5_1 cmp al,1 je j5_1 mov bx,ax call vuvid push bx dec bx mov cx,bx call fact push ax j5_3: dec cx jz j5_2 mov bx,cx call fact pop bx add ax,bx push ax jmp j5_3 j5_2: pop cx ;---------- pop bx inc bx mov ax,bx dec ax j5_4: add bx,ax dec ax jnz j5_4 ;----------- mov ax,cx xor dx,dx div bx push dx push ax lea dx,janetr mov ah,9 int 21h pop bx call vuvid lea dx,janett mov ah,9 int 21h pop bx call vuvid lea dx,janettt mov ah,9 int 21h jmp jmain ;------------- lab3: lea dx,janet2 mov ah,9 int 21h lea dx,janeta int 21h call vvid call vuvid push bx lea dx,janetb mov ah,9 int 21h call vvid call vuvid pop ax and bx,ax push bx mov ah,9 lea dx,janetc int 21h call vvid call vuvid push bx lea dx,janetd mov ah,9 int 21h call vvid call vuvid pop ax or ax,bx pop bx xor bx,ax push bx mov ah,9 lea dx,janete int 21h call vvid call vuvid pop ax sub ax,bx mov bx,ax mov ah,9 lea dx,janetr int 21h cmp bx,0 jge jrez mov ah,2 mov dl,45 int 21h neg bx jrez: call vuvid jmp jmain ;------------- vvid: xor dx,dx xor bx,bx call inchar cmp al,13 je jff add bl,al call inchar cmp al,13 je jff add bx,bx mov dx,bx add bx,bx add bx,bx add bx,dx add bl,al call inchar cmp al,13 je jff add bx,bx mov dx,bx add bx,bx add bx,bx add bx,dx add bx,ax call inchar cmp al,13 je jff add bx,bx mov dx,bx add bx,bx add bx,bx add bx,dx add bx,ax jff: ret ;------------- inchar: mov ax,800h j2: int 21h cmp al,13 je jf cmp al,48 je j1 cmp al,49 je j1 cmp al,50 je j1 cmp al,51 je j1 cmp al,52 je j1 cmp al,53 je j1 cmp al,54 je j1 cmp al,55 je j1 cmp al,56 je j1 cmp al,57 je j1 jmp j2 j1: sub al,48 jf: xor ah,ah ret ;------------- vuvid: mov ax,bx mov di,10 mov si,9h mov buf_end[si],'$' l1: xor dx,dx div di add dl,'0' dec si mov buf_end[si], dl test ax,ax jnz l1 lea dx, buf_end[si] mov ah,09h int 21h ret ;------------- fact: mov ax,bx dec bx cmp bx,0 je jfactf jfact: mul bx dec bx jnz jfact jfactf: ret ;------------- jhlt: ;mov ah,1 ;int 21h mov ax,4c00h int 21h end start Висновок В даній лабораторній роботі ми отримати навички організації підпрограм та вивчили основні операції переходів МП Intel 8086(80286).
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!