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


Інститут економіки та менеджменту „Галицька Академія”

Зміст

Опис основних функцій, що використані в програмі………………

Блок-схема алгоритму………………………………………………..

Опис блок-схеми алгоритму…………………………………………

Код програми з поясненнями (ремарками)…………………………

Опис роботи програми………………………………………………..

Висновки………………………………………………………………….

Література……………………………………………………………

1.Опис основних функцій, що використані в програмі.

В шістнадцятковій системі числення від’ємні елементи мають в старшому розряді одиницю. Тому всі шістнадцяткові числа, починаючи з 80h і більші можна трактувати як від’ємні. При множенні і вибиралися такі числа. Числа , що в старшому розряді мають 0, приймалися як додатні.

Для розв’язування даної задачі файли створювалися в поточному каталозі на поточному дику. Файлам було надано атрибут загального доступу. Кожне звертання до файлів контролювалося на наявність помилки.

Для розв’язування даної задачі була використана система переривань операційної системи DOS.

В курсовій роботі були використані наступні функції роботи з файлами.

Функція DOS 3Ch: Створити файл.

Вхід: АН = 3Ch.

СХ = атрибут файлу.

біт 7: файл можна відкривати різним процесам ;

біт 6: не використовується;

біт 5: архівний біт (1, якщо файл не зберігався);

біт 4: директорія (повинна бути 0 для функції 3Ch);

біт 3: мітка тому (ігнорується функцією 3Ch);

біт 2: системний файл;

біт 1: схований файл;

біт 0: файл тільки для читання;

DS:DX = адреса ASCIZ-рядка з повним ім'ям файлу (ASClZ-рядок ASCII-символів, що закінчується нулем).

Вихід: CF = 0 і АХ = ідентифікатор файлу, якщо не відбулася помилка.

Якщо файл вже існує, функція 3Ch усе рівно відкриває його, присвоюючи йомy нульову довжину. Щоб цього не відбулося, варто скористатися функцією 5Bh.

Функція DOS 3Fh: Читання з файлу чи пристрою.

Вхід: АН = 3Fh.

ВХ = ідентифікатор.

СХ = число байтів.

DS:DX =адреса буфера для прийому даних .

Вихід: CF = 0 і АХ = число зчитаних байтів, якщо не було помилки.

Функція DOS 40h: Запис у файл чи пристрій .

Вхід: АН = 40h .

ВХ = ідентифікатор.

СХ = число байтів .

DS:DX = адреса буфера з даними.

Вихід: CF = 0 і АХ = число записаних байтів, якщо не відбулася помилка .

В курсовій роботі була використана функція роботи з монітором 09Н.

функція DOS 09h: Вивести рядок символів на екран.
Вхід: АН = 09h.

DS:DX = адреса рядка, що закінчується символом $ (24h).

Вихід: AL= 24h (код останнього символу).

3.Опис блок-схеми алгоритму

Початок. Опис всіх змінних, які використовуються в програмі. Встановлення відеорежиму . Створення файлів f 1, f 2, f 3. Ввести числа з клавіатури у файл f 1. Перехід на іншу сторінку і інший блок. Перехід з іншої сторінки і іншого блоку. Організація циклу. Виконання буде повторено 16 разів. Число з f1 від’ємне? Перехід на іншу сторінку і інший блок. Помножити число на 19,7 і записати у файл f2. Результат непарний? Записати у файл f3. Перехід з іншої сторінки і іншого блоку. Встановити позицію читання/запису на початок файлів. Читання вмісту файлів f2,f3. Виведення вмісту файлів f2,f3 на екран . Закриття всіх відкритих файлів. Кінець.

4.Код програми з поясненнями (ремарками)

.model small ;модель па'мятi

.stack 100h

;опис даних

.data

namef1 db 'f1.TXT',0 ;оголошення файлiв

namef2 db 'f2.TXT',0

namef3 db 'f3.TXT',0

diskr1 dw 0 ;оголошення ідентифікаторів файлiв

diskr2 dw 0

diskr3 dw 0

buf db 80 dup(' '),'$' ;буфер для промiжних даних

;повідомлення

vv1 db 10,13,'Введiть данi в файл f1.TXT (великi букви):',10,13,'$'

vv3 db 10,13,'Вмiст файлу f2.TXT:',10,13,'$'

vv4 db 10,13,'Вмiст файлу f3.TXT:',10,13,'$'

vv5 db 10,13,'Такого числа нема !',10,13,'$'

;змiннi для промiжних даних

aa db ' '

x db 0

rez2 db ' '

