Учебная работа. Отчет по практике: Микропроцессорные системы

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Контрольные рефераты

Учебная работа. Отчет по практике: Микропроцессорные системы

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ДОНЕЦКИЙ ПОЛИТЕХНИЧЕСКИЙ ТЕХНИКУМ


отчет

По учебной практике

«Микропроцессорные системы»

Вариант №1

Выполнил Бабко Богдан Олегович ОКС 07 – 2

Управляющий Дворниченко Лена Александровна

Донецк

2010


СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1 ОПЕРАЦИИ ВВОДА/ВЫВОДА В БАЗОВОЙ ВЕРСИИ DOS

1.1 Функции ввода с клавиатуры

1.2 Функции вывода на экран

1.3 Сервис клавиатуры ==BIOS-Int 16h

1.4 Описание алгоритмов вывода чисел

1.5 Задание

2 ГЕНЕРАЦИЯ ЗВУКОВЫХ СИГНАЛОВ В ПЭВМ

2.1 Таймер КР1810ВИ54

2.2 Программируемый периферийный интерфейс КР580ВВ 55А

2.3 Генерация звука в IBMPC

2.4 Выполнение задержки

2.5 Область данных ==BIOS

2.6 Задание

3 ПРИНЦИП РАБОТЫ КЛАВИАТУРЫ

3.1 Таблица векторов прерываний

3.2 Комуфлирование прерываний

3.3 Изменение таблицы векторов прерываний

3.4 Задание

4 ПРИНЦИПЫ работы ВИДЕОСИСТЕМЫ ПЭВМ

4.1 Адресация и режимы работы адаптера CGA

4.2 Режим работы монитора

4.3 Задание

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ


ВВЕДЕНИЕ

В хоть какой сфере людской деятель — в науке, технике, производстве — способы и средства вычислительной техники ориентированы на увеличение производительности труда. В связи с сиим уровень профессионалов в значимой мере определяется их подготовкой в последующих направлениях, связанных с применением средств вычислительной техники:

-управление технологическими действиями, включая автоматические контроль и диагностику технических средств;

-использование ЭВМ для автоматического проектирования, научных исследовательских работ, административно-организационного управления.

Быстрое улучшение технологии производства интегральных полупроводниковых компонент, обеспечившее возможность сотворения высокоэкономичных цифровых устройств обработки и хранения инфы, также возникновение действенных средств программирования оказывают все наиболее существенное воздействие не только лишь на развитие техники измерений и управления, да и на подход к автоматизации совершенно. 1-ые пробы внедрения цифровых устройств для автоматизации производственных действий относятся к началу 60-х гг., когда были разработаны 1-ые управляющие вычислительные машинки. В 70-х гг. ЭВМ стала обыденным элементом оборудования автоматических систем.

Предстоящее развитие электрической вычислительной техники привело к ее широкому применению в военном деле, как составной части автоматических систем управления войсками и вооружением. Что предназначило увеличение требований к квалификации современного командира-инженера, которому нужно знать базы организации и функционирования всепригодных и специализированных управляющих электрических вычислительных машин.


1 ОПЕРАЦИИ ВВОДА/ВЫВОДА В БАЗОВОЙ ВЕРСИИ
DOS

Программное прерывание Int 21h – это набор функций, при помощи которых организуется операции ввода/вывода в базисной версии DOS.

1.1
Функции ввода с клавиатуры

аh=01h – Фильтрующий ввод с клавиатуры с ожиданием и эхом на дисплее.

Пример:

movah, 01

int 21h

Итог функции – в AL находится код знака из буфера клавиатуры.

При вводе многофункциональных кнопок (F1,…F12, PgUp и др.) нужно 2 воззвания к данной нам функции. При 1-м AL = 0, при 2-м AL = расширенный код ASCII. В процессе выполнения данной нам функции проверяется нажатие композиций кнопок Ctrl + Break, которая употребляется для прерывания работы программки, если она зацикливается. По Ctrl + Break можно снять программку, если она употребляет функции ввода/вывода, содержащие проверку на Ctrl + Break. Такие функции именуют фильтрующими.

ah = 08h – Фильтрующий ввод знака с клавиатуры с ожиданием без эха.

Пример:

mov ah, 08h

int 21h

Итог функции – в AL код знака.

Различается от предшествующей тем, что знак не отображается на дисплее.

ah = 07h – Не фильтрующий ввод знака с клавиатуры с ожиданием без эха.

Пример:

mov ah, 07h

int 21h

Итог функции – в AL код знака.

Различается от предшествующей тем, что не реагирует на Ctrl + Break.

аh = 0Вh – Проверить статус ввода (фильтрующая).

Функция инспектирует на наличия знака в буфере клавиатуры без извлечения его из буфера.

Пример:

Mov ah, 0Вh

Int 21h

Итог функции – AL = 00h, если буфер пуст, и AL=FFh, если есть знак в буфере клавиатуры.

Пример выхода из программки по нажатию клавиши ESC без ожидания нажатия клавиши.

mov ah, 0bh

int 21h

cmp al,0

jz m1

mov ah, 07h

int 21h

cmp al, 27

jne m1

mov ax, 4C00h

int 21h

m1: ;—Продолжение программки

ah=0Ch – Чтение с подготовительной чистки буфера .

Пример:

movah, 0Ch

moval, <номер функции 01h, 07h, 08h, 06h,либо 0Ah>

int 21h

Чтоб программка не читала из буфера клавиатуры издавна нажатую кнопку, данная функция очищает буфер клавиатуры, а потом делает функцию, номер которой указана в регистре al. Для функций 06h и 0Ah нужно указать доп характеристики в регистре dl и dx. Реакция на Ctrl – Break определяется применяемой функцией ввода.

ah=0Ah – Ввод строчки в буфер ввода(фильтрующая).

Для ввода строчки необходимо приготовить блок характеристик.

Пример:

BL_par label byte

Maxlen db 7

Actlen db ?

S db 7 dup(?)

……………….

Movah, 0Ah

Leadx, BL_par ;адресок поля блока характеристик

Int 21h

Итог функции – в поле S введённая строчка, а в поле Actlen длинна введённой строчки.

Функция ждет ввода строчки начиная с текущей позиции курсора. юзер может набрать на дисплее 6 знаков максимум (т.е. Maxlen — 1), а при вводе последующего знака выдаётся предупреждающий звуковой сигнал и знак не вводится. Набор строчки заканчивается нажатием клавиши Enter, до нажатия Enter при помощи BackSpace строчку можно отредактировать.

к примеру:

Если набранная строчка – Строчка Enter

Тогда Actlen =6


‘С’



‘Т’
‘Р’
‘О’
‘К’
‘А’
0Dh(Код Enter)

S=

Если набрана строчка – 123 Enter

Тогда Actlen = 3


‘1’
‘2’
‘3’
0Dh(Код Enter)

S=

