📄 punjachex.h
字号:
// PunjacHex.h: interface for the CPunjacHex class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PUNJACHEX_H__12E82011_FA44_4E5E_AA8E_568D109CE484__INCLUDED_)
#define AFX_PUNJACHEX_H__12E82011_FA44_4E5E_AA8E_568D109CE484__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "../PL3000/PrgDef.h"
#include "PunjacFajl.h"
#include <string>
#include "SlogHEX.h"
// Klasa za ucitavanje programa iz HEX datoteke
class CPunjacHex : public CPunjacFajl
{
public:
CPunjacHex(const std::string& nazivFajla);
CPunjacHex(CFile* pFajl);
virtual ~CPunjacHex();
// Poziv ove funkcije oznacava pocetak punjenja programa i
// definise opseg adresa koje se citaju.
// Punjac treba da odradi potrebne inicijalizacije i da bude
// spreman da vrati bajt progama iz zadatog opsega adresa.
// U slucaju neuspeha vraca 'false', a opis greske smesta u OUT parametar.
virtual bool Start(
PRG::tAdresa pocetnaAdresa,
PRG::tAdresa zavrsnaAdresa,
std::string& opis
);
// Funkcija prosledjuje sledeci bajt programa (preko OUT parametra).
// Bajtovi su u opsegu adresa koji je zadat prilikom poziva 'Start' funkcije,
// ali redosled nije definisan.
// Ako uspe, vraca true i punjac je spreman da vrati sledeci bajt.
// Ako nema vise bajtova vraca false.
// U slucaju greske baca izuzetak.
virtual bool DajSledeciBajt(PRG::tBajt& bajt, PRG::tAdresa& adresa);
private:
//////////////////////////////////////////////////////////////////////
// Pomocne funkcije
//////////////////////////////////////////////////////////////////////
// Funkcija cita jedan slog iz HEX datoteke.
// U slucaju greske prilikom citanja baca izuzetak.
// Ako nema vise slogova vraca false.
bool ProcitajSlog(void);
// Funkcija cita dva ASCII bajta i formira jedan HEX bajt.
// U slucaju greske prilikom citanja baca izuzetak.
// Ako nema dovoljno bajtova vraca false.
bool ProcitajASCII_HEX(PRG::tBajt& bajt);
// Funkcija proverava da li je dati bajt ASCII HEX ('0'-'9', 'a'-'f', 'A'-'F')
// i pretvara ga u HEX.
BYTE KonvertujBajtASCII_HEX(BYTE bajt);
// Funkcija konvertuje dva ASCII HEX bajta u jedan HEX bajt.
// U slucaju greske baca izuzetak.
PRG::tBajt FormirajASCII_HEX(BYTE visiNibl, BYTE niziNibl);
// Funkcija konvertuje date bajtove u adresu
// U slucaju greske baca izuzetak.
PRG::tAdresa FormirajAdresu(PRG::tBajt adresaHI, PRG::tBajt adresaLO);
// Funkcija vraca prvi bajt sloga cija je adresa u zadatom opsegu.
// Ako takav bajt ne nadje, vraca false.
bool DajSledeciBajtDataSloga(PRG::tBajt& bajt, PRG::tAdresa& adresa);
private:
CSlogHEX slogHEX_m;
int indeksBajta_m; // indeks bajta u slogu podataka
};
#endif // !defined(AFX_PUNJACHEX_H__12E82011_FA44_4E5E_AA8E_568D109CE484__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -