Курсовая

Курсовая на тему Завантажувач шрифтів

Работа добавлена на сайт bukvasha.net: 2014-12-07

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 25.12.2024


Міністерство освіти та науки України
Кіровоградський Державний Технічний університет
Кафедра програмного забезпечення
Курсова робота
з дисципліни “Програмування на мові ASM-86” на тему:
Завнатажувач шрифтів

Зміст
Вступ
1. Призначення та область застосування програми
2. Огляд існуючих систем, обгрунтування вибору, принципу розробки і методики побудови програм. Постановка задачі по реалізації технічного завдання
3. Опис і обгрунтування проектних рішень по проектуванню системи
4. Розрахунки та експериментальні матеріали, які підтверджують правильність конструкторських, програмних рішень. Реалізація проекту
5. Інструкція користувача.
6. Основні висновки
Список літератури
Текст програми
Графічні матеріали

Вступ
На початку розвитку комп’ютерної техніки пристрої введення та виведення були досить невибагливі та забезпечували мінімум можливостей. До цих пристроїв належали перш за все монітор та клавіатура. Клавіатура використовувалась для введення інформації шляхом натискання деяких клавіш, які оброблялися відповідним програмним забезпечення, результат цієї обробки можна було побачити на моніторі. Спочатку цього було досить.
З розвитком інформаційних технологій та технічним прогресом, процесори почали ставати більш швидшими, монітори та відеоадаптери почали збільшувати роздільну здатність, все більш програм почали використовувати графічний інтерфейс користувача. Комп’ютер став не просто електронно-обчислювальною машиною, а багатогранним інструментом для вирішення багатьох проблем різного характеру, для розваг, для друкарських потреб. Був створений принтер.

