Title: Задания на лабораторные работы – 2004 г
Author: M
Last saved by: taras
Company: T

Задания на лабораторные работы – 2006 г.

Общие положения.
Задания связаны с проектированием ассемблеров. Исходными данными являются потоки ассемблерных команд, записанные в  соответствии с правилами языка Ассемблера.
	Требуется разработать:
•	систему признаков для фиксации результатов обработки операндов, таблицу машинных операций;
•	алгоритмы анализа и синтеза машинных операций. 
Результат обработки должен максимально совпадать с теми данными, которые формирует стандартный ассемблер (tasm, masm или ассемблер для ОС Linux). В текстах заданий для указания операндов используются следующие обозначения:
r – операнд находится в регистре общего назначения (РОН);
	m – операнд находится в основной памяти;
	imm – непосредственный операнд.

1.	Аркалов Дмитрий Павлович
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,imm
МНЕМА	r,name
…
ret
	name1	dw		5
		…
	namek	dw		5
		end

Здесь МНЕМА = [add, sub, cmp]. 
Требуется разработать 1А>МД/16. 

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

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

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

3.	Емельянова Мария Викторовна
Исходные данные содержат команды вида:

xchg		r,r
xchg		r,m
neg		r
neg		m
…

Здесь операнд в памяти (m)  может быть задан одним из следующих способов: [BX], [SI], [BX+DI].
Требуется разработать формат объектного файла и сформировать сам объектный файл для этого потока команд для случая 16-разрядных операндов.

4.	Евдокимов Сергей Павлович
Исходные данные содержат команды вида:

.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].
Требуется разработать 1А>ОП/16.

5.	Зяблицева Мария Германовна
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,m
…
Здесь МНЕМА = [sub, cmp].
Операнд в памяти (m)  может быть задан одним из следующих способов: [BX], [SI], [DI], [BX+SI], [BX+DI].
Требуется разработать 1А>ОП/16.

6.	Казаков Александр Игоревич
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,m
…
ret
	name1	dw		5
		…
	namek	dw		5
		end

Здесь МНЕМА = [and, or, xor]. Операнд в памяти (m)  может быть задан одним из следующих способов: name, name[BX], name[BX+SI].
Требуется разработать 1А>ОП/16.

7.	Калимуллин Рустам Робертович
Исходные данные содержат команды вида:

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

Здесь МНЕМА = [mov]. Здесь операнд в памяти (m)  может быть задан одним из следующих способов: Namei, Namei + Const.
Требуется разработать 1А>ОП/16.

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

МНЕМА	r,r
МНЕМА	r,m
…

Здесь МНЕМА = [add]. Операнд в памяти (m)  может быть задан одним из следующих способов: [BX], [BP], [BX+DISP], [BP+DISP].
Требуется сформировать листинг для этого потока команд для 16-разрядных операндов.

9.	Колбин Николай Андреевич
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,imm
МНЕМА	r,name
…
ret
	name1	dw		5
		…
	namek	dw		5
		end

Здесь МНЕМА = [add, sub, cmp]. 
Требуется разработать 1А>МД/16. 
10.	Кузьмин Евгений Николаевич
Исходные данные содержат команды вида:

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

Здесь МНЕМА = [and, or, cmp]. Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: Namei, Namei +/- Const.
Требуется разработать 1А>ОП/16. 

11.	Куликов Евгений Александрович
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,imm
МНЕМУ	метка

Metka1:
Inc		r
MetkaK:
МНЕМУ	метка
…
ret

Здесь МНЕМА = [mov, cmp],  МНЕМУ = [jl, jg, je], “метка” - символическое обозначение какой-нибудь команды.
Требуется разработать 1А>ОП/16.

12.	Никулин Иван Андреевич
Исходные данные содержат команды вида:

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

Здесь МНЕМА = [add, cmp, sbb]. Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: Namei, Namei +/- Const.
Требуется разработать MА /16 -> ОП.

13.	Мамонтов Павел Олегович
Исходные данные содержат команды вида:

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

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

14.	Павлов Александр Сергеевич
Исходные данные содержат команды вида:

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