rez3 db ' '

np db 0

;початок програми

.code

.386

assume ds:@data,cs:@code,es:@data ;прив’язка сегментів програми до

;регістрів

start:

mov ax,@data прив’язка сегментів програми до регістрів

mov ds,ax

mov es,ax

mov ah,00h ;встановити 3-iй вiдеорежим

mov AL,03h

int 10h

;створити файл f1

mov ah,3ch

mov cx,00h

mov dx,offset namef1

int 21h

jc ex

mov diskr1,ax ;запам’ятати ідентифікатор файлу f1

; створити файл f2

mov ah,3ch

mov cx,00h

mov dx,offset namef2

int 21h

jc ex

mov diskr2,ax ;запам’ятати ідентифікатор файлу f2

`;створити файл f3

mov ah,3ch

mov cx,00h

mov dx,offset namef3

int 21h

jc ex

mov diskr3,ax ;запам’ятати ідентифікатор файлу f3

mov ah,09h

mov dx,offset vv1 ;вивести пiдказку vv1 на екран

int 21h

mov ah,3fh ;зчитати з клавiатури 16 чисел

mov bx,0

mov cx,49

mov dx,offset buf

int 21h

mov ah,40h ;записати 16 чисел у файл f1

mov cx,47

mov bx,diskr1

mov dx,offset buf

int 21h

;перейти на початок файлу

mov ah,42h

mov bx,diskr1

mov al,0

mov cx,0

mov dx,0

int 21h

mov cx,16 ; кiлькiсть повторень циклу

m25: push cx ;занести у стек

mov x,0

mov ah,3fh ;зчитати з файлу f1 число

mov bx,diskr1

mov cx,3

mov dx,offset aa

int 21h

;----------перевiрка чи число шiснадцяткове----------------------

cmp aa,30h

jl m1

cmp aa,39h

jnle m2

sub aa,30h

m4:

cmp aa+1,30h

jl m1

cmp aa+1,39h

jnle m5

sub aa+1,30h

jmp m3

m2:

cmp aa,41h

jl m1

cmp aa,46h

jnle m1

sub aa,37h

m5:

cmp aa+1,41h

jl m1

cmp aa+1,46h

jnle m1

sub aa+1,37h

m3:

mov al,aa

shl x,4

mov al,aa+1

add x,al

mov al,x

shr al,7

cmp al,1 ;перевiрка чи число вiд їмне

jne mv2 ;якщо нi - на мiтку mv2

shl x,1 ;забрати знак "-"

shr x,1

;--------множення числа на 19.7----------------------

mov bh,0

mov bl,x ;рег. bx=x

mov ax,bx

shl ax,1 ;рег. ax=2x

add bx,ax ;рег. bx=x+2x

shl ax,3 ;рег. ax=16x

add bx,ax ;рег. bx=16x+2x+x

mov cx,0 ;рег. cx=0

mov ah,0

mov al,x ;рег. ax=x

shr ax,1 ;рег. ax=x/2

mov cx,ax ;рег. cx=x/2

shr ax,2 ;рег. ax=x/8

add cx,ax ;рег. cx=x/2+x/8

shr ax,1 ;рег. ax=x/16

add cx,ax ;рег. ax=x/2+x/8+x/16

add bx,cx ;рег. bx=16x+2x+x+x/2+x/8+x/16

mov ax,bx ; ax=16x+2x+x+x/2+x/8+x/16

add ax,8000h ;повертаїмо знак "-"

mov rez2,ah ;запам ятати результат

mov rez2+1,al

 

mov bl,al

shl bl,7

shr bl,7

cmp bl,1 ;перевiрка чи число непарне

jne mv1 ;якщо парне на мiтку mv1

mov np,1 ;np-признак непарностi

;-------переведення числа у символьну форму------------

mv1:

shr ah,4

cmp ah,9

jnle z6

add ah,30h

z8: mov rez3,ah

mov ah,rez2

shl ah,4

shr ah,4

cmp ah,9

jnle z7

add ah,30h

z20: mov rez3+1,ah

jmp m49

z6: add ah,37h

jmp z8

z7: add ah,37h

jmp z20

x25: jmp m25

M49:

mov al,rez2+1

shr al,4

cmp al,9

jnle m46

add al,30h

m48: mov rez3+2,al

mov al,rez2+1

shl al,4

shr al,4

cmp al,9

jnle m47

add al,30h

m420: mov rez3+3,al

jmp m50

m46: add al,37h

jmp m48

m47: add al,37h

jmp


Сторінки: 1 2