У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


Інститут менеджменту та економіки

КУРСОВИЙ ПРОЕКТ

з дисципліни ЕОМ та мікропроцесорні системи

Тема - Проектування програмного та апаратного забезпечення для обчислювального пристрою приймання, обробки та передавання даних на базі персонального комп'ютера.

Анотація

В курсовому проекті проаналізований алгоритм приймання, обробки та передавання даних. Розроблена асемблер-програмама та описана принципово електрична схема блоку передавання.

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,00h

mov al,03h

int 10h

 

mov ah,09h

mov bh,0

mov al,20h

mov bl,0011100b

mov cx,2000

int 10h

call output

call close

mov ax,4c00h

int 21h

main endp

create proc

pusha

mov ah,3ch

mov cx,00h

mov dx,offset namef1

int 21h

mov diskr1,ax

mov ah,3ch

mov cx,00h

mov dx,offset namef2

int 21h

mov diskr2,ax

mov ah,3ch

mov cx,0

mov dx,offset namef3

int 21h

mov diskr3,ax

mov ah,3ch

mov cx,0

mov dx,offset namef4

int 21h

mov diskr4,ax

mov ah,42h

mov bx,diskr1

mov al,0

mov cx,0

mov dx,0

int 21h

mov ah,42h

mov bx,diskr2

mov al,0

mov cx,0

mov dx,0

 

int 21h

mov ah,42h

mov bx,diskr3

mov al,0

mov cx,0

mov dx,0

int 21h

 

mov ah,42h

mov bx,diskr4

mov al,0

mov cx,0

mov dx,0

int 21h

mov ah,09h

mov bh,0

mov al,20h

mov bl,0011100b

mov cx,2000

int 10h

mov ah,09h

mov dx,offset fmessage

int 21h

popa

ret

create endp

output proc

pusha

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 ;кількість байт для запису

int 21h

mov ax,stck ;відновлюю два елементи з буферу

and ah,0fh ;утворюю ASCII-код

add ah,30h ;молодшої тетради першого байту

cmp ah,3ah

jc mit1

add ah,7h

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

int 21h

mov ax,stck ;відновлюю введені дані

shr al,4 ;утворюю ASCII-код старшої тетради молодшого байту

add al,30h

cmp al,3ah

jc mit2

add al,7h

mit2:

mov buf,al ;зберігаю його в буфері

mov ah,40h ;функція запису в файл

mov bx,diskr2 ;дескриптор файлу

mov dx,offset buf ;адреса буферу з ASCII-кодом

mov cx,1 ;кількість байт необхідних для запису

int 21h ;переривання

mov ax,stck ;відновлюю введені дані

and al,0fh ;утворюю ASCII-код молодшої тетради молодшого байту

add al,30h

cmp al,3ah

jc mit3

add al,7h

mit3:

mov buf,al ;зберігаю його в буфері

mov ah,40h ;функція запису в файл

mov bx,diskr2 ;вказую дескриптор файлу

mov dx,offset buf ;ініціалізую адресу буфера з даними

mov cx,1 ;вказую кількість байт для запису

int 21h ;переривання

mov buf,' '

mov ah,40h

mov dx,diskr2

mov dx,offset buf

mov cx,1

int 21h

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

call write

permit:

rcr bh,1

jc no_parity1

mov al,ah

mov bp,diskr3

call write

jmp permit1

no_parity1:

mov al,ah

mov bp,diskr4

call write

permit1:

inc di

inc di

pop cx

dec cx

dec cx

jz mon

jmp ma2

mon:

popa

ret

output endp

port proc

pusha

mov di,offset in_arr

jmp go

.data

base dw 27ah

in_data db ?

.code

mov cx,circle

go:

push cx

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

xor al,al

mov dx,base+1

ag1:

in al,dx ;зчитуємо дані

test al,al

jz ag1

mov in_data,al

mov dx,base+2

mov al,0ah

out dx,al ;встановлюємо в 1 лінію HostBusy, обробляємо першу тетраду

jmp $+2

xor al,al

mov dx,base+1 ;ПУ відповідає встановленням високого рівня на PtrClk

ag2:

in al,dx

test al,40h

jz ag2

mov in_data,al

shr al,3

mov bl,al

and al,07h

and bl,10h

shr bl,1

add al,bl

mov buf,al

; прийом другої тетради

mov dx,base+2

mov al,08h

out dx,al

jmp $+2

mov dx,base+1

xor al,al

ag3:

in al,dx

test al,40h

jz ag3

mov dx,base+1

xor al,al

ag4:

in al,dx

test al,al

jz ag4

mov in_data,al

mov dx,base+2

mov al,0ah

out dx,al

jmp $+2

xor al,al

mov dx,base+1

ag5:

in al,dx

test al,40h

jz ag5

mov al,in_data

shr al,3

mov bl,al

and al,07h

and bl,10h

shr bl,1

add al,bl

shl al,4

add buf,al

mov al,buf

mov [di],al

inc di

pop cx

dec cx

jz ag6

jmp go

ag6:

popa

ret

port endp

close proc

pusha

mov ah,3eh ; функція закриття файлу

mov bx,diskr1 ; зберігаємо ідентифікатор відкритого файлу, який

; отриманий в регістрі ах після його створення

int 21h ; виклик переривання DOS

mov bx,diskr2 ; зберігаємо ідентифікатор відкритого файлу, який

; отриманий в регістрі ах після його створення

int 21h ; виклик переривання DOS

mov bx,diskr3 ; зберігаємо ідентифікатор відкритого файлу, який

; отриманий в регістрі ах після його створення

int 21h ; виклик переривання DOS

mov bx,diskr4 ; зберігаємо ідентифікатор відкритого файлу, який

; отриманий в регістрі ах після його створення

int 21h ; виклик переривання DOS

popa

ret

close endp

write proc

pusha

pusha

cmp bp,diskr3

je d3

jmp d4

d3:

mov ah,09h

mov dx,offset f3

int 21h

jmp permit3

d4:

mov ah,09h

mov dx,offset f4

int 21h

permit3:

popa

xor ah,ah

push ax

shr al,4

add al,30h

cmp al,39h

jc mita4

add al,7

mita4:

mov buf,al

mov ah,40h

mov bx,bp

mov dx,offset buf

mov cx,1

int 21h

mov al,buf

xor ah,ah

mov ah,02h

mov dx,ax

int 21h

pop ax

and al,0fh

add al,30h

cmp al,39h

jc mita5

add al,7

mita5:

mov buf,al

mov ah,40h

mov bx,bp

mov dx,offset buf

mov cx,1

int 21h

mov al,buf

xor ah,ah

mov ah,02h

mov dx,ax

int 21h

mov al,' '

mov buf,al

mov ah,40h

mov bx,bp

mov dx,offset buf

mov cx,1

int 21h

mov ah,09h

mov dx,offset exit

int 21h

popa

ret

write endp

end main

Висновок

В даному курсовому проекті було розроблено програмне та апаратне забезпечення для обчислювального пристрою приймання, обробки та передавання даних на базі персонального


Сторінки: 1 2