На тему: "Програмування виводу на екран на ЕОМ з мікропроцесором Intel 8086 (80286

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

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

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

Рік:
2007
Тип роботи:
Інші
Предмет:
Архітектура комп'ютерів
Група:
КН

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Національний університет Львівська політехніка Кафедра CАПР До лабораторної роботи №9 З курсу “Архітектура комп’ютерів” На тему: На тему: «Програмування виводу на екран на ЕОМ з мікропроцесором Intel 8086 (80286)».. Львів – 2007 Тема роботи: Програмування виводу на екран на ЕОМ з мікропроцесором Intel 8086 (80286). Мета роботи: Вивчити основні можливості керування екраном в текстовому та графічному режимах. ТЕОРЕТИЧНІ ВІДОМОСТІ ____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________  Вивести на екран три лінії (синього,зеленого та червоного) кольорів. Реалізувати керування лініями за допомогою клавіш ‘’w,’s’,’a’,’d’. Відстань між лініями та початкове положення задати самостійно   Для реалізації поставленого завдання була розроблена наступна програма dat1 SEGMENT PARA public "DATA" x dw 130 ; початкові координати X та Y y dw 70 ENDS dat1 dat2 SEGMENT PARA public "DATA" video db 64000 dup (1);копія єкрану ENDS dat2 stk segment para public "stack" dw 500h dup(0) ;стек ends stk prog segment PARA public "code" assume cs:prog, ds:dat1, ss:Stk start: mov ax,seg stk ;ініціалізація сегментів mov ss,ax mov ax,seg dat1 mov ds,ax call InitDisplay ;ініціалізуємо графічний режим lp: call ClearScr ;очищаємо екан call Draw ;і рисуємо 3 лінії з координатами в X,Y call SwapPage ;швидко копіюємо память у відеопамять call readch ;і перевіряємо клавіатуру до натиснення ESC jmp lp readch: mov ax,1100h ;перевіряємо чи натиснута клавіша int 16h jz re2 ;якщо ні, то переходимо на кінець підпрограми mov ax,1000h int 16h ;зчитуємо символ клавіші mov bx,word ptr ds:[x] mov dx,word ptr ds:[y] cmp al,64h ;і порівнюємо з кодом стрілки вліво je akp ;якщо дорівнює, то переходимо на зміну координат cmp al,61h ;порівнюємо з кодом стрілки вправо je dkp ;якщо дорівнює, то переходимо на зміну координат cmp al,77h ;порівнюємо з кодом стрілки вверх je wkp ;якщо дорівнює, то переходимо на зміну координат cmp al,73h ;порівнюємо з кодом стрілки вниз je skp ;якщо дорівнює, то переходимо на зміну координат cmp ah,01h ;порівнюємо з кодом ESC je exitprog ;якщо дорівнює, то вихід з програми jmp re1 akp: add bx,4 ;x=x+4 jmp re1 dkp: sub bx,4 ;x=x-4 jmp re1 wkp: sub dx,4 ;y=y-4 jmp re1 skp: add dx,4 ;y=y+4 jmp re1 exitprog: mov ax,04c00h ;нормальний вихід в операційну систему int 21h re1: call correct_coord ;корекція координат x, y mov word ptr ds:[x],bx ;і зберігаємо їх mov word ptr ds:[y],dx re2: ret InitDisplay: mov ax,13h ;ініціалізація VGA режиму 320*200*256 int 10h ret ClearScr: ;очиста єкрану push es mov ax,seg dat2 mov es,ax mov si,0 mov cx,64000 mov al,0 cl1: mov byte ptr es:[si],al inc si loop cl1 pop es ret Draw: mov cx,50 ;рисуємо 3 лінії довжиною 50 пікселів line1: mov dx, y mov bx, x add bx,cx mov al,4 ;рисуємо червоним call PutPixel ;піксель верхньої лінії add dx,20 mov al,2 ;рисуємо зеленим піксель середньої лінії call PutPixel add dx,20 mov al,1 рисуємо синім піксель нижньої лінії call PutPixel loop line1 ret PutPixel: ;bx - x pixel ;dx - y pixel ; al- color push si push bx push dx push ax mov ax,seg dat2 mov es,ax call correct_coord ;порівнюємо чи піксел не вийшов за межі екрану mov si,bx mov ax,320 mul dx add si,ax pop ax mov byte ptr es:[si],al ;копіюємо у спеціальний буфер колір піксела в AL pop dx pop bx pop si ret SwapPage: ;копіюємо з буфера зображеня у відеопам'ять push ds push es mov ax,seg dat2 ;ініціалізація сегмента DS на початок буфера mov ds,ax mov si,0 mov ax,0A000h ;ініціалізація сегмента ES на початок відеопамяті mov es,ax mov di,0 mov cx,32000 cld ;напрям обміну rep movsw ;копіюємо масив даних у 64000 байта pop es pop ds ret correct_coord: ;корекція координат 320<BX>0, 200<DX>0 cmp bx,0 jl add320 cmp bx,319 jle c1 sub bx,320 jmp c1 add320: add bx,320 c1: cmp dx,0 jl add200 cmp dx,199 jg sub200 ret sub200: sub dx,200 ret add200: add dx,200 ret ENDS prog end start Результати роботи програми  Висновок Під час виконання лабораторної роботи я вивчив основні можливості керування екраном в текстовому та графічному режимах. Мною була розроблена програма яка виводить три паралельні лінії і здійснює ними керування. При розробці даної програми були помилки при циклічному зміщенні
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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