Если набранная строчка – Строчка — Enter

Тогда Actlen = 0


0Dh
X
X
X
X
X

S =

1.2 Функции вывода на экран

Ah=02h – Вывод знака на экран (фильтрующая)

Пример

movah, 02

movdl, 35hили dl, ‘5’

int21h

В регистр dl помещается ASCII-код знака либо указывается конкретно сам знак в кавычках. Функция выводит знак на экран в текущую позицию курсора и перемещает курсор на Право на одну позицию. На знак BackSpace перемещает курсор на лево на одну позицию. Функция реагирует на вывод управляющих кодов 07h(звонок), 08h(BackSpace), 09h(Tab), 0Ah(lf), 0Dh(cr).

ah=09h – Вывод строчки.

Пример:

Msg db 13,10эPress and key…$’

mov ah, 09h

lea dx, Msg

int21h

В регистр dx помещается адресок выводимой строчки, которая обязана быть за ранее описана в секторе данных, при всем этом в конце строчки непременно необходимо указать знак $ (конец строчки). 13 и 10 – это ASCII-коды знаков возврата каретки и перевода строчки, которые указываются для вывода строчки в первую позицию новейшей строчки экрана. действие функции вполне аналогично функции 02h, но выводится не один знак, а целая строчка.

1.3 Сервис клавиатуры
==BIOS

Int
16
h

Клавиши Alt, Ctrl левый и правый Shift именуются кнопками сдвига. При нажатии таковой клавиши соответственный бит б состояния клавиатуры устанавливается в 1, а при отпускании сбрасывается в 0. Клавиши Insert, Caps Lock, Scroll Lock, Num Lock называютсяклавишамирежимов. При первом нажатии таковой клавиши в соответственный бит б состояния клавиатуры записывается 1 (Режим установлен), при последующем – 0 и т.д. Нажатие клавиши сдвига либо режима не изменяет содержимого буфера клавиатуры. Они обеспечивают расширение способности управления ЭВМ в разных программных системах.

Предназначение бит регистра флагов клавиатуры последующее:

7 6 5 4 3 2 1 0


Insert
Caps Lock
Num Lock
Scroll Lock
Alt
Ctrl
Shift левый
Shift правый

Клавиши режимов Состояния кнопок сдвигов

Для чтения данного регистра флагов употребляется функция 02h прерывания BIOSInt 16h.

ah=02h – Читать б флагов клавиатуры (статус флагов клавиатуры).

Пример:

Movah, 02h

int16h

Итог функции – в AL б флагов клавиатуры.

Пример окончания повторяющейся программки при нажатой клавише Ctrl:

c:…………………. ; основная часть программки

Movah,02h

Int 16h

Andal, 00000100b ; выделение флага Сtrl

Jzc

Movax, 4c00h ; выход из программки

Int 21h

При нажатии клавиши Ctrl взводится бит 2 в статусе клавиатуры и пока кнопка нажата остается в состоянии «1». При отпускании клавиши делается сброс флага Ctrl. Другие флаги работают аналогично.

Значении байтов флагов клавиатуры хранится по адресу 0040:0017hв области данный BIOS(0040:0000h – 0040:00FFh). Потому проверку флага клавиатуры можно выполнить прямым воззванием к ячейке 0040:0017h.

Этот же пример без использования int 16h

MovES, 40h

MovSI, 17

C:…………………. ; основная часть программки

MovAL, ES:[SI]; итог данной нам команды таковой же, как и у функции ah=02hint 16h

AndAL, 04h

Jzc

Movax, 4c00h; выход из программки

Int21h

1.4 Описание алгоритмов вывода чисел

Вывод числа в 2 с/с

1. Внесите число для вывода в регистр(к примеру в bl).

2. Сделайте сдвиг на один разряд на лево через флаг переноса

3. Обнулите вспомогательный регистр (к примеру dl).

4. сделайте сдвиг dl на один разряд на лево так , чтоб содержимое флага переноса попало в младший бит регистра dl.

5. прибавьте к регистру dlконстанту 30h для преобразования числа в ASCII-код знака данного числа и выведите на экран приобретенный знак.

6. Сделайте шаги 2-5 восемь раз для вывода всего б.

Схема выполнения сдвигов:

Вывод числа в 16 с/с

1. Внесите число для вывода в регистр ( к примеру в bl).

2. Сдвиньте bl на 4-ре разряда на Право так, чтоб старшие разряды стали нулевыми.

3. Сравните получившееся число с цифрой 9 и если оно меньше ли равно, то прибавьте к данному числу константу 30h ( для получения ASCII-кодов цифр 0-9 ).

4. Опять внесите начальное число в регистр bl.

5. Обнулите старшие 4-ре разряда и повторите пункт 3.

1.5 Задание

а) Сделайте преобразование чисел из 2 с/с в 16 с/с, 10 с/с (ПК без знака), 10 с/с (ПК со знаком) и 10 с/с (ДК) в согласовании с вариантом 3.

Конвертировать число из 2 с/с в 16 с/с.

1) 0011 00102 →3 216

2) 1010 00112 →A 316

3) 0101 01012 →5 516

4) 1011 10002 →B 816

5) 0111 00102 →7 216

6) 1001 10102 →9 A16

Конвертировать число из 2 с/с в 10 с/с (ПК без знака)

1) 0011 00102 →32+16+2=5010

2) 1010 00112 →128+32+2+1=16310

3) 0101 01012 →64+16+4+1=8510

4) 1011 10002 →128+32+16+8=18410

5) 0111 00102 →64+32+16+2=11410

6) 1001 10102 →128+16+8+2=15410

Конвертировать число из 2 с/с в 10 с/с (ПК со знаком)

1) 0011 00102 →32+16+2=+5010

2) 1010 00112 →32+2+1=-3510

3) 0101 01012 →64+16+4+1=+8510

4) 1011 10002 →32+16+8=-5610

5) 0111 00102 →64+32+16+2=+12410

6) 1001 10102 →16+8+2=-26

Конвертировать число из 2 с/с в 10 с/с (ДК)

1) 0011 00102 →32+16+2=+5010

2) 1010 00112 → 11011101= 64+16+8+4+1=-93

3) 0101 01012 →64+16+4+1=+8510

4) 1011 10002 → 11001000= 64+8=-72

5) 0111 00102 →64+32+16+2=+12410

6) 1001 10102 → 11100110= 64+32+4+2=-102

б) Написать программку, которая делает вывод ASCII кода нажатой клавиши в 2 с/с и 16 с/с. Окончание программки обязано происходить по нажатию клавиши NumLock



Продолжение блок — схемы

Набросок 1.1 – Блок схема главный программки


Основная программка

Stac segment

db 64 dup (0)

ends

data segment

Msg db 13,10,»

System16 db 13,10,’16 б/б=$’

System2 db 13,10,’2 б/б=$’

Pystaya db 13,10,’$’

