Кодування, тестування та відладка. Технічний опис реалізації програми на основі обраної раніше предметної області та передбачених функцій

Страницы работы

Содержание работы

МІНИСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНЕВЕРСИТЕТ

«ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ»

Звіт до лабораторної роботи

з курсу Объектно-ориентированное программирование

Виконав:

Студент гр. КІТ-14в

Богачов О. С.

Харків – 2006

Лабораторна робота №11.

Тема:          “ Кодування, тестування та відладка”

        Мета: технічний опис реалізації програми на основі обраної раніше предметної області та передбачених функцій.

Детальний опис методів класів та функцій.

Клас TOS має наступні моделі:

§  TOS() –  конструктор класу, обнулює вказівники.

§  void stast() – змінює поточний процес, попередній переводить до стану очікування занесенням відповідного значення до поля стану класу TProcess, викликає функцію start1();

§  void AddProcess (void far*prt) – функція додає до списку новий процес;

Функція  void start1() змінює адресу обробника переривання на адресу вказаної   функції;

Функція fststop()  встановлює для поточного процесу стан «завершений»;

Функція UINT* changeprocess(UNIT* curr)  перемикає поточний процес на наступний;

Функція void proc1()   є програмною реалізацією діяльності першого;

Функція void proc2()   є програмною реалізацією діяльності другого процесу;

Функція main(void) – головна функція проекту, яка ініціалізує графічний режим, додає до списку процесу обидва процеси, по закінчені їх роботи зафарбовує екран.

Текст програми:


Sys.asm

.model large,c

.386

LOCALS

_TEXT segment public use16

           assume cs:_TEXT

public int8handler

public setcallback

public setint8callback

public setretcallback

include sys.inc

setint8callback              proc       far// инициализация вектора прерівания

           push      bpс

           mov       bp,sp

           mov       ax,[bp+6]

           mov       dx,[bp+8]

           mov       word ptr cs:oldvec,ax

           mov       word ptr cs:oldvec+2,dx

           pop        bp

           ret

setint8callback              endp

setcallback      proc       far// установка вектора прерівания на реальній плнаировщик

           push      bp

           mov       bp,sp

           mov       ax,[bp+6]

           mov       dx,[bp+8]

           mov       word ptr cs:callback,ax

           mov       word ptr cs:callback+2,dx

           pop        bp

           ret

setcallback      endp

setretcallback proc       far //подготавка  возврат к планировщику

           push      bp

           mov       bp,sp

           mov       ax,[bp+6]

           mov       dx,[bp+8]

           mov       word ptr cs:back,ax

           mov       word ptr cs:back+2,dx

           pop        bp

           mov       cs:BDS,ds

           mov       cs:BES,es

           mov       cs:BBP,bp

           mov       cs:BSS,ss

           mov       cs:BSP,sp

           add        cs:BSP,8

           ret

setretcallback endp

int8handler      proc       far //функция обработи прерівания от таймера и віполняет функция пнланировщика

           db          0cch

           cli

           mov       cs:RAX,ax

           mov       cs:RBX,bx

           mov       cs:RCX,cx

           mov       cs:RDX,dx

           mov       cs:RSI,si

           mov       cs:RDI,di

           mov       cs:RBP,bp          

           mov       cs:RSP,sp

           add        cs:RSP,6

           mov       cs:RDS,ds

           mov       cs:RES,es

           mov       cs:RSS,ss

           pop        ax                         ;ip

           pop        bx                         ;cs

           pop        cx                         ;flags

           mov       cs:RFR,cx

           mov       cs:RCS,bx

           mov       cs:RIP,ax

           pushf

           call        dword ptr cs:oldvec

           mov       ds,cs:BDS

           mov       es,cs:BES

           push      cs

           push      offset RAX

           call        dword ptr cs:callback

           add        sp,4

           cmp       dx,0

           je            @@l1

           push      es cs

           pop        es

           lea          di,RAX

           mov       si,ax

           mov       ds,dx

           mov       cx,CREGS

           rep         movsw

           pop        es

           mov       ax,cs:RAX

           mov       bx,cs:RBX

           mov       cx,cs:RCX

           mov       dx,cs:RDX

           mov       si,cs:RSI

           mov       di,cs:RDI

           mov       bp,cs:RBP

           mov       ss,cs:RSS

           mov       sp,cs:RSP

           mov       ds,cs:RDS

           mov       es,cs:RES

           push      cs:RFR

           push      cs:RCS

           push      cs:RIP

           iret

@@l1:

           mov       ds,cs:BDS

           mov       es,cs:BES

           mov       bp,cs:BBP

           mov       ss,cs:BSS

           mov       sp,cs:BSP

           sti

           jmp        dword ptr cs:back

RAX   dw          ?

RBX   dw          ?

RCX   dw          ?

Похожие материалы

Информация о работе