1. Призначення та область використання пристрою, програми
Іноді треба текст надрукувати таким шрифтом, який не піддержує прикладна програма друку. Тоді потрібно створити програму, яка б дозволяла завантажити свій шрифт у принтер, а формат самих шрифтів був би простим, щоб його можна було редагувати. Тому була створена ця програма. Вона має невеликі системні вимоги і є простою у використанні.
2. Огляд існуючих пристроїв, систем, програмного забезпечення, обґрунтування вибору принципа розробки та методики побудови пристрою, систем, програмного забезпечення
Є дуже багато програм, які дозволяють друкувати текст чи файл, та більшість з них мають внутрішні шрифти, які не можна редагувати. Тож, коли виникає потреба надрукувати текст таким шрифтом, якого не має програма, то приходиться шукати другу програму, яка б дозволила завантажити потрібний шрифт.
3. Опис та обґрунтування проектних рішень по проектуванню пристрою системи
Будь-який МП-системі необхідні засоби обміну даними із зовнішніми периферійними пристроями. В залежності від умов конкретного застосування та характеристик периферійного обладнання передача даних виконується в паралельному або послідовному форматі. Спільність функцій введення-виведення стимулювала розробку ВІС периферійних адаптерів, що являють собою гнучкі програмовані прилади, зорієнтовані виключно на введення-виведення. Зараз такі адаптери стали неодмінними компонентами практично всіх мікропроцесорних сімейств.
Як приклад типового паралельного периферўйного адаптера, або програмованого паралельного інтерфейсу, нижче розглядається мікросхема КР580ВВ55А.
Підключення периферійного обладнання виконується через три двонаправлених 8-бітних порти (або канали) A, B і C. Інтерфейс із системною шиною здійснюється за допомогою ліній:
D(0-7) - двонаправлена шина даних з трихстабільними каскадами.
A1, A0 - лінії адреси, котрі вибирають внутрішній регістр адаптера, комутований на шину даних:
00 - порт A,
01 - порт B,
10 - порт C,
11 - регістр управляючого слова.
CS - активний вхід вибірки кристала; високий рівень забороняє, а низький дозволяє зв'язок приладу із системною шиною даних.
RD - активний вхід зчитування інформації із адресованого по лініям A0, A1 регістру на шину даних.
WR - активний вхід запису інформації з шини даних в адресований по A0 і A1 внутрішній регістр адаптера.
RESET - активний сигнал для приведення приладу у вихідний стан; при дії сигналу регістр управління обнуляється, а всі три порта налаштовуються в режим введення.
Відмітимо, що зчитування з регістру управління (RD=0,A1=1,A0=1) не допускається, а одночасний запис та зчитування (RD=0,WR=0) призводять до непередбачуваних наслідків.
Програмування адаптера полягає в завантаженні управляючого слова в регістр управління. Наприклад, управляюче слово конфігурації порту A на введення в режимі 0, порта B на виведення в режимі 1, біта 3 порту C на введення та біта 7 порту C на виведення матиме код 11010101b.
Управляюче слово з нульовим старшим бітом D7=0 використовується для встановлення і зкидання будь-якого біту порта C. Біти D(6-4) в цьому випадку не використовуються і містять нулі, біти D(3-1) містять двійковий номер (адресу) модифікованого біта порту С, а біт D0 задає встановлення (D0=1) або обнулення (D0=0) адресованого біту.
Адаптер має 3 режима роботи - 0,1,2. Розглянемо кожний з них.
В режимі 0 (базового введення-виведення) можуть працювати всі три порти, причому порт C разділюється на два незалежних 4-бітних порти. Всього,таким чином, виходить два 8-бітних і два 4-бітних порти паралельного введення або виведення, що забезпечує 16 можливих конфігурацій адаптера в режимі 0. Дані, що виводяться, фіксуються в регістрах-фіксаторах, що входять до складу всіх портів, а введені дані не запам'ятовуються, тобто в операціях зчитування вхідного порту на шину даних передається поточний стан вхідних ліній.
Режим 0 застосовується при програмно-управляємому введенні-виведенні з повільнодіючими периферійними пристроями.
Для організації введення-виведення необхідна підпрограма ініціалізації адаптера і три аналогічні підпрограми введення і виведення для кожного периферійного пристрою. Кожна з них виконує такі дії : введення стану пристрою, перевірку готовності, виведення або введення даних і формування супровджуючого стробу. Якщо пристрій не готовий до обміну, мікропроцесор входить в цикл очікування.
Режим 1 (стробоване введення-виведення) призначений для однонаправленої передачі даних, ініційованих перериваннями. Власне передача слів даних здійснюється через порти B і A, а шість ліній порту C використовуються для управління обміном. Даний режим надає користу-вачеві такі можливості: запрограмувати один або два паралельних порти з лініями квітування і переривання, кожний з яких може працювати на введення або виведення; при використанні тільки одного порту решту 13 ліній запрограмувати в режим 0; при встановленні двох портів в режим 1 інші 2 лінії використати для введення або виведення.
В режимі 2 (двонаправлена шина, що забезпечує введення і виведення даних) може працювати тільки група A. Порт A використовується для передачі власне 8-бітних даних, а п'ять ліній порту C виконують функції квітування і переривань. Загальна дисципліна квітування аналогічна режиму, але і окремі тригери дозволу переривань по виводу INTE1 (управляється встановленням та зкиданням біту PC6) та по вводу INTE2 (управляється через біт PC4). Дані, що вводяться та виводяться, фіксуються в регістрах-фіксаторах порту.
Принтер є одним iз периферiйних пристроїв, що приймають данi вiд комп'ютера у паралельному кодi, оскiльки це найбiльш швидкий спосiб обмiну. Iншими прикладами пристоїв, що використовують паралельний адаптер, є аналого-цифровi перетворювачi(АЦП), фотоcчитувачi.
Алгоритм обмiну iнформацiї в кожному конкретному випадку залежить вiд напрямку потокiв iнформацiї. Наприклад, АЦП є джерелом iнформацiї, i тому адаптер необхiдно налаштувати на введення iнформацiї. Для цього можна використати рiзнi режими роботи:0,1,2, проте найбiльш простим з них, очевидно, був би режим 0, а надлишково ускладненим - режим 2. Аналогiчна ситуацiя i з принтером, тiльки iнформацiя в цьому випадку передається у зворотньму напрямку - вiд комп'ютера до периферiйного пристрою.
Однак принтер, у свою чергу, виставляє власнi сигнали, iнформуючи комп'ютер про власний стан. Тож доходимо висновку, що для нормальної роботи принтера паралельний адаптер необхiдно налаштувати на виведення iнформацiї, видiливши при тому окремi виводи для введення сигналiв з принтера.
Сигналами обмiну з принтером є:
/STROBE -  запит на передачу даних (вiд комп'ютера);
/ASC (acknolege) - пiдтвердження прийому (вiд принтера);
ВUSY -  сигнал зайнятостi (вiд принтера);
PE (paper empty) - папiр вiдсутнiй (вiд принтера);
SELECT - принтер активний (вiд принтера);
/ERROR - збiй у роботi (вiд принтера);
Вибiр режиму роботи:
- якщо обираємо режим 0, то обмiн буде можливий лише за умови програмної емуляцiї системних сигналiв обмiну(тобто посилаємо данi на порт, виставляємо сигнал сигнал  /STROBE i чекаємо на сигнал  /ASC). Слiд зауважити, що тривалiсть сигналу /ASC вiд принтера має тривалiсть 7.5 мкс, i тому при органiзацiї циклу опитування слiд полiчити кiлькiсть тактiв у циклi  i загальну тривалiсть циклу опитування. Якщо вона буде бiльшою вiд тривалостi сигналу, то можливе пропущення сигналу i, як наслiдок, збiй обмiну.
- в режимi роботи 1 операцiї обмiну (handshaking) виконуються автоматично i є можливiсть органiзацiї обмiну даними по перериванню. Робота програми зводиться до програмування адаптера та встановлення у вихiдне (початкове) становище лiнiй, на якi заведено сигнали квiтирування (STROBE-ASC). Слiд додати, що у режимi 1 є двi лiнiї, що можуть бути запрограмованi як на введення, так i на виведення, що дозволяє органiзувати додатково введення iнших сигналiв (у даному випадку - сигналiв BUSY (принтер зайнятий) та РЕ (вiдсутнiсть паперу).
- в режимi 2 можливо органiзувати двонаправлений обмiн iнформацiєю з апаратною пiдтримкою квiтирування, проте при цьому втрачається можливiсть опитування додаткових лiнiй статусу принтера.
Деякі команди принтера:
Таблиці символів
ESC t n       1b 74 n            ;Выбор таблицы символов(0,1,48,49)
                                 LQ-100: 0-3,48-51(2-download font)
ESC R n       1b 52 n            ;Выбор медународного набора знаков
                                 (0-13,64)
ESC 6         1b 36              ;Коды 80-9f как печатаемые
ESC 7         1b 37              ;Коды 80-9f как управляющие
ESC & 0 nn    1b 26 0 n1 n2 a1 d1   ;Загружает знаки, n1-код первого,
                             d2 ... d11 a2 ...  n2-код последнего, a-ширина знака,
                                 старший бит=0-используется нижняя
                                 игла,1-верхняя.Сетка 9х11
              1b 26 0 n1 n2 a b cДля загрузки (N)LQ сетка 18х12.
              d00 d01 d02 d10 d11a-пробел слева от знака, с-справа,
               ... dc0 dc1 dc2   b-ширина
ESC : 0 n 0   1b 3a 30 n 30      Копирует ПЗУ в ОЗУ, n=0-Roman,1-SS
ESC % n       1b 25 n            Выбор знаков: 0-ПЗУ, 1-ОЗУ
ESC I 0/1     1b 49 0/1          Выкл/вкл печати кодов 0-1f,80-9f
Графіка
ESC . nn      1b 2e c v h m n1 n2Печать растровой графики:
              d1 ...             c=0 обычный режим, 1-со сжатием
                                 v(h)=10,20 3600/v(h) dpi верт(гор)
                                 m=1-24 число верт. точек
                                 n=n2*256+n1 число гор. точек
                                 сочетание v=10,h=20 запрещено
4. Розрахунки та експерементальні матеріали, які підтверджують правильність конструкторських, програмних рішень. Реалізація проекту
Дана програма написана на мові програмування ASM-86. Цей вибір зумовлений тим, що на мові асемблера також можна отримати цілковитий контроль над комп’ютером.
Fontload спочатку відкриває принтер, а потім читає файл шрифта в память. Коли він не знаходить файл шрифта, він повідомляє про це та закінчує свою роботу.
В залежності від типу принтера загружає шрифт в принтер, якщо він піддержує, чи друкує рядок в графиці.
5. Інструкція користувача
Для запуску програми потрібно запустити файл fontload.exe. Потім вказати принтер, у який слід завантажити шрифт і шлях до файлу зі шрифтом.

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

Використана література
1.                The Microsoft(R) Guide for Assembly Language and C Programmers
2.                ПРОГРАММНО-АППАРАТНАЯ ОРГАНИЗАЦИЯ КОМПЬЮТЕРА IBM PC. Prentice-Hall Publishing Comp.,1984
3.                Фролов А.В., Фролов Г.В., Операционная система MS-DOS. – М.: “ДИАЛОГ-МИФИ”, 1991. – (Библиотека системного программиста)
“Руководство по программированию” П. Нортон, Р. Уилтон 1994

Додатки
Лістинг програми
.model tiny
        .stack 200h
        .data
Msg1  db 'Выберите пинтер $'
Msg2  db 'Все нормально $'
Msg3  db 'Ошибка откр файла $'
Msg4  db 'выберите шрифтовый файл $'
Msg5  db 'ошибка закр. файла $'
Msg6  db 'Шрифт установлен $'
escposl db 0
Fname db 255,?,255 dup(0)
Handle dw 0
Stroka db 30 DUP(?)
        .code
ProgramStart PROC NEAR
       
        mov ax,@data
        mov ds,ax
        call clear
          Call Vibor
        call clear
        Call Init
        mov dx,offset Msg4
          Call outputer
          mov dx,offset fname
        Call inputer
        mov bl,byte ptr [fname+1]
        xor bh,bh
        mov di,offset fname+2
        mov [bx+di],byte ptr 0
        call clear
          Call fopen
          call clear
          Call esca
          Call fclose
Quit:
       
          mov dx,offset Msg6
          Call outputer
         
          mov ah,07h
          int 21h
        mov ah,4ch
        int 21h
ProgramStart endp
outputer proc
        mov ah,09h
        int 21h
        ret
outputer endp
   inputer proc
    mov ah,0ah
    int 21h
    ret
   inputer endp
Vibor   PROC NEAR
          lea dx,Msg1
          Call outputer
          mov ah,01h
          int 21h
          ret
Vibor   endp
Init    PROC NEAR
        mov ah,01h
        mov dx,1h
        int 17h
          ret
Init    endp
fopen PROC NEAR
          mov ah,3dh
          mov al,0h
          mov dx,offset fname+2
          int 21h
          jnc itd
          mov ah,09h
          lea dx,Msg3
          int 21h
          jmp Quit
itd:    mov [handle],ax
          ret
fopen endp
escape  PROC NEAR
fclose proc
        mov ah,3eh
        mov bx,[handle]
        int 21h
        jnc its_ok2
        mov dx,offset Msg5
        call outputer
its_ok2:
        ret
fclose endp
esca proc
   
met1: mov ah,3fh
        mov bx,[handle]
        mov cx,1
        mov dx,offset escposl
        int 21h
        call eof
        cmp al,0
        jz met2
        mov ah,00
        mov al,[escposl]
          mov dx,1
          int 17h
          mov cx,5h
          loop met1  
          met2: ret
esca endp
eof proc
        mov ah,44h
        mov al,06h
        mov bx,[handle]
        int 21h
        ret
eof endp
CLEAR   PROC
        MOV     AX,0600h
        MOV     BH,07h
        MOV     CX,0000
        MOV     DX,184Fh
        INT     10h
        mov ah,02
        mov bh,0
        mov dh,1
        mov dl,1
        int 10h
       
        RET
CLEAR   ENDP
end

1. Реферат Суднобудівна галузь України Її конкурентоспроможність
2. Реферат Управления финансовой системой
3. Реферат Республика Дагомея
4. Реферат Регионы Европы
5. Статья на тему Провозвестник отечественной электроавтоматики
6. Контрольная работа Эволюция экономических моделей
7. Реферат на тему A Perverse And IllFated People English Perceptio
8. Реферат Державне регулювання в галузі туризму становлення та розвиток в Україні
9. Статья на тему Эмблематическая образность в лирической системе А С Пушкина
10. Реферат на тему An Essay Research Paper An Argument for