stQ db 13,10,»

ends

code segment

assume ds:data, cs:code, ss:stac

Start:

mov ax, data

mov ds, ax

mov es, ax

;———————————————

c:; Вывод строчки ‘Нажмите всякую кнопку…’

mov ah, 09h

lea dx , Msg

int 21h

;Вывод ASCII код нажатой клавиши

mov ah, 01h

int 21h

mov cx, 8; Занесение в CX кол-ва циклов

mov bl, al; Сохранение AL в BL

mov bh, al;Сохранение Al в BH

;Вывод строчки э2 с/с=’

mov ah, 09h

lea dx, System2

int 21h

m1: sal bl, 1; Сдвиг BL на 1 разряд

mov dl, 0;Обнуление DL

rcl dl, 1;Сдвиг dl на 1 разряд

add dl, 30h; DL=DL+30

;Вывод DL

mov ah, 02h

int 21h

loop m1

;Вывод строчки ’16 c/c=’

mov ah, 09h

lea dx, System16

int 21h

mov bl, bh; Загрузкаисходного AL

mov cx, 4

sar bl, cl;Сдвиг BL c 9

cmp bl, 9 ; Сопоставление BL c 9

jle m2 ;Переход на m2 если <либо=

add bl, 37h; BL=BL+37

jmp m3; Переход на m3

m2: add bl, 30h;BL=BL+30

;Вывод m3

m3: mov ah, 02h

mov dl, bl

int 21h

mov bl, bh; загрузка начального AL

and bl, 0Fh;Обнуление первых 4 разрядов

cmp bl, 9;Сопоставление bl c 9

jle m4 ; Переход на m4 если <либо=

add bl, 37h; BL=BL+37

jmp m6 ; Переход на m6

M4: add bl, 30h; BL=BL+30

;Вывод BL

M6: mov ah, 02h

mov dl, bl

int 21h

mov ah, 09h

lea dx, stQ

int 21h

mov ah, 02h

int 16h

and al,10000000b

jz d

mov ax, 4c00h

int 21h

d: jmp c

ends

END Start

Набросок 1.2 – Итог работы программки


2 ГЕНЕРАЦИЯ ЗВУКОВЫХ СИГНАЛОВ В ПЭВМ

Для генерации звука в ПЭВМ употребляется программируемый таймер и программируемый параллельный интерфейс. Потому коротко разглядим внедрение данных микросхем в ПЭВМ.

2.1 Таймер КР1810ВИ54

Для задания временных интервалов и формирования сигналов с разными временными параметрами в IBMPC применяется программируемый таймер i8254 (российский аналог КР1810ВИ54) набросок 2.1.

Набросок 2.1 – Условно графическое обозначение таймера КР1810ВИ54

Таймер содержит три независящих канала, любой из которого можно запрограммировать на работу в одном из 6 режимов. Программирование канала осуществляется путём ввода управляющих слов в регистр режима канала и исходного значения в его счётчики. Любой канал имеет управляющий вход GATE и выход OUT и может работать в одном из последующих 6 режимов, Которые условно можно поделить на три группы: Программируемый одновибратор (режимы 0 и 1), делитель частоты (режимы 2 и 3) , счётчик событий (режимы 4 и 5). При всем этом режимы 0, 4 – это режимы автозагрузки, т.е. опосля окончания выполнения функция без перепрограммирования по фронту сигнала GATE. Режимы 2, 3 – это режимы авто загрузки, т.е. опосля окончания выполнения функция без перепрограммирования начинает производиться поновой.

Режим 0 – прерывание терминального счёта.

Режим 1 – ждущий мультивибратор.

Режим 2 – генератор частоты.

Режим 3 – генератор меандра.

Режим 3 – счётчик событий.

Режим 5 – счётчик событий с автозагрузкой.

Для работы таймера его необходимо запрограммировать на нужный вид работы и загрузить в него константу счётчика. В IBMPC таймер имеет последующие программируемые порты:

Таблица 2.1 – Программируемые порты


адресок
Операция
Предназначение

40h

запись

чтение


загрузка счётчика канала 0

Чтение счётчика канала 0




41h

запись

чтение


загрузка счётчика канала 1

Чтение счётчика канала 1




42h

запись

чтение


загрузка счётчика канала 2

Чтение счётчика канала 2




43h
запись
Запись управляющего слова в регистр режима канала

Для задания режима работы таймера необходимо записать в порт 43h константу в согласовании с форматом управляющего слова (набросок 2.2). А потом в порт 40h, 41h либо 42h, зависимо от программирующего канала, записать константу счётчика (для генерации звука данная константа задаёт частоту звука).


Набросок 2.2 – формат управляющего слова

Канал таймера имеет последующее предназначение в IBMPC.

Таблица 2.2 – Предназначение каналов таймера


канал
Предназначение
Режим

0
Системные часы (IRQ0)
Режим 3, счётчик=0 (65536)

1
запрос для канала 0 ПДП (регенерация памяти)
Режим 2, счётчик=18

2
генератор звука
-

Для генерации звука в IBMPC употребляется канал 2, который программируется на режим 3, временная диаграмма которого показана на рисунке 2.3.

Набросок 2.3 – Временная диаграмма работы таймера в режиме 3


Тактовая частота всякого канала равна 1,19318 МГц, т.е. любой такт имеет продолжительность 0,84 мсек. Вход GATEканалов 0 и 1 постоянно имеют высочайший уровень, потому счёт на этих каналах разрешён постоянно. Вход GATE канала 2 управляется битом 0 порта РВ интерфейса i8255 связанного с портом 61h.

При исходной загрузке ==BIOS инициализирует канал 0 для работы в режиме 3 со счётчиком 0( т.е. 65536 декрементов на цикл счёта). Потому частота системных часов равна 1,19 Мгц/65536= 18.2 Гц и прерывание IRQ0, связанное с вектором Int 8, происходит 18,2 раз в секунду, т.е. любые 55 мсек возрастает на единицу

канал 1 работает в режиме 2 со счётчиком 18, потому регенерация памяти происходит любые 18 мсек. Перепрограммировать канал 0 и канал 1 недозволено, т.к. это приведёт к нарушению целостности данных в ОЗУ.

2.2 Программируемый периферийный интерфейс КР580ВВ 55А

В состав IBMPC заходит программируемый периферийный интерфейс (ППИ) i8255 (российский аналог KP580BB55A) рисунок4 .ППИ содержит три 8-разрядных порта (PA, PB, и PC) для организации обмена меж ЦП и наружными устройствами, и регистр управления. Порты сгруппированы в две группы : группа А состоит из порта PA и старшей тетрады порта PC, группа B – из порта PB и младшей тетрады порта PC. Группа А может работать в 3-х режимах (0,1,2); группа B в 2-ух (0 и 1). Режимы определяются содержимым регистра управления , имеющим формат изображенный на рисунке 2.5.


