КУРСОВА РОБОТА
з дисципліни ОПЕРАЦІЙНІ СИТЕМИ
Тема – Використання операційної системи MS-Dos для роботи з файлами
Блок схема алгоритму програми
Розробка Asm-програми
model small ;встановлення моделі пам’яті програми
stack 100h ;
f1 DB ‘f1.txt’,0 ;шлях до файлу
f2 DB ‘f2.txt’,0 ;шлях до файлу
f3 DB ‘f3.txt’,0 ;шлях до файлу
f4 DB ‘f4.txt’,0 ;шлях до файлу
f5 DB ‘f5.txt’,0 ;шлях до файлу
d1 DW 0 ;змінна файлу
d2 DW 0 ;змінна файлу
d3 DW 0 ;змінна файлу
d4 DW 0 ;змінна файлу
d5 DW 0 ;змінна файлу
codeseg ;
main: ;
MOV CX, 48h ;встановлення лічильника для приймання байт даних
MOV BX, 200h ;встановлення початкової комірки масиву даних
;ввід числа з клавіатури
MOV AH, 01 ;вибір функції
M1: INT 21h ;ввід сотень
SUB AL, 30h ;перетворення з ASCII коду в цифру
MOV [BX], AL ;занести в масив прийнятий байт
INC BX ;збільшити адрес наступної комірки на 1
INT 21h ;ввід десятків
SUB AL, 30h ; перетворення з ASCII коду в цифру
MOV [BX], AL ;занести в масив прийнятий байт
INC BX ;збільшити адрес наступної комірки на 1
INT 21h ;ввід одиниць
SUB AL, 30h ; перетворення з ASCII коду в цифру
MOV [BX], AL ;занести в масив прийнятий байт
INC BX ;збільшити адрес наступної комірки на 1
LOOP M1 ;СХ-1, поки СХ < >0 перехід на М1
MOV AX, 3D02h ;
MOV DX, offset f1 ; створення файлу f1
INT 21h ;
MOV [d1], AX ;
MOV AX, 3D02h ;
MOV DX, offset f2 ; створення файлу f2
INT 21h ;
MOV [d2], AX ;
MOV AX, 3D02h ;
MOV DX, offset f3 ; створення файлу f3
INT 21h ;
MOV [d3], AX ;
MOV AX, 3D02h ;
MOV DX, offset f4 ; створення файлу f4
INT 21h ;
MOV [d4], AX ;
MOV AX, 3D02h ;
MOV DX, offset f5 ; створення файлу f5
INT 21h ;
MOV [d5], AX ;
аіваіваMOV AH, 40h ;
MOV BX, [d1] ; занесення масиву даних з пам’яті в файл f1
MOV DX, 200h ;
MOV CX, 30h ;
INT 21h ;
MOV CX, 30h ;встановлення лічильника
MOV BX, 100h ;встановлення початкової комірки занесеного масиву даних
MOV DI, 200h ; встановлення початкової комірки перемножених елементів
M2: MOV AX, [BX] ;стоні і десятки
MOV DL, [BX+2] ;одиниці
SHL AX, 3 ;множення на константу сотень і десятків
SHL DL, 3 ;одиниць
MOV [DI], AX ;занести в масив сотні і десятки
MOV [DI+2], DL ;зенесення одиниць в масив
ADD DI, 3 ;збільшення вказівника на комірку
ADD BX, 3 ; збільшення вказівника на комірку
LOOP M2 ;поки не кінець масиву, множити
MOV AH, 40h ;
MOV BX, [d2] ; занесення масиву даних з пам’яті в файл f2
MOV DX, 200h ;
MOV CX, 30h ;
INT 21h ;
MOV AH, 3Eh ;
MOV DX, [d1] ; закриття файлу f1
INT 21h ;
MOV AH, 3Eh ;
MOV DX, [d2] ; закриття файлу f2
INT 21h ;
MOV BX, 100h ;встановлення початкової комірки масиву 1
MOV CX, 30h ;встановлення лічильника
MOV DX,300h ;ініціювання шини ISA
M6: MOV AL, [BX] ;занесення в AL елементу масиву
OUT DX, AL ;вивід по шині ISA
M5: MOV DI, FFFFh ;
DEC DI : часова затримка
JNZ M5 ;
INC BX ;збільшення вказівника на масив 2
LOOP M6 ;СХ-1, поки СХ <> 0, переходити на мітку М6, тобто
;повторити цикли 16 разів.
END MAIN ;кінець програми