КУРСОВИЙ ПРОЕКТ
з дисципліни ЕОМ та мікропроцесорні системи
Тема - Проектування програмного та апаратного забезпечення для обчислювального пристрою приймання, обробки та передавання даних на базі персонального комп'ютера.
Анотація
В курсовому проекті проаналізований алгоритм приймання, обробки та передавання даних. Розроблена асемблер-програмама та описана принципово електрична схема блоку передавання.
Summary
In a course project there is the analysed algorithm of acceptance, treatment and data communication . asembler-programama is developed that described electric chart of principle of block of transmission.
ЗМІСТ
1. Розробка блок-схеми алгоритму........................................................5
2. Розробка Assembler програми.........................................................…12
3. Висновки.............................................................................................22
4.Перелік використаних літературних джерел.....................................23
Блок-схема функції main()
Блок-схема функції create()
Блок-схема функції output()
НІ
ТАК
Блок-схема функції port()
Блок-схема функції close()
Блок-схема функції write()
Assembler – програма.
.286
.model small
.stack 100h
.data
count equ 1024
in_arr db count dup(20h)
out_arr db count dup('$')
circle dw count
stck dw ?
buf db ?
namef1 db 'f1.txt',0
namef2 db 'f2.txt',0
namef3 db 'f3.txt',0
namef4 db 'f4.txt',0
f3 db 'f3: $'
f4 db 'f4: $'
exit db 0ah,0dh,'$'
diskr1 dw 0
diskr2 dw 0
diskr3 dw 0
diskr4 dw 0
fmessage db "All files are created",0ah,0dh,'Please enter data to files...',0ah,0dh,'$'
.code
main proc
mov ax,@data
mov ds,ax
mov es,ax
mov ah,00h
mov al,03h
int 10h
call create
call port
;входу не має
mov ah,09h
mov bh,0
mov al,20h
mov bl,0011100b
mov cx,2000
call output
call close
mov ax,4c00h
int 21h
main endp
create proc
pusha
mov ah,3ch
mov cx,00h
mov dx,offset namef1
mov diskr1,ax
mov dx,offset namef2
mov diskr2,ax
mov cx,0
mov dx,offset namef3
mov diskr3,ax
mov dx,offset namef4
mov diskr4,ax
mov ah,42h
mov bx,diskr1
mov al,0
mov dx,0
mov bx,diskr2
mov bx,diskr3
mov bx,diskr4
mov dx,offset fmessage
popa
ret
create endp
output proc
mov di,offset in_arr
mov cx,circle
ma2:
push cx
mov dx,[di]
mov stck,dx
mov ah,dh ;виділяю старший елемент
shr ah,4 ;утворюю його ASCII-код
add ah,30h
cmp ah,3ah
jc mit
add ah,7h
mit:
mov buf,ah ;записую ASCII-код в буфер
mov ah,40h ;функція запису в файл
mov bx,diskr1 ;дескриптор файлу
mov dx,offset buf ;буфер з ASCII-кодом
mov cx,1 ;кількість байт для запису
mov ax,stck ;відновлюю два елементи з буферу
and ah,0fh ;утворюю ASCII-код
add ah,30h ;молодшої тетради першого байту
jc mit1
mit1:
mov buf,ah ;записую в буфер ASCII-код
mov ah,40h ;функція запису до файлу
mov bx,diskr1 ;вказую дескриптор файлу
mov dx,offset buf ;ініціалізую адресу буфера з ASCII-кодом
mov cx,1 ;вказую кількість байт для запису
int 21h ;переривання
mov buf,' '
mov ah,40h
mov dx,diskr1
mov dx,offset buf
mov cx,1
mov ax,stck ;відновлюю введені дані
shr al,4 ;утворюю ASCII-код старшої тетради молодшого байту
add al,30h
cmp al,3ah
jc mit2
add al,7h
mit2:
mov buf,al ;зберігаю його в буфері
mov bx,diskr2 ;дескриптор файлу
mov dx,offset buf ;адреса буферу з ASCII-кодом
mov cx,1 ;кількість байт необхідних для запису
and al,0fh ;утворюю ASCII-код молодшої тетради молодшого байту
jc mit3
mit3:
mov bx,diskr2 ;вказую дескриптор файлу
mov dx,offset buf ;ініціалізую адресу буфера з даними
mov dx,diskr2
mov ax,stck
mov bx,ax
rcr bl,1
jc no_parity
mov bp,diskr3
;вхідні дані:
;al - data
;dx - descriptor
call write
jmp permit
no_parity:
mov bp,diskr4
permit:
rcr bh,1
jc no_parity1
mov al,ah
jmp permit1
no_parity1:
permit1:
inc di
pop cx
dec cx
jz mon
jmp ma2
mon:
output endp
port proc
jmp go
base dw 27ah
in_data db ?
go:
mov dx,base+2
mov al,08h
out dx,al ;встановлення HOSTBUSY в 0(готовність прийому даних)
jmp $+2
mov dx,base+1
xor al,al
ag:
in al,dx ;ПУ сигналізує про готовність тетради
test al,40h ;встановленням низького рівня на лінії PtrClk.(SR.6)
jnz ag
ag1:
in al,dx ;зчитуємо дані
test al,al
jz ag1
mov in_data,al
mov al,0ah
out dx,al ;встановлюємо в 1 лінію HostBusy, обробляємо першу тетраду
mov dx,base+1 ;ПУ відповідає встановленням високого рівня на PtrClk
ag2:
in al,dx
test al,40h
jz ag2
shr al,3
mov bl,al
and al,07h
and bl,10h
shr bl,1
add al,bl
mov buf,al
; прийом другої тетради
out dx,al
ag3:
jz ag3
ag4:
jz ag4
ag5:
jz ag5
mov al,in_data
shl al,4
add buf,al
mov al,buf
mov [di],al
jz ag6
ag6:
port endp
close proc
mov ah,3eh ; функція закриття файлу
mov bx,diskr1 ; зберігаємо ідентифікатор відкритого файлу, який
; отриманий в регістрі ах після його створення
int 21h ; виклик переривання DOS
mov bx,diskr2 ; зберігаємо ідентифікатор відкритого файлу, який
mov bx,diskr3 ; зберігаємо ідентифікатор відкритого файлу, який
mov bx,diskr4 ; зберігаємо ідентифікатор відкритого файлу, який
close endp
write proc
cmp bp,diskr3
je d3
jmp d4
d3:
mov dx,offset f3
jmp permit3
d4:
mov dx,offset f4
permit3:
xor ah,ah
push ax
shr al,4
cmp al,39h
jc mita4
add al,7
mita4:
mov bx,bp
mov ah,02h
mov dx,ax
pop ax
and al,0fh
jc mita5
mita5:
mov al,' '
mov dx,offset exit
write endp
end main
Висновок
В даному курсовому проекті було розроблено програмне та апаратне забезпечення для обчислювального пристрою приймання, обробки та передавання даних на базі персонального