Набросок 2.4 – условное графическое обозначение ППИ КР580ВВ 55А


Набросок 2.5 – формат регистра управления ППИ

Режим 0 – главный режим Ввода – вывода (однонаправленный синхронный обмен).В этом режиме группа делится на два набора (порт и тетрада PC).В данном режиме порт PA,PB и тетрады (0-3), PC(4-7) могут употребляться для передачи данных меж ЦП и наружными устройствами. Их можно программировать на ввод либо вывод, для этого необходимо только загрузить нужную константу в управляющий регистр ППИ (рис.2)

Режим 1 – режим стробируемого ввода-вывода (однонаправленный асинхронный обмен по прерыванию). Порты РА и РВ употребляются для передачи данных, РС – для управляющих сигналов.

Режим 2 – режим двунаправленной шины (двунаправленный асинхронный обмен по прерыванию). Этот режим допустим лишь для группы А. В нем порт А становится двунаправленным, а 5-ть разрядов порта РС употребляются для управления портом РА.

ППИ в IBM РС занимает порты 60h – 63h. ==BIOS вносит в регистр управления (порт 63h) 99h, т.е. программирует группы А и В в режим 0, при этом РА и РС является портами ввода, а РВ – портом вывода. Предназначение портов последующее:

Таблица 2.3 – Предназначение портов


адресок
Операция
Предназначение

60h
чтение
Вывод из порта РА

61h

чтение

запись


Вывод из порта РВ

Вывод в порт РВ




62h
чтение
Вывод из порта РС

63h
запись
Ввод управляющего слова в регистр управления ППИ

Содержимое порта РВ изображено на рисунке 2.6.

Набросок 2.6 – содержимое порта РВ

2.3 Генерация звука в
IBM
PC

Схема генерации звука в IBMPC изображена на рисунке 2.7.



Набросок 2.7 — Схема генерации звука в IBMPC

На вход звукогенератора поступает логическое “И” 2-ух сигналов: выхода OUT 2-го канала таймера и содержимого бита 1 порта РВ интерфейса i8255. Обыденный метод генерации звука состоит в программировании канала 2 таймера так, чтоб он выдавал прямоугольный импульс данной частоты, лежащий в звуковом спектре (20Гц – 20 КГц). Для этого следует употреблять режим таймера 3 с пригодным исходным значением счетчика. Если потом установить биты 0 и 1 порта РВ, то импульс начнет поступать на вход звукогенератора (бит 0 – это вход GATE канала 2, разрешающий счет, а бит 1 – разрешение выдачи выхода OUT на вход звукогенератора). Для выключения звука довольно сбросить биты 0 и 1 порта РВ. Преимущество этого способа заключается в том, что, запустив генерацию звука, ЦП может делать остальные деяния.

N = 1193181/F

где 193181 – тактовая частота таймера в Гц

F – требуемая частота звука в Гц

к примеру: Если нужная частота равна 1 кГц = 1000Гц , тогда константа счетчика равна 1193181/1000 = 1193 (10с/с) = 4А9 (16с/с).

2.4 Выполнение задержки

В ==BIOS существует 4 ячейки памяти, в каких хранится системное время. В итоге прерывания от таймера содержимое этих ячеек возрастает на 1, т.е. любые 55 мс этот меняется. По адресу 0000:046E находится старшее слово, а по адресу 0000:046Е младшее слово системного счетчика времени.

Для счета времени (т.е. задержки) необходимо прочесть содержимое этого счетчика и прибавить константу нужной задержки. Потом в цикле считывать содержимое счетчика и ассоциировать его с приобретенной суммой, а когда содержимое счетчика станет равным сумме (т.е. данное время задержки истекло) нужно выйти из цикла.

Константа нужной задержки считается последующим образом:

Задержка/55мс = константа

к примеру:

Если нужная задержка равна 550мс, тогда константа равна 550мс/55мс = 10 (10с/с) = ОА (16с/c).

2.5 Область данных
==BIOS

Область главный памяти размером 256 б размещена конкретно ха таблицей векторов прерываний, начиная с адреса 0040:0000 и кончая 004F:0000, создана для использования программками ==BIOS. В таблице приведено описание части инфы, помещаемой в ==BIOS в обозначенную область памяти. Обращаясь к ней, прикладные программки получают важную информацию о состоянии системы.

Таблица 2.4 – Область данных портов


адресок (сектор: смещение)
Длина (в б)
Наименование и описание

ОБЛАСТЬ ДАННЫХ ПОСЛЕДОВАТЕЛЬНОГОПАРАЛЛЕНЛЬНОГО ПОРТОВ

0040:0000
8
Базисный адресок ввода-вывода для COM1-COM4

0040:0008
8
Базисный адресок ввода-вывода для LPT1-LPT4

СМЕШАННАЯ ОБЛАСТЬ ДАННЫХ

0040:0010
2
Флаги оборудования

0040:0013
2
Обьём памяти в кб

ОБЛАСТЬ ДАННЫХ КЛАВИАТУРЫ 1

0040:0017
1
Флаги 1 состояния регистров клавиатуры

0040:0018
1
Флаги 2 состояния регистров клавиатуры

0040:0019
1
Ввод с доп клавиатурного поля

0040:001А
2
адресок начла буфера клавиатуры

0040:001С
2
адресок конца буфера клавиатуры

0040:01Е
32
Буфер клавиатуры

ОБЛАСТЬ НАКОПИТЕЛЯ FDD

0040:003Е
1
состояние повторной калибровки

0040:003А
1
Состояние мотора

0040:0040
1
Счетчик числа

0040:0041
1
состояние крайней операции

0040:0042
7
Байты состояния контроллера

ОБЛАСТЬ ДАННЫХВИДЕОАДАПТЕРА 1

0040:0049
1
Текущий видеорежим

0040:004А
2
количество столбцов в отображаемом тексте

0040:004С
2
Длина буфера регенерации в б

0040:004У
2
адресок смещения активной видеостраницы

0040:0050
16
Положение курсора (видеостраницы 0-7)

0040:0060
2
Тип курсора (нач. и кон. строчки развертки)

0040:0062
1
Активная видеостраница

0040:0063
2
Базисный адресок видеоконтроллера

0040:0065
1
Текущая установка регистра 3х8

0040:0066
1
текущая установка регистра 3х9

ОБЛАСТЬ ДАННЫХ СИСТЕМНОГО ТАЙМЕРА

0040:006С
2
Младшее словосодержимого таймера

0040:006Е
2
Старшее слово содержимого таймера

0040:0070
1
Индикатор наполнения таймера

СИСТЕМНАЯ ОБЛАСТЬ ДАННЫХ

0040:0071
1
б =BIOS_BREAK

0040:0072
2
Флаг сброса

ОБЛАСТЬ ДАННЫХ ЖЕСТКОГО ДИСКА

0040:0074
1
состояние крайней операции

