Інститут менеджменту та економіки “Галицька Академія”
КУРСОВА РОБОТА
з дисципліни АРХІТЕКТУРА ПК
Тема – Проектування програмного забезпечення для обчислювального пристрою приймання, обробки та передавання даних на базі персонального комп'ютера.
АНОТАЦІЯ
В курсовому проекті розроблене програмне забезпечення для обчислювального пристрою приймання, обробки та передавання даних на базі персонального комп'ютера. Цей пристрій потетрадно приймає через паралельний порт 256 байт, сортує їх по файлам.
SUMMARY
In a course project there is the developed software providing for the computing device of acceptance, treatment and transmission data, based on personal computer. This device receives 256 bytes by nibbles through parallel port and sorting them on to the files.
ЗМІСТ
Стор
1. ОПИС БЛОК-СХЕМИ АЛГОРИТМУ ОБРОБКИ ДАНИХ.................................7
2. ТЕКСТ ПРОГРАМИ МОВОЮ ASSEMBLER........................................................9
3. ВИСНОВКИ..............................................................................................................12
4. ПЕРЕЛІК ВИКОРИСТАНИХ ЛІТЕРАТУРНИХ ДЖЕРЕЛ.................................13
Зм. | Лист | № докум | Підпис | Дата
Розроб.
Перевір.
Реценз.
Н.Контр.
Затверд.
1 ОПИС БЛОК-СХЕМИ АЛГОРИТМУ ОБРОБКИ ДАНИХ
Оператор 1 - Початок програми
Оператор 2 - Налаштування регістру DS на сегмент даних
Оператор 3 - Ініціалізація циклу (Налаштування лічильника циклів та покажчиків на масиви)
Оператор 4 - Очікування і прийом старшої тетради через паралельний порт
Оператор 5 - Очікування і прийом молодшої тетради через паралельний порт
Оператор 6 - Запис байту в масиви file1 та file2
Оператор 7 - Збільшення регістру SI (покажчика на масив file4) на одиницю
Оператор 8 - Якщо прийнятий байт містить непарне число (наймолодший біт=1), то виконується запис байту в масив file4
Оператор 9 - Запис байту в масив file 3
Оператор 10 - Збільшення регістру DI (покажчика на масив file3) на одиницю
Оператор 11 - Запис байту в масив file4
Оператор 12 - Збільшення регістру BP (покажчика на масив file4) на одиницю
Оператор 13 - Зменшення лічильника циклів на одиницю
Оператор 14 - Якщо лічильник циклів не рівний нулю, цикл повторюється
Оператор 15 – Створення, відкриття, запис даних з масиву file1 в файл f1 і закриття файлу f1
Оператор 16 – Створення, відкриття, запис даних з масиву file2 в файл f2 і закриття файлу f2
Оператор 17 – Створення, відкриття, запис даних з масиву file3 в файл f3 і закриття файлу f3
Оператор 18 – Створення, відкриття, запис даних з масиву file3 в файл f3 і закриття файлу f3
Оператор 19 - Кінець програми
Зм. | Лист | № докум | Підпис | Дата
Блок-схема алгоритму приймання, обробки та передавання даних на базі персонального комп’ютера
Арк.
8
Зм. | Арк. | № докум | Підпис | Дата
2 ТЕКСТ ПРОГРАМИ МОВОЮ ASSEMBLER
.model small
.stack 100h
.data
f1 db 'c:\tasm\f1.txt$'; вказування шляху до файлу 1
f2 db 'c:\tasm\f2.txt$'; вказування шляху до файлу 2
f3 db 'c:\tasm\f3.txt$'; вказування шляху до файлу 3
f4 db 'c:\tasm\f4.txt$'; вказування шляху до файлу 4
descr1 dw 0; ідентифікатор файлу f1
descr2 dw 0; ідентифікатор файлу f2
descr3 dw 0; ідентифікатор файлу f3
descr4 dw 0; ідентифікатор файлу f4
file1 db 512 dup(?); масив файлу f1
file2 db 512 dup(?); масив файлу f2
file3 db 512 dup(?); масив файлу f3
file4 db 512 dup(?); масив файлу f4
.code
start: mov ax,@data; запис адреси початку сегменту в акумулятор
mov ds,ax; налаштування регістру DS на сегмент даних
mov cx,1024; кількість байт, які треба прийняти
mov si,offset file1; ініціалізація покажчика на масив file1
mov di,offset file3; ініціалізація покажчика на масив file3
mov bp,offset file4; ініціалізація покажчика на масив file4
mov dx,37Ah; запис адреси регістру статусу послідовного порту
;Цикл потетрадного прийому байтів через паралельний порт. Лінія _BUSY ;(SR.7) – лінія стробу та вибору тетрад (1 – старша, 0 – молодша). Лінії ;_ACK, PE, SELECT та _ERROR (SR.6 - SR.3) – лінії прийому даних (D3-D0).
receive: in al, dx; зчитування регістру статусу паралельного порту
shl al,1; перевірка лінії _BUSY для прийому старшої тетради
jnc receive; якщо рівна нулю, перевірка повторюється
mov ah,al; збереження старшої тетради
wait_1: in al,dx; зчитування регістру статусу послідовного порту
shl al,1; перевірка лінії _BUSY для прийому молодшої тетради
jc wait_1; якщо рівна одиниці, перевірка повторюється
shr al,4; досування молодшої тетради в початок регістра AL
or al, ah; регістр AL містить отриманий байт
xor al,99h; корекція байту
;Обробка і сортування результатів
mov [si],al; запис байту в масиви file1 та file2
inc si; збільшення покажчика на масиви file1 та file2 на одиницю
test al,1; перевірка парності числа
jnz odd; на 2 без залишку не ділиться
mov [di],al; запис байту в масив file3
inc di; збільшення покажчика на масив file3 на одиницю
jmp end_c; перехід в кінець циклу
;
Арк.
9
Зм. | Арк. | № докум | Підпис | Дата
odd: mov ds:[bp], al; запис в масив файлу f4
inc bp; збільшення покажчика на масив file4 на одиницю
end_c: loop receive; декремент CX, повтор якщо CX не рівне нулю
;Створення файлів
mov ah,3ch; функція відкриття файлу
mov dx,offset f1; занесення адрес рядка, що містить шлях і назву файлу
xor cx,cx; атрибути файлу (00h – звичайний файл )
int 21h; виклик переривання DOS
mov [descr1],ax; збереження ідентифікатора відкритого файлу
mov ah,3ch; функція відкриття файлу
mov dx,offset f2; занесення адрес рядка, що містить шлях і назву файлу
xor cx,cx; атрибути файлу (00h – звичайний файл )
int 21h; виклик переривання DOS
mov [descr2],ax; збереження ідентифікатора відкритого файлу
mov ah,3ch; функція відкриття файлу
mov dx,offset f3; занесення адрес рядка, що містить шлях і назву файлу
xor cx,cx; атрибути файлу (00h – звичайний файл )
int 21h; виклик переривання DOS
mov [descr3],ax; збереження ідентифікатора відкритого файлу
mov ah,3ch; функція відкриття файлу
mov dx,offset f4; занесення адрес рядка, що містить шлях і назву файлу
xor cx,cx; атрибути файлу (00h – звичайний файл )
int 21h; виклик переривання DOS
mov [descr4],ax; збереження ідентифікатора відкритого файлу
;Запис в файли
mov ah,40h;