Здесь МНЕМА = [inc, dec]. Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: [BX], [BX+SI], [BX+DI], [BX+DISP], [BP], [BP+SI], [BP+DI].
Требуется разработать формат объектного файла и сформировать сам объектный файл для этого потока команд для случая 16-разрядных операндов.

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

МНЕМА	r
МНЕМА	mem
…
ret

Здесь МНЕМА = [push, pop]. Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: [BX], [BX][SI], [BX][DI], [BX+DISP].
Требуется разработать формат объектного файла и сформировать сам объектный файл для этого потока команд для случая 16-разрядных операндов.

16.	Смирнов Алексей Олегович
Исходные данные содержат команды вида:

МНЕМА	r,mem
МНЕМА	r,constanta
…
ret

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

17.	Сухих Дмитрий Вячеславович
Исходные данные содержат команды вида:

Name1	dw	?
…
NameM	dw	?
start:
Call 	mem
ret	constanta
ret		
…
end	start

Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: [BX+DI], [BX+SI], [BX+DISP], [BX+SI+DISP], [BX+DI+DISP], namek, namek+/-const.
Требуется разработать 1А>ОП/16.

18.	Цылев Антон Валерьевич
Исходные данные содержат команды вида:

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

Требуется сформировать листинг для этого потока команд для случая 16-разрядных операндов.

19.	Чирков Андрей Валерьевич
Исходные данные содержат команды вида:

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.
Требуется сформировать листинг для этого потока команд для случая 16-разрядных операндов.

20.	Шаров Михаил Николаевич
Исходные данные содержат команды вида:

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

Здесь МНЕМА = [fmul, fdiv, fld]. Здесь операнд в памяти (mem)  может быть задан одним из следующих способов: [BX], [BX][SI], [BX+DISP], [BX][DI], [BP], [BP+DISP] namek.
Требуется сформировать листинг для этого потока команд для случая 16-разрядных операндов.

21.	Янилкин Дмитрий Викторович
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,m
МНЕМУ	метка
…
ret

Здесь МНЕМА = [sub, cmp],  МНЕМУ = [ja, jz], “метка” - символическое обозначение какой-нибудь команды.
Операнд в памяти (m)  может быть задан одним из следующих способов: [BX], [SI], [DI], [BX][SI], [BX][DI].
Требуется сформировать листинг для этого потока команд для случая 16-разрядных операндов.

22.	Никулин Роман Александрович
Исходные данные содержат команды вида:

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

Здесь МНЕМА = [mov]. Здесь операнд в памяти (m)  может быть задан одним из следующих способов: [BX], Namei, Namei + Const.
Требуется разработать 1А>ОП/16.

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

МНЕМА	r,r
МНЕМА	r,m
МНЕМУ	метка
…
ret

Здесь МНЕМА = [mov, cmp],  МНЕМУ = [jz, jg], “метка” - символическое обозначение какой-нибудь команды.
Операнд в памяти (m)  может быть задан одним из следующих способов: [BX], [SI], [DI], [BX+SI], [BX+DI].
Требуется разработать 1А>ОП/16.

24.	 Петров Виталий Геннадьевич
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,imm
МНЕМУ	$+смещение
МНЕМУ	$-смещение
МНЕМУ	метка
…
ret

Здесь МНЕМА = [sub, inc, cmp],  МНЕМУ = [jl, jb, je], “метка” - символическое обозначение какой-нибудь команды.
Требуется разработать 1А>ОП/16.

25.	Гаврилов Роман Васильевич
Исходные данные содержат команды вида:

МНЕМА	r,r
МНЕМА	r,m
МНЕМУ	метка
…
ret

Здесь МНЕМА = [mov, cmp],  МНЕМУ = [jz, jg], “метка” - символическое обозначение какой-нибудь команды.
Операнд в памяти (m)  может быть задан одним из следующих способов: [BX], [SI], [DI], [BX+SI], [BX+DI].
Требуется разработать 1А>ОП/16.

26. Тентюк Максим Васильевич
Разаработать ДА для объектного файла, содержащего различные варианты команды MOV для случая 16-разрядных операндов.