0040:0075
1
Число накопителей HDD

ВРЕМЕНА ОЖИДАНИЯ РЕАКЦИИ (ТАЙМАУТЫ)

0040:0078
4
значения времен ожидания для LPT1-LPT4

0040:007С
4
значения времен ожидания для COM1-COM4

ОБЛАСТЬ ДАННЫХ КЛАВИАТУРЫ

0040:0080
2
адресок начала буфера клавиатуры

0040:0082
2

ОБЛАСТЬ ДАННЫХ ВИДЕОАДАПТЕРА 2

0040:0084
1
Число отображаемых строк текста минус 1

0040:0085
2
высота знака в строчках развертки

0040:0087
1
характеристики видеорежима

0040:0088
1
Характеристики видеорежима

ОБЛАСТЬ СВЯЗИ МЕЖДУ ПРОГРАММАМИ

0040:00F0
16
Область, где программка может записатьсчитать данные (к примеру статус)

2.6 Задание

Напишите программку генерации последовательности звуковых сигналов, имеющих последующие свойства:

— 1-ый сигнал : частота F1, продолжительность T1.

— 2-ой сигнал : частота F2, продолжительность T2.

— Пауза меж сигналами : продолжительность Р1

Черта F1, F2, T1, T2, P1 выбираются из таблицы задания согласно варианту.

Программку нужно оформить в виде главный программки и 2-ух подпрограмм.

— 1-ая подпрограмма делает генерацию звука.

— 2-ая подпрограмма делает задержку.

— Основная программка делает вызовы подпрограмм в подходящей последовательности.


№Варианта
F1, кгц
T1, мс
P1, мс
F2, кГц
Т2, мс

1
5
500
150
9,5
800


Набросок 2.9 – Блок – схема главный программки

Основная программка

stac segment

db 64 dup (0)

ends

data segment

stQ db 13,10,»

ends

code segment

assume ds:data, cs:code, ss:stac

Start:

mov ax,data

mov ds,ax

mov es,ax

mov ah,09h

lea dx,stQ

int 21h

m0: call Sound0

mov bx,00efh

call Sound

mov dx, 0009h

call Sound2

mov dx, 0003h

call Sound2

mov bx,007eh

call Sound

mov dx, 000fh

call Sound2

mov ah,02h

int 16h

and al,00100000b

jz m0

jmp m_end

Sound0 Proc near

in al,[61h]

and al,0fch

out [61h],al

ret

Endp

Sound Proc near

mov bx,04a9h

mov dx,0043h

mov al,0beh

out dx,al

dec dx

mov al,bl

out dx,al

mov al,bh

out dx,al

in al,[61h]

or al,03h

out [61h],al

ret

Endp

Sound2 Proc near

xor ax,ax

mov es,ax

mov ax,es:[046ch]

add dx,ax

m1: mov ax,es:[046ch]

cmp dx,ax

jnz m1

in al,[61h]

and al,0fch

out [61h],al

ret

Endp

m_end:

mov ax,4c00h

int 21h

ends

END Start

Набросок 3 – Итог работы программки


3 ПРИНЦИП РАБОТЫ КЛАВИАТУРЫ

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

Набросок 3.1 – Принципная схема клавиатуры

При нажатии хоть какой клавиши микроконтроллер производит Scan-код нажатой клавиши. Scan-код различается от обычного ASCII кода знака. Scan-код – это просто номер клавиши на клавиатуре. Таковым образом Scan-код кнопок ” F ” и “ f ” схож. Таблица неких Scan-кодов приведена ниже.


Таблица 3.1 – Набор Scan — кодов


16сс
10сс
кнопка
16сс
10сс
кнопка
16сс
10сс
кнопка

01
1
esc
1d
29
Ctrl
39
57
Space

02
2
1 !
1e
30
A
3a
58
Caps Lock

03
3
2 @
1f
31
s
3b
59
F1

04
4
3 #
20
32
d
3c
60
F2

05
5
4 $
21
33
f
3d
61
F3

06
6
5%
22
34
g
3e
62
F4

07
7
6 ^
23
35
h
3f
63
F5

08
8
7 &
24
36
j
40
64
F6

09
9
8 *
25
37
k
41
65
F7

0a
10
9 (
26
38
l
42
66
F8

0b
11
0 )
27
39
; :
43
67
F9

0c
12
— _
28
40
«
44
68
F10

0d
13
= +
29
41
` ~
45
69
Num Lock

0e
14
<-
2a
42
Shift (L)
46
70
Scroll Lock

0f
15
tab
2b
43
|
47
71
Home 7

10
16
q
2c
44
z
48
72
↑ 8

11
17
w
2d
45
x
49
73
Pg Up 9

12
18
esc
2e
46
Ctrl
4a
74

13
19
r
2f
47
v
4b
75

14
20
t
30
48
b
4c
76
— 5

15
21
y
31
49
n
4d
77
↔ 46

16
22
u
32
50
m
4e
78
+

17
23
i
33
51
, <
4f
79
End 1

18
24
o
34
52
. >
50
80
↓ 2

19
25
p
35
53
/ ?
51
81
Pg Dn 3

1a
26
[ {
36
54
Shift ®
52
82
Ins 0

1b
27
] }
37
55
Prt Sc
53
83
del .

1c
28
Enter
38
56
Alt
54

Микроконтроллер передает скан-код в адаптер связи с клавиатурой, расположенный на системной плате. адаптер связи конвертирует приобретенный поочередный код в параллельный, передает его на входы порта ввода/вывода РА ППИ и устанавливает высочайший уровень сигналаIRQ1- запрос на прерывание в контроллер прерываний КР1810ВН59Л. По этому сигналу контроллер сформировывает запрос на аппаратное прерывание микропроцессора с вектором (типом прерывания) 09Н. машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) (либо вычислительной системы) которое делает арифметические и логические операции данные программкой преобразования инфы управляет вычислительным действием и коор прекращает свою работу и делает обработчик прерывания 09h. Который читает Scan-код из порта 60Н (порт РА ППИ) и анализирует Scan-код. Для дешифрации Scan-кодов обработчик прерывания 9h содержит специальную таблицу поиска. Обработчик также инспектирует, не является ли скан-код кодом FFh, указывающим на переполнение 4-символьного аппаратного буфера Scan-кодов клавиатуры. При обнаружении кода FFh прерывание 9h докладывает о переполнении сигналом динамика. Когда поступает код от клавиши сдвига либо переключателя, то в специальной переменной в памяти ПЭВМ фиксируется изменение статуса (к примеру, переключение с верхнею регистра на нижний). Во всех других вариантах Scan-код преобразовывается в код знака ASCII. Естественно, процедура поначалу описывает установку кнопок сдвига и переключателей, чтоб верно получить вводимый код (это «а» либо «А»). Опосля этого введенный код помещается в буфер клавиатуры, который представляем собой область памяти, способную уяснить до 15 вводимых знаков, пока программка очень занята, чтоб обработать их.

При чтении Scan-кода из порта ввода РА ППИ он не меняется и неважно какая иная программка может также его прочесть. Обработчик прерывания докладывает адаптеру связи с клавиатурой о окончании чтения скан-кода краткосрочной установкой бита 7 порта вывода РВ IIПИ. По этому сигналу сбрасывается содержимое регистра адаптера связи и снимается сигнал запроса на прерывание IRQ1. Обработчик прерывания завершает свою работу выдачей сообщения контроллеру прерывания о окончании обработки. Для этого обработчик выдает код 20Н в порт 20Н (совпадение адреса порта и кода случайное).

Прерывание 9h является аппаратно-зависимым, потому его обработчик для 83-клавиатуры различается от обработчика для расширенной 101-клавишной клавиатуры.


3.1 Таблица векторов прерываний

Для того чтоб связать адресок обработчика прерывания с номером прерывания, употребляется таблица векторов прерываний, занимающая 1-ый кб оперативки — адреса от 0000:0000 до 0000:03FF. Таблица состоит из 256 частей — FAR-адресов обработчиков прерываний. Эти элементы именуются векторами прерываний. В первом слове элемента таблицы записано смещение, а во 2-м — адресок сектора обработчика прерывания.

Таблица 3.2 – Векторы прерываний


Номер
Описание

0
Ошибка деления. Вызывается автоматом опосля выполнения установок DIV либо IDIV, если в итоге деления происходит переполнение (к примеру при делении на 0). DOS обычно при обработке этого прерывание выводит сообщение о ошибке и останавливает выполнение программки. Для микропроцессора 8086 при всем этом адресок возврата показывает на последующую опосля команды деления команду, а в микропроцессоре 80286- на 1-ый б команды вызвавшей прерывание.

1
Прерывание пошагового режима. Вырабатывается опосля выполнения каждой машинкой команды. Если в слове флагов установлен бит пофлаговой трассирови TF. Употребляется для отладки программ. Это прерывание не вырабатывается опосля выполнения команды MOV в сегментные регистры либо опосля загрузки сегментных регистров командой POP.

2
Аппаратное немаскируемое прерывание. Это прерывание может употребляться по различному в различных машинках. Обычно вырабатывается при ошибке четности оперативки либо запросе прерывпания сопроцессора.

3
Прерывание для трассировки. Это прерывание генерируется при выполнении однобайтовой машинкой с кодом CCh и обычно употребляется отладчиками для установки точки прерывания.

4
Переполнение. Генерируется машинной командой INTO, если установлен флаг OF. Если флаг установлен, то команда INTO производится как NOP Это прерывание употребляется для обработки ошибок арифметических операций.

5
Печать копии экрана. Генерируется при нажатии на клавиатуре PrtScr. Обычно употребляется для печати вида экрана. Для микропроцессора 80286 генерируется при выполнении машинной команды BOUND, если проверяемое времени.

71
IRQ9 прерывание от контроллера EGA

75
IRQ13 прерывание от математического сопроцессора

76
IRQ14 прерывание от контроллера твердого диска

Прерыванию с номером 0 соответствует адресок 0000:0000. прерыванию с номером 1 — 0000:0004 и т.д. Потому прерыванию от клавиатуры 09h соответствует адресок 0000:0024. т.е.в ячейке с адресом 0000:0024 хранится смещение обработчика прерывания, а в ячейке с адресом 00:00026 хранится адресок сектора этого обработчика прерывания.

инициализация таблицы происходит отчасти =BIOS опосля тестирования аппаратуры и перед началом загрузки операционной системой, отчасти при загрузке DOS. DOSможет переключить на себя некие прерывания ==BIOS.

Ниже приведены предназначения неких векторов прерываний:

3.2 Комуфлирование прерывани
й

Нередко при выполнении критичных участков программ, для того чтоб гарантировать определенную последовательность установок полностью приходится воспрещать прерывания. Это можно создать командой CLI. Ее необходимо поместить в начало критичной последовательности установок, а в конце расположить команду STI, разрешающую микропроцессору принимать прерывания. Команда CLI

Воспрещает лишь маскируемые прерывания, немаскируемые постоянно обрабатываются микропроцессором.

Если вы используете запрет прерываний при помощи команды CLI, смотрите за тем, чтоб прерывания не отключались на долгий период времени, т.к это может привести к ненужным последствиям. к примеру будут отставать часы.

3.3 Изменение таблицы векторов прерываний

Вашей программке может потребоваться организовать обработку неких прерываний. Для этого программка обязана переназначить вектор на собственный обработчик. Это можно создать, изменив содержимое соответственного элемента таблицы векторов прерывания.

Весьма принципиально не запамятовать перед окончанием работы вернуть содержимое модифицированных векторов в таблице прерываний, т.к. опосля окончания работы программки память, которая была ей распределена, считается вольной и быть может применена для загрузки иной программки. Если вы запамятовали вернуть вектор и пришло прерывание, то система может разрушиться – вектор сейчас показывает на область, которая может содержать что угодно.

Потому последовательность действий для нерезидентных программ, желающих обрабатывать прерывания, обязана быть таковой:

— прочесть содержимое элемента таблицы векторов прерываний для вектора с необходимым для вас номером

— уяснить это содержимое (адресок старенького обработчика прерывания) в области данных программки;

— установить новейший адресок в таблице векторов прерываний так, чтоб он соответствовал началу Вашей программки обработки прерывания;

— перед окончанием работы программки прочесть из области данных адресок старенького обработчика прерывания и записать его в таблицу векторов прерываний.

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

3.4 Задание

Напишите программку, которая перехватывает 09h и делает последующие функции:

= читает Scan-код нажатой клавиши;

= анализирует введенный Scan-код:

-если введенный Scan-код — это клавиши К1, то включает звук с частотой F1 кГц и перебегает к системному обработчику 09h.

-если введенный Scan-код — это клавиши К2, то выключает звук с частотой F1 кГц и перебегает к системному обработчику 09h.

-если хоть какой иной Scan-код, то вызывает системный обработчик прерывания 09h.

= выходит из программки по нажатию данной клавиши


Набросок 3.2 – Блок — схема главный программки



№ Варианта
F1, кГц
К1
К2
Кнопка выхода

1
5,5
A
0
Insert

Основная программка

Программка перехватывает прерывание 09h. По нажатию клавиши C генерирует звук частотой 9,5 кГц, а по нажатию клавиши 2 выключает звук. По клавише Scroll lock – выход из программки.

stacsegment

db 64 dup (0)

ends

data segment

old_offs dw ?

old_seg dw ?

msg db

ends

code segment

assume ds:data, cs:code, ss:stac

Start: mov ax,data

mov ds,ax

mov es,ax

mov ax,0

mov es,ax

mov ax,es:[0024h]

mov old_offs,ax

mov ax,es:[0026h]

mov old_seg,ax

cli

mov Word ptr es:[0024h], offset my_int

mov word ptr es:[0026h], seg my_int

sti

m: mov ah,02h

int 16h

and al,10000000b

jnz m_end

jmp m

m_end:

cli

mov ax,old_offs

mov es:[0024h]

mov ax,old_seg

mov es:[0026h]

sti

mov ax,4C00h

int 21h

my_int proc far

in al,[60h]

cmp al,1eh

jnz m1

mov bx,00d9h

mov al,0beh

out [43h],al

mov al,bl

out [42h],al

mov al,bh

out [42h],al

in al,[61h]

or al,03

out [61h],al

jmp m2

m1: cmp al,0bh

jnz m2

in al,[61h]

and al,0fch

out [61h],al

m2:

mov ah,09h

lea dx,msg

int 21h

jmp dword ptr ds:old_offs

my_int endp

ends

END Start

ENDStart


Набросок 3.3 – Итог работы программки


4 ПРИНЦИПЫ РАБОТЫ ВИДЕОСИСТЕМЫ ПЭВМ

Видеосистема индивидуального компа, созданная для формирования изображений, содержит две составные части: графический адаптер и монитор. Базу графического адаптера составляют спец схемы для генерирования электронных сигналов, управляющих монитором.

Все видеосистемы содержат электрические составляющие, формирующие сигналы синхронизации, цветности и управляющие генерированием текстовых знаков. Не считая того, во всех видеосистемах имеется видеобуфер. Он представляет собой область оперативки, которая предназначена лишь для хранения текста либо графической инфы, выводимой на экран монитора. Более всераспространенными типами видеоплат являются адаптер VGA и адаптер SuperVGA.

Центральным устройством в управлении видеомонитором является контроллер электронно-лучевой трубки(ЭЛТ). В ПЭВМ используются программируемые контроллеры, дозволяющие задать все главные характеристики развертки изображения на дисплее изображения на дисплее.

Режим работы видеомонитора характеризуется последующими понятиями:

— вертикальным разрешением (количество строк растра на дисплее);

— горизонтальным разрешением (количеством знаков либо точек в строке);

— представлением данных в видеопамяти;

— атрибутами вывода, задающими цвет, мигание и т.п.

Характеристики развертки заносятся в определенные регистры контролера ЭТЛ.

к примеру, адаптеры MGA и CGA содержат контроллер ЭЛТ Motorola 6845, имеющий программируемые регистры, показанные в таблице 4.1.


Таблица 4.1 – Программируемые регистры


Регистр
Наименование
Описание

R0
Общая продолжительность строчки (horizontaltotal)
время вывода строчки растра в символьных тактах.

R1
Ширина кадра (horizontal displayed)
количество знаков в строке

R2
Позиция горизонтальной синхронизации (horizontalsyncposition)
Начало горизонтальной синхронизации в символьных тактах.

R3
Ширина синхронизации (sync width )
деятельность синхронизации (Младшая тетрада — вертикальной)

R4
Размер кадра(vertical total)
Общее кол-во строк в кадре

R5
Вертикальное сглаживание (vertical adjust)
Поправка для частоты 50 либо 60Гц

R6
Высота кадра(vertical displayed)
количество строк изображения в кадре

R7
Позиция вертикальной синхронизации (verticalsyncposition)
Начало вертикальной синхронизации в символьных тактах

R8
Биты 4-5: режимрасслоения (interlace mode); биты 6-7: сдвиг (skew)

R9
Макс. Число строк растра
количество строк изображения в кадре

R10
Начало курсора
Исходная строчка курсора

R11
Конец курсора
Конечная строчка курсора

R12

R13



Исходный адресок видеопамяти

Старший б

Младший б



R14

R15



Позиция курсора

Старший б

Младший б



R16

R17



Позиция светового пера

Старший б

Младший б




Следует учесть, что самостоятельное программирование контроллера ЭЛТ чревато физическим разрушением видеомонитора, потому не следует прибегать к нему, если вы не полностью осознаете принципы расчета характеристик раскрутки. Все нужные деяния по инициализации монитора обычно производятся ==BIOS, потому настоящая необходимость в конкретном программировании контроллера ЭЛТ возникает очень изредка.


4.1 Адресация и режимы работы адаптера
CGA

Цветной графический адаптер CGA (ColorGraphicsAdapter) – это графический видеоконтроллер среднего разрешения. Для него зарезервированы порты ввода-вывода 3D0h – 3DFh, имеющие предназначение, показанные в таблице 4.2.

Таблица 4.2 – Порты ввода/вывода


порт
Операция
Описание

3D4h
запись
регистр индекса ЭЛТ. Употребляется для выбора регристра контроллера ЭЛТ. Для записи регистра ЭЛТ Rn необходимо выполнить команды: out 3D4h,n и 3D5h,данные (n — номер регистра)

3D5h
записьчтение
Регистр данных ЭЛТ. Дозволяет записывать все регистры ЭЛТ и читать регистры R12-R17

3D8h
запись
Регистр режимов монитора.

3D9h
запись
Регистр выбора цветов. Выбор палитры задает набор главных цветов в графическом режиме. Гамма 0 — зеленыйкрасныйкоричневый, гамма 1 — бирюзовыйсиреневыйсветло-серый

3DAh
чтение
Регистр состояния монитора.

3DBh
записьчтение
Вывод хоть какого б выключает триггер светового пера.

3DCh
записьчтение
Вывод хоть какого б включает триггер светового пера.

Набросок 4.1 — Регистр режимов работы монитора.


Набросок 4.2 — Регистр работы монитора

4.2 Режим работы монитора

Все видеосистемы индивидуальных компов, кроме адаптера MDA, могут работать в 2-ух главных режимах – текстовом и графическом. В текстовом режиме экран делится на отдельные символьные позиции, в каждой из которых выводится один знак.

В видеобуфере каждой символьной позиции соответствует два б . б с четным адресом содержит ASCII-код знака, а примыкающий б с огромным нечетным адресом содержит атрибуты последовательности , которая отображается на прямоугольные координаты (столбец, строчка) экрана.

В 2-ух более всераспространенных форматах текстового режима не экране формируется 25 текстовых строк , содержащих по 40 либо 80 знаков. Таковым образом, емкость видеобуфера, нужная для наполнения экрана, составляет 2000 б (25 строк * 40 знаков *2 б) либо 4000 б ( 25 строк * 80 знаков * 2 б ). Эту область именуют страничкой. Если емкость видеобуфера превосходит размер одной странички, в нём можно организовывать несколько страничек.

Стартовый адресок видеобуфера для текстовых режимов адаптеров EGA, MCGA, VGA, SuperVGA и с графическим сопроцессором схож – В800:0000.

Соответствие цветов атрибутам зависит от типа графического адаптера. структура б атрибутов для CGA адаптера изображена на рисунке 3. таковым образом, цвет фона может варьироваться от 0 до 7, а цвет знака с учетом яркости – от 0 до 0Fh. цвет знака (плюс 128 для мигания знака).

При использовании CGA адаптера и монохромного монитора цвет знака и фона передается яркостью знака и фона соответственно.

Набросок 4.3 — структура б атрибутов для CGA адаптера

(0,0) (0,39) либо (0,79)

X

Экран

(24,0) (24,39) либо (24,79)

Y

Набросок 4.4 – График CGA адаптера


Таблица 4.3 – Задание цвета в адаптере CGA


Номер
Цвет
Номер
Цвет

0
Темный
8
Сероватый

1
Голубий
9
Ярко-синий

2
Зеленоватый
А
Ярко-зеленый

3
Бирюзовый
В
Голубой

4
Красноватый
С
Красный

5
Сиреневый
D
Розовый

6
Карий
E
Желтоватый

7
Серый
F
Белоснежный

Видеопамять CGA размещается в адресах ОЗУ B8000h – BFFFFh. CGA имеет 2 типа текстовых режимов: 25 строк по 40 знаков и по 80 знаков в строке. В режимах 25 х 40 одна страничка занимает 800h байтов, потому видеопамять состоит из 8 страничек. В режимах 25 х 80 страничка занимает 1000h байтов и видеопамять состоит из 4 страничек.

адресок кода знака в текстовых режимах равен:

B800h: n*P+m*L+2*C, адресок атрибута на единицу больше. Тут L – номер строчки (0 – 24), C – номер столбца (0 – 79 либо 0 – 39), m = 2 * количество столбцов режима, n = 800h при m=80 и 1000h при m=160, Р – номер странички (0-7 либо 0-3).

CGA имеет два типа графических режимов: цветной режим, имеющий разрешение 320 точек по горизонтали на 200 точек по вертикали, и черно-белый режим с разрешением 640 точек на 200 точек. В режиме 320 х 200 любой пиксель задается 2-мя битами, кодирующими его цвет; в режиме 620 х 200 цвет пикселя задается одним битом (белоснежный/темный). В графических режимах один экран просит 16К видеопамяти, потому имеется одна страничка видеопамяти, которая располагается в областях B8000h – BFFFFh. Эта страничка расслоена на две области: область с адреса B8000h содержит пиксели, имеющие четные номера строк; область с адреса ВА000h содержит пиксели из нечетных строк. Потому адресок б, содержащего точку с координатами (X,Y), равен в цветном режиме B800h : 2000h * (Y % 2) + 80 * int(Y/2) + int(X/4), а номера соответственных битов в этом б равны 7 – 2 * (X % 4) И 6 – 2 * (X %4). тут Х – горизонтальная позиция точки (0 – 319), Y – ее вертикальная позиция (0 – 199), символ % обозначает остаток от деления 1-го числа на другое.

адресок б, содержащего точку с координатами (X,Y), равен в черно-белом режиме B800h : 2000h * (Y % 2) + 80 * int(Y/2) + int(X/8), а номер соответственного бита в этом б равен 7 – (X % 8). тут Х – горизонтальная позиция точки (0 – 639), Y – ее вертикальная позиция (0 – 199)

4.3 Задание

Напишите программку, которая выводит на экран монитора строчку знаков (ФАМИЛИЯ имя ОТЧЕСТВО), в строке с номером L, начиная с колонки С. Атрибуты знаков должны циклически (во времени) изменяться от А1 до А2 с задержкой Deley мсек.


№ варианта
L
C
A1
A2
Deley

1
10
14
00h
0Fh
550



Набросок 4.4 – Блок — схема главный программки

Основная программка

Программка выводит на экран в текстовом режиме строчку «Вальков Антон Петрович» в 6-ю строчку 6-й столбец 0-й странички в режиме 160 строк. Любая буковка выводится с задержкой 680 мсек. Строчка выводится 15 раз с различными атрибутами.

Stac segment

db 64 dup(0)

ends

data segment

Msg db

stQ db

ends

code segment

assume ds:data,cs:code,ss:stac

Start:

mov ax,data

mov ds,ax

mov es,ax

mov ax,0b800h

mov es,ax

mov ah,05h

mov al,0

int 10h

mov cx,4000

mov di,-2

m2:

add di,2

mov byte ptr es:di,’ ‘

mov byte ptr es:di+1,15

loop m2

mov di,1626;160*10+14*2-2

lea cx,Stq

lea dx,Msg

sub cx,dx;

mov si,-1

m1:

inc si

add di,2

mov al,byte ptr Msg[si]

mov byte ptr es:di,al

loop m1

mov bl,0Fh

m0:

inc bl

mov di,1627;

lea cx,Stq

lea dx,Msg

sub cx,dx;

m4:

cmp bl,70h

jne m5

mov bl,00h

m5:

add di,2

mov byte ptr es:di,bl

loop m4

call delay

mov ah, 02h

int 16h

and al, 10000000b

jz m0

mov ax,4c00h

int 21h

delay proc near

mov ah,01h

mov cx,0

mov dx,0

int 1ah

again:

mov ah,00h

int 1ah

cmp dx,9

jle again

ret

delay endp

ends

END Start


Набросок 4.5 – Итог работы программки


ЗАКЛЮЧЕНИЕ

Микропроцессорная разработка потенциально имеет много предназначений: создание индивидуальных электрических партнеров, интеллектуализация (в известном смысле «оживление») всей техносферы, усиление и защита функций организма при помощи индивидуальных медико-кибернетических устройств, в том числе вживляемых в организм

В итоге эволюции электрической технологии от «микро» к «нано» и ее слияния с «генной», возможно, будет достигнуто состояние, при котором станет вероятным синтез в массовых количествах всех технических устройств. Но навряд ли в этом состоит основная цель будущей нано-технологии. Она, по всей вероятности, сумеет синтезировать структуры, способные к эволюции и саморазвитию.


СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ:

1. Гуров В.В., Рыбаков А.А. Лабораторный практикум «Разработка микропроцессорных систем на базе однокристальных микроконтроллеров». — М.: МИФИ, 2000.

2. Шнитман В. Современные высокопроизводительные компы.

3. Информационно-аналитические материалы Центра Информационных Технологий, 1996.

4. Преснухин Л.Н. Процессоры.

5. Гивоне Д., Россер Р. Процессоры и микрокомпьютеры.

6. Пузанков Д.В. Микропроцессорные системы.

7. Микропроцессорные устройства систем управления Создатель: Иванов Ю.И., Югай В.Л.

8. Базы микропроцессорной техники Новиков Ю.В. , Скоробогатов П.К.

9. Л.М. Гольденберг. Цифровые устройства и микропроцессорные системы. 10 10 . http://www.dailytechinfo.org – веб-сайт новинок в информационных разработках

]]>