
- •1.Техническое задание
- •1.1.Исходные данные
- •1.2.Пример выходныx данныx.
- •2.Теоретические сведения
- •3.Описание инструментов
- •3.1.Visual Studio и расширения
- •4.Подход к решению задачи
- •Методы классов
- •5.Описание структур
- •6.Схема вызовов функций
- •7.Резултаты работы программы
- •8.Вывод
- •9.Текст программы
Методы классов
AssemblerObject
Название |
Модификаторы |
Возвращаемое значение |
Описание |
AssemblerObject() |
Public |
AssemblerObject |
Конструктор |
GetListing() |
Public virtual |
String |
Формирует строку листинга для данного объекта |
Segment
Название |
Модификаторы |
Возвращаемое значение |
Описание |
Segment() |
Public |
Segment |
Конструктор |
FindMarker() |
private |
Marker |
Возвращает метку из списка, по названию |
getSegmentBytes() |
Public |
void |
Формирует последовательность байтов для объектного файла |
initJMP() |
private |
void |
Заполняет переходы, которые были сформированы до появления метки |
Operator
Название |
Модификаторы |
Возвращаемое значение |
Описание |
GetListing() |
public override |
String |
Формирует строку листинга для команд |
GetMOP() |
public virtual |
int[] |
Возвращает последовательность байтов для команды |
Generator
Название |
Модификаторы |
Возвращаемое значение |
Описание |
Main() |
private static |
void |
Точка входа в программу |
RunGenerate() |
private static |
void |
Обработка кода Ассеблера |
WriteInFile(int comand) |
private static |
void |
Запись байта в файл |
WriteLeData() |
private static |
void |
Запись структуры LEDATA |
WriteTheadr() |
private static |
void |
Запись структуры THEARD |
WriteSegDef() |
private static |
void |
Запись структуры SEGDEF |
WriteLNames() |
private static |
void |
Запись структуры LNAMES |
WriteModEnd() |
private static |
void |
Запись структуры MODEND |
WriteListing() |
private static |
void |
Запись файла листинга |
PrintListing() |
private static |
void |
Вывод на экран листинга |
5.Описание структур
Класс объекта кода:
abstract class AssemblerObject
{
public string mnem;
public int length;
public int numberString;
public int location;
public string orig;
}
Класс Комадны:
class Operator : AssemblerObject
{
public int kop;
public int modRm;
public int sib;
public bool memory = false, use32Reg = false,
useDw = false, useSib = false, error = false;
}
Класс Команды POP:
class PopOperation:Operator
{
this.mnem = "pop";
}
Класс команды PUSH:
class PushOperation : Operator
{
this.mnem = "push";
}
Класс команды Dw
class DwOperation : Operator
{
public string data;
mnem = "dw";
this.length = 2;
}
Класс команды Jmp
class JmpOperation : Operator
{
public Marker marker;
public string markerName;
this.mnem = "jmp";
this.kop = 0xeb;
this.length = 2;
}
Класс команды Ret
class RetOperation : Operator
{
this.mnem = "ret";
this.kop = 0xC3;
this.length = 1;
this.orig = "ret";
}
Класс метки
class Marker : Operator
{
this.length = 0;
this.mnem = markerName;
}