Задания на курсовые работы – 2006 г.

Общие положения.
Задания связаны с проектированием ассемблеров, компоновщиков и загрузчиков. Исходными данными являются потоки ассемблерных команд и директив, записанные в  соответствии с правилами языка Ассемблера. Результат обработки должен максимально совпадать с теми данными, которые формирует стандартный ассемблер (tasm, masm или ассемблер для ОС Linux). В текстах заданий для указания операндов используются следующие обозначения:
r – операнд находится в регистре общего назначения (РОН);
	m – операнд находится в основной памяти;
	imm – непосредственный операнд.
Для обозначения схемы построения транслятора применяются сокращения:
	2А – двухпросмотровый ассемблер;
	1А>ОП – однопросмотровый ассемблер с непосредственной записью результата в оперативную память с целью выполнения сформированного объектного кода сразу после завершения ассемблирования;
	1А>МД – однопросмотровый ассемблер, записывающий формируемый объектный код на магнитный диск;
	МА – многопромотровый ассемблер;
	ДА – программа дизассемблер – восстановление текста программы по объектному коду.
Дополнительно в задании указана разрядность процессора:
	16 – 16-разрядный процессор или реальный режим 32-разрядных процессоров i80х86;
	32 – 32-разрядный процессор, работающий в защищенном режиме.
	Для заданий типа “1А>ОП” требуется разместить результаты ассемблирования в области данных, затем загрузить РОНы эталонными  значениями, передать управление на сформированный объектный код. После исполнения объектного кода требуется распечатать содержимое памяти и/или регистров для доказательства правильности выполненного задания.
	Для заданий типа “1А>МД” требуется дополнительно разработать простой формат файла с объектным кодом, а также простую программу-загрузчик. Программа-загрузчик должна программу из файла перенести в оперативную память, произвести необходимую настройку адресов и запустить эту программу на выполнение.

1.	Валеев
Исходные данные содержат команды вида:

.stack
db		256 dup (?)
.code
push	r
push	seg_r
push	m
pop	r
pop	seg_r
pop	m
…
ret

Здесь операнд в памяти (m)  может быть задан одним из следующих способов: [BX], [BP], [BX+DISP], [BP+DISP].
Требуется разработать компоновщик для преобразования объектного файла в исполняемый под ОС – Linux.

2.	Суслов
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,mem
…
ret
	name1	dw		?
		…
	namek	dw		?
		end

Здесь МНЕМА = [xchg, and, xor]. Операнд в памяти (mem)  может быть задан одним из следующих способов: name, name[BX], name[BX+SI].
Требуется разработать имитатор программы загрузчика для  ОС – Linux.

3.	Галиев
Исходные данные содержат команды вида:

jmp	metka
Name1	dw	?
…
Namek	dw	?
metka:
inc		r
dec		r
МНЕМА	r,r
МНЕМА	r,m
…
ret

Здесь МНЕМА = [mov, sbb, cmp]. Здесь операнд в памяти (m)  может быть задан одним из следующих способов: Namei, Namei + Const.
Требуется разработать программу компоновщик для объединения двух и более объектных файлов в исполняемый для MS DOS.

4.	Шубин
Исходные данные содержат команды вида:

jmp	metka
Name1	dw	?
…
Namek	dw	?
metka:
dec		r
dec		mem
МНЕМА	r,r
МНЕМА	r,mem
…
ret
Name1	dw	?
…
Nameq	dw	?
		end

Здесь МНЕМА = [xchg]. Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: Namei, Namei +/- Const.
Требуется разработать 1А для формирования объектного файла 32 битного формата.
 ОС – Linux.

5.	Коровкин
Исходные данные содержат команды вида:

jmp	metka
Name1	dw	?
		EQU	expression1
		…
Namek	dw	?
		EQU	expressionM
metka:
МНЕМА	r,r
МНЕМА	r,mem
…
ret

Здесь МНЕМА = [mov]. Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: Namei, Namei +/- Const.
Требуется разработать 1А для формирования объектного файла 32 битного формата.

6.	Леконцева
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,imm
…
ret

Здесь МНЕМА = [mul, imul, div, idiv].
Требуется разработать компоновщик для преобразования объектного файла в исполняемый под MS DOS.

7.	Огородникова
Исходные данные содержат команды вида:

МНЕМА	r,mem
…
ret

Здесь МНЕМА = [lea, lds, les]. Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: [BX], [BX+SI], [BX+DISP], [BX+SI+DISP].
Требуется разработать компоновщик для преобразования объектного файла в исполняемый под MS DOS.

8.	Федоров Иван
Исходные данные содержат команды вида:

jmp	metka
Name1	dw	?
…
Namek	dw	?
metka:
jmp		namei
jmp		$+/-const   
je		$+/-const
…
ret

Требуется разработать 1А для формирования объектного файла 32 битного формата под Windows.

9.	Федоров Сергей
Исходные данные содержат команды вида:

jmp	metka
Name1	dd	?
…
NameM	dd	?
metka:
МНЕМА	st(0),st(i)
МНЕМА	st(0),mem
…
ret

Здесь МНЕМА = [fadd, fsub, fld]. Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: [BX+DI], [BX+SI], [BX], namek.
Требуется разработать 1А для формирования объектного файла 32 битного формата под Windows.

10.	Шабалкин
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,imm
МНЕМУ	метка
Metka1:
inc		r
MetkaK:
МНЕМУ	метка
…
ret

Здесь МНЕМА = [mov, cmp],  МНЕМУ = [jl, jg, je], “метка” - символическое обозначение какой-нибудь команды.
Требуется разработать 1А для формирования объектного файла под MS DOS.

11.	Шерстобитов
Исходные данные содержат команды вида:

Name1	dw	?
…
Namek	dw	?
Start:
МНЕМА	r,r
МНЕМА	r,m
…
ret
end	start

Здесь МНЕМА = [sub, add]. Здесь операнд в памяти (m)  может быть задан одним из следующих способов: Namei, [SI], [DI].
Требуется разработать 1А для формирования объектного файла 32 битного формата.