Програмування виводу інформації на екран з МП Intel 8086(80286).

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

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

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

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

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

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра САПР Звіт Про виконання Лабораторної роботи №9 Тема: Програмування виводу інформації на екран з МП Intel 8086(80286) Виконала: студентка групи КН-3 Львів – 2008 Тема: Програмування виводу інформації на екран з МП Intel 8086(80286). Мета: Вивчити основні можливості керування екраном в текстовому та графічному режимах. Завдання Написати програму, яка в графічному режимі виводить заяву з проханням перевести студента на 4-й курс. Кожне слово заяви повинно виділятися іншим кольором. За допомогою клавіш вліво і вправо повинні циклічно мінятися кольори слів. Короткі теоретичні відомості Вибір графічного режиму можна виконати за допомогою функції 00h переривання 10h 00H встановити відео режим. Очистити екран: Вхід: AL=режим AL Тип Формат Кольори ═══ ══════ ══════ ═════════════ 0 текст 40x25 16/8 чорно-білий 1 текст 40x25 16/8 2 текст 80x25 16/8 чорно-білий 3 текст 80x25 16/8 4 графіка 320x200 4 5 графіка 320x200 4 чорно-білий 6 графіка 640x200 2 7 текст 80x25 3 (b/w/bold) 0dH графіка 320x200 16 0eH графіка 640x200 16 0fH графіка 640x350 3 (b/w/bold) 10H графіка 640x350 4 или 16 Вивід слів на дисплей здійснюю функцією 9 переривання 10h: 09H писати символ/атрибут в поточній позиції курсору Вход: BH = номер відео сторінки AL = символ, що записується CX = лічильник (скільки копій символу записати) BL = відео атрибут кольору В текстовому режимі для VGA-адаптерів використовується 32 KB пам’яті, в CGA-адаптерів – 16 KB, а в EGA тільки 4 KB. Крім того, відеобуфер в останньому починається з адреси 0b000h, в решти адаптерів – з адреси 0b800h. VGA-адаптери при включені комп’ютера встановлюють режим 7 на монохромному дисплеї і 3 на кольоровому. Екранна пам’ять для текстового режиму знаходиться за адресою починаючи з 0b00h:0000h (для CGA, EGA, VGA адаптерів). Кожній позиції на екрані відповідає слово. В молодшому байті знаходиться код символа, а в старшому – колір(колір символа, фону, ознака мигання). Перші чотири біти байта кольору дають колір символа (всього може бути 16 кольорів). Колір фону визначається бітами 6-4 (всього 8 кольорів). Якщо біт 7 рівний 1, то символ мигає. Об’єм відеопам’яті для текстового режиму 32 KB. Відеопам’ять забезпечує екранні сторінки (0-3) для екрану на 80 стовпчиків та 8 сторінок (0-7) для екрана на 40 стовпчиків. Усі екранні операції виконуються за допомогою команди переривання int 10h, яка передає керування BIOS. В графічних режимах курсор невідображається на екрані, однак він має свою позицію. При використані графічних режимів VGA адреса початку відеобуфера A000:0000. Функція AH=03h 10h переривання дозволяє визначити поточний режим роботи відеоадаптера. В BL повертає номер поточного режиму. BIOS також надає функції читання і запису точки на екрані в графічних режимах. Функція AH=0Ch 10h переривання виводить точку на екран. В BH – номер відеосторінки, DX – номер рядка, CX – номер стовпця, AL – номер кольору. Функція AH=0Dh 10h переривання дозволяє отримати колір точки в AL, координати якої задані в DX – номер рядка, CX – номер стовпця, BH – номер відеосторінки. Функція AH=01h 10h Встановлення розміру курсора. Біти 4-0 в регістрі CH визначають розмір у вертикальному напрямку, а біти 4-0 в регістрі CL – для горизонтального напрямку. Можна встановити будь-який розмір курсора по вертикалі: від 0 до 14 для монохромних та від 0 до 7 для більшості кольорових моніторів. Функція AH=02h 10h Встановлення позиції курсора. Ця функція встановлює курсор на екрані у відповідності з координатами стрічки та стовпчика. В регістрі BH – номер сторінки DH – стрічка DL – стовпчик. Функція AH=04h 10h Читання місцезнаходження світлового пера. Функція AH=05h 10h Вибір активної сторінки. AL – сторінка. Функція AH=06h 10h Прокрутка екрана вверх. В регістр AL заноситься кількість сторінок, BH – атрибут, DX – координати. Функція AH=07h 10h Прокрутка екрана вниз. Функція AH=08h 10h Читання атрибута символа в біжучій позиції курсора. Функція AH=0Аh 10h Вивід символа в біжучу позицію курсора. AL – символ, BH – сторінка, CX – кількість символів. Функція AH=13h 10h Вивід символьної стрічки. Дана функція дозволяє виводити на екран символьні стрічки з встановленням і переміщенням курсора. AL – сервіс, BH – сторінка, BX – адреса рядка, CX – довжина, DX – екран. Організувати вивід на екран, окрім використання 10- го переривання BIOS, можна за допомогою 21 – го переривання DOS. Для цього необхідно в регістрі AH записати 09, в DX – адреса рядка, який необхідно вивести на термінал. Код програми .8086 code segment org 100h assume cs:code,ds:code,es:code,ss:code start: mov ax,0eh ;встановлення графічного відеорежиму і очистка відеосторінки int 10h begin: lea bx,dur ; привоєння bx адреси початку слова з даними про нього call vuvid ; вивід слова у свою позицію з атрибутами символів lea bx,inst call vuvid lea bx,IKN call vuvid lea bx,pas call vuvid lea bx,stud call vuvid lea bx,grp call vuvid lea bx,KN call vuvid lea bx,vlad call vuvid lea bx,zaj call vuvid lea bx,pros call vuvid lea bx,perev call vuvid lea bx,men call vuvid lea bx,na call vuvid lea bx,chetv call vuvid lea bx,kyrs call vuvid lea bx,data call vuvid lea bx,pidp call vuvid mov ah,10h ;очікування клавіші int 16h lea bx,dur mov cx,17 cmp ah,4bh ; клавіша - стрілка вліво? jnz next ; ні - прехід на перевірку стрілки вправо call vlivo ; процедура заміни кольорів по циклу вправо jmp begin ; на початок виведення слів next: cmp ah,4dh ; клавіша - стрілка вправо? jnz endof ; ні - вихід з програми call vpravo ; процедура заміни кольорів по циклу вліво jmp begin ; на початок виведення слів endof: mov ax,03h int 10h mov ah,4ch int 21h dur db 9,47,0,1,'Durektory' ; довжина слова, ст, ряд, атрибут, слово inst db 9,47,1,2,'Instutyty' IKN db 4,57,1,3,'IKNI' pas db 15,47,2,4,'Pasichnuky V.V.' stud db 9,47,3,5,'Stydentku' grp db 5,56,3,6,'grypu' KN db 5,62,3,7,'KN-33' krav db 14,47,4,8,'Ivastchyk T.O.' zaj db 6,33,7,9,'Zajava' pros db 6,5,9,10,'Proshy' perev db 9,12,9,11,'perevestu' men db 4,22,9,12,'mene' na db 2,27,9,13,'na' chetv db 3,30,9,14,'4-i' kyrs db 5,34,9,15,'kyrs.' data db 9,8,11,1,'5.05.2009' pidp db 5,49,11,2,'Tanja' vuvid proc mov cl,byte ptr [bx] ; - довжина слова inc bx mov dx,[bx] ; - позиція звідки писати слово push bx mov ah,02h ;встановлення курсору у відповідну позицію mov bh,0 int 10h pop bx add bx,2 xor dx,dx mov dl,byte ptr [bx] ; атрибут символу inc bx mov di,dx ; атрибут символа і відеосторінка cycl: push cx ;цикл виводу рядка посимвольно з атрибутом push bx mov ah,09h mov cx,1 ;кі-сть раз вивести mov al,[bx] mov bx,di ; 0 - відеосторінка bl - атрибут int 10h mov ah,03h mov bh,0 int 10h add dx,1 ;перестановка курсору на 1 позицію вправо mov ah,02h mov bh,0 int 10h pop bx inc bx ;наступний символ pop cx loop cycl ret vuvid endp vlivo proc mov cx,17 c1: xor ax,ax mov al,byte ptr [bx] add bx,3 add byte ptr [bx],1 and byte ptr [bx],0fh cmp byte ptr [bx],0 jnz nen add byte ptr [bx],1 nen: add bx,ax add bx,1 loop c1 ret vlivo endp vpravo proc mov cx,17 c2: xor ax,ax mov al,byte ptr [bx] add bx,3 sub byte ptr [bx],1 and byte ptr [bx],0fh cmp byte ptr [bx],0 jnz nenul sub byte ptr [bx],1 and byte ptr [bx],0fh nenul: add bx,ax add bx,1 loop c2 ret vpravo endp code ends end start lst – код Turbo Assembler Version 4.1 01/12/09 13:25:42 Page 1 l9.ASM 1 .8086 2 0000 code segment 3 org 100h 4 assume cs:code,ds:code,es:code,ss:code 5 0100 start: 6 0100 B8 000E mov ax,0eh ;встановлення графічного відеорежиму і очистка відеосторінки 7 0103 CD 10 int 10h 8 0105 begin: 9 0105 BB 0193r lea bx,dur ; привоєння bx адреси початку слова з даними про нього 10 0108 E8 0142 call vuvid ; вивід слова у свою позицію з атрибутами символів 11 010B BB 01A0r lea bx,inst 12 010E E8 013C call vuvid 13 0111 BB 01ADr lea bx,IKN 14 0114 E8 0136 call vuvid 15 0117 BB 01B5r lea bx,pas 16 011A E8 0130 call vuvid 17 011D BB 01C8r lea bx,stud 18 0120 E8 012A call vuvid 19 0123 BB 01D4r lea bx,grp 20 0126 E8 0124 call vuvid 21 0129 BB 01DDr lea bx,KN 22 012C E8 011E call vuvid 23 012F BB 01E6r lea bx,vlad 24 0132 E8 0118 call vuvid 25 0135 BB 01F6r lea bx,zaj 26 0138 E8 0112 call vuvid 27 013B BB 0200r lea bx,pros 28 013E E8 010C call vuvid 29 0141 BB 020Ar lea bx,perev 30 0144 E8 0106 call vuvid 31 0147 BB 0217r lea bx,men 32 014A E8 0100 call vuvid 33 014D BB 021Fr lea bx,na 34 0150 E8 00FA call vuvid 35 0153 BB 0225r lea bx,chetv 36 0156 E8 00F4 call vuvid 37 0159 BB 022Cr lea bx,kyrs 38 015C E8 00EE call vuvid 39 015F BB 0235r lea bx,data 40 0162 E8 00E8 call vuvid 41 0165 BB 0242r lea bx,pidp 42 0168 E8 00E2 call vuvid 43 44 016B B4 10 mov ah,10h ;очікування клавіші 45 016D CD 16 int 16h 46 47 016F BB 0193r lea bx,dur 48 0172 B9 0011 mov cx,17 49 0175 80 FC 4B cmp ah,4bh ; клавіша - стрілка вліво? 50 0178 75 05 jnz next ; ні - прехід на перевірку стрілки вправо 51 017A E8 0109 call vlivo ; процедура заміни кольорів по циклу вправо 52 017D EB 86 jmp begin ; на початок виведення слів 53 54 017F 80 FC 4D next: cmp ah,4dh ; клавіша - стрілка вправо? 55 0182 75 06 jnz endof ; ні - вихід з програми 56 0184 E8 011F call vpravo ; процедура заміни кольорів по циклу вліво 57 0187 E9 FF7B jmp begin ; на початок виведення слів Turbo Assembler Version 4.1 01/12/09 13:25:42 Page 2 l9.ASM 58 59 018A B8 0003 endof: mov ax,03h 60 018D CD 10 int 10h 61 62 018F B4 4C mov ah,4ch 63 0191 CD 21 int 21h 64 65 0193 09 2F 00 01 44 75 72+ dur db 9,47,0,1,'Durektory' ; довжина слова, ст, ряд, атрибут, слово 66 65 6B 74 6F 72 79 67 01A0 09 2F 01 02 49 6E 73+ inst db 9,47,1,2,'Instutyty' 68 74 75 74 79 74 79 69 01AD 04 39 01 03 49 4B 4E+ IKN db 4,57,1,3,'IKNI' 70 49 71 01B5 0F 2F 02 04 50 61 73+ pas db 15,47,2,4,'Pasichnuky V.V.' 72 69 63 68 6E 75 6B 79+ 73 20 56 2E 56 2E 74 01C8 08 2F 03 05 53 74 79+ stud db 8,47,3,5,'Stydentku' 75 64 65 6E 74 61 76 01D4 05 38 03 06 67 72 79+ grp db 5,56,3,6,'grypu' 77 70 75 78 01DD 05 3E 03 07 4B 4E 2D+ KN db 5,62,3,7,'KN-33' 79 33 36 80 01E6 0C 2F 04 08 4B 72 61+ vlad db 13,47,4,8,'Ivastchuk T.O.' 81 76 63 69 61 20 56 2E+ 82 56 2E 83 01F6 06 21 07 09 5A 61 6A+ zaj db 6,33,7,9,'Zajava' 84 61 76 61 85 0200 06 05 09 0A 50 72 6F+ pros db 6,5,9,10,'Proshy' 86 73 68 79 87 020A 09 0C 09 0B 70 65 72+ perev db 9,12,9,11,'perevestu' 88 65 76 65 73 74 75 89 0217 04 16 09 0C 6D 65 6E+ men db 4,22,9,12,'mene' 90 65 91 021F 02 1B 09 0D 6E 61 na db 2,27,9,13,'na' 92 0225 03 1E 09 0E 34 2D 69 chetv db 3,30,9,14,'4-i' 93 022C 05 22 09 0F 6B 79 72+ kyrs db 5,34,9,15,'kyrs.' 94 73 2E 95 0235 09 08 0B 01 35 2E 30+ data db 9,8,11,1,'5.05.2009' 96 35 2E 32 30 30 39 97 0242 08 31 0B 02 4B 72 61+ pidp db 8,49,11,2,'Tanja' 98 76 65 63 6A 99 100 024D vuvid proc 101 102 024D 8A 0F mov cl,byte ptr [bx] ; - довжина слова 103 024F 43 inc bx 104 0250 8B 17 mov dx,[bx] ; - позиція звідки писати слово 105 106 0252 53 push bx 107 0253 B4 02 mov ah,02h ;встановлення курсору у відповідну позицію 108 0255 B7 00 mov bh,0 109 0257 CD 10 int 10h 110 0259 5B pop bx 111 112 025A 83 C3 02 add bx,2 113 025D 33 D2 xor dx,dx 114 025F 8A 17 mov dl,byte ptr [bx] ; атрибут символу Turbo Assembler Version 4.1 01/12/09 13:25:42 Page 3 l9.ASM 115 0261 43 inc bx 116 117 0262 8B FA mov di,dx ; атрибут символа і відеосторінка 118 0264 cycl: 119 0264 51 push cx ;цикл виводу рядка посимвольно з атрибутом 120 0265 53 push bx 121 0266 B4 09 mov ah,09h 122 123 0268 B9 0001 mov cx,1 ;кі-сть раз вивести 124 026B 8A 07 mov al,[bx] 125 026D 8B DF mov bx,di ; 0 - відеосторінка bl - атрибут 126 026F CD 10 int 10h 127 128 0271 B4 03 mov ah,03h 129 0273 B7 00 mov bh,0 130 0275 CD 10 int 10h 131 132 0277 83 C2 01 add dx,1 ;перестановка курсору на 1 позицію вправо 133 027A B4 02 mov ah,02h 134 027C B7 00 mov bh,0 135 027E CD 10 int 10h 136 137 0280 5B pop bx 138 0281 43 inc bx ;наступний символ 139 0282 59 pop cx 140 0283 E2 DF loop cycl 141 142 0285 C3 ret 143 0286 vuvid endp 144 145 0286 vlivo proc 146 147 0286 B9 0011 mov cx,17 148 0289 c1: 149 0289 33 C0 xor ax,ax 150 028B 8A 07 mov al,byte ptr [bx] 151 028D 83 C3 03 add bx,3 152 0290 80 07 01 add byte ptr [bx],1 153 0293 80 27 0F and byte ptr [bx],0fh 154 0296 80 3F 00 cmp byte ptr [bx],0 155 0299 75 03 jnz nen 156 029B 80 07 01 add byte ptr [bx],1 157 029E 03 D8 nen: add bx,ax 158 02A0 83 C3 01 add bx,1 159 02A3 E2 E4 loop c1 160 02A5 C3 ret 161 02A6 vlivo endp 162 163 02A6 vpravo proc 164 165 02A6 B9 0011 mov cx,17 166 02A9 c2: 167 02A9 33 C0 xor ax,ax 168 02AB 8A 07 mov al,byte ptr [bx] 169 02AD 83 C3 03 add bx,3 170 02B0 80 2F 01 sub byte ptr [bx],1 171 02B3 80 27 0F and byte ptr [bx],0fh Turbo Assembler Version 4.1 01/12/09 13:25:42 Page 4 l9.ASM 172 02B6 80 3F 00 cmp byte ptr [bx],0 173 02B9 75 06 jnz nenul 174 02BB 80 2F 01 sub byte ptr [bx],1 175 02BE 80 27 0F and byte ptr [bx],0fh 176 02C1 nenul: 177 02C1 03 D8 add bx,ax 178 02C3 83 C3 01 add bx,1 179 02C6 E2 E1 loop c2 180 02C8 C3 ret 181 02C9 vpravo endp 182 02C9 code ends 183 end start Turbo Assembler Version 4.1 01/12/09 13:25:42 Page 5 Symbol Table Symbol Name Type Value ??DATE Text "01/12/09" ??FILENAME Text "l9 " ??TIME Text "13:25:42" ??VERSION Number 040A @CPU Text 0101H @CURSEG Text CODE @FILENAME Text L9 @WORDSIZE Text 2 BEGIN Near CODE:0105 C1 Near CODE:0289 C2 Near CODE:02A9 CHETV Byte CODE:0225 CYCL Near CODE:0264 DATA Byte CODE:0235 DUR Byte CODE:0193 ENDOF Near CODE:018A GRP Byte CODE:01D4 IKN Byte CODE:01AD INST Byte CODE:01A0 KN Byte CODE:01DD KRAV Byte CODE:01E6 KYRS Byte CODE:022C MEN Byte CODE:0217 NA Byte CODE:021F NEN Near CODE:029E NENUL Near CODE:02C1 NEXT Near CODE:017F PAS Byte CODE:01B5 PEREV Byte CODE:020A PIDP Byte CODE:0242 PROS Byte CODE:0200 START Near CODE:0100 STUD Byte CODE:01C8 VLIVO Near CODE:0286 VPRAVO Near CODE:02A6 VUVID Near CODE:024D ZAJ Byte CODE:01F6 Groups & Segments Bit Size Align Combine Class CODE 16 02C9 Para none Результати Після натиснення клавіші «стрілка вправо»:  Висновки На цій лабораторній роботі я навчилася програмувати вивід інформації з допомогою МП Intel 8086(80286).
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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