Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой проект по дисциплине Архитектура ЭВМ.doc
Скачиваний:
28
Добавлен:
01.05.2014
Размер:
661.5 Кб
Скачать

4. Тестовая задача

Пусть дан линейный массив двоичных чисел. Нужно определить индексы (местоположение) нечетных чисел в массиве. Получится новый линейный массив.

Дано:[0001 0010 0000 0110 0100 0000 0000 0100 1010 1100 0101 0000]

1 2 3 4 5 6 7 8 9 10 11 12

Получим: [1 11] и [0001 0101]

4.1. Алгоритм и программа для тестирования эвм

Тестирование заключается в моделировании процесса, выполняющий программу, которая в исходном линейном массиве А двоичных чисел выделяет числа, индекс которых определяется арифметической прогрессией с разностью равной трем. Требуется создать новый массив из выделенных элементов. Вi=A3i (i=0, 1, 2, …).

Start: PtrRk R1; из регистра R1 в регистр Rk - Rk←RAM(R1)

Read [Rk]; читаем i-элемент исходного А-массива в Акк

PtrRk R2; из регистра R2 в регистр Rk - Rk←RAM(R2)

And M; логическое умножение по заданной маске

CMP #0; если в аккумуляторе 0, то переходим по метке L1

JZ L1; если нет, то считываем следующий элемент исходного массива

L1: Read R2; читаем регистр R2

Wr [Rk]; записываем в i-элемент нового В-массива из Акк

Add #4; сложение R2+4→Aкк

Wr R2; записываем в R2←Aкк

Jmp Next;

Next: Read R1; читаем регистр R1

Add #4; сложение R1+С→Aкк

Wr R1; записываем в R1←Aкк

Cmp R3; проверка – не вышли ли за предел исходного массива

Jz Exit; если вышли – на метку Exit

Jmp Start; если нет – переходим на метку Start

Exit: HLT; остановка Tп=0

Программа команды.

Ад-

рес Нex

Обозначение команды

Объектный код

(двоичное представление)

Комментарий

100

Start:PtrRkR1

10101 01 000000000000011000000000

Rk←Ram(R1)

104

Read[Rk]

01001 11 000000000000000000000000

Akk←Ram(Rk)

108

PtrRkR2

1010101 000000000000011000000100

Rk←Ram(R2)

10C

And M

01100 00 000000000000000000000001

AccAcc&M

110

CMP #0

11010 01 000000000000000000000000

Если Acc-M=0 тоZF=1, иначеZF=0

114

JZ L1

00100 00 000000000000101100001000

Если IF=1 тоIPIP+L1

118

L1: ReadR2

01001 01 000000000000011000000100

Akk←Ram(R2)

11C

Wr[Rk]

0011011 000000000000000000000000

Ram(Rk)←Akk

120

Add#4

1100110 000000000000000000000100

Akk←Akk+4

124

WrR2

0011001 000000000000011000000100

Ram(R2)←Akk

128

Jmp Next

01011 00 000000000000011000100000

IPNext

12C

Next: ReadR1

0100101 000000000000011000000000

Akk←Ram(R1)

130

Add#4

1100110 000000000000000000000100

Akk←Akk+4

134

WrR1

0011001 000000000000011000000000

Ram(R1)←Akk

138

CmpR3

11010 01 000000000000011000001000

Если(Akk-R3)=0,

тоZF=1

иначе(Akk-R3)≠0,

то ZF=0

13C

JzExit

0010001 000000000000000100110100

Если(ZF=1),

тоIP=exit(144)

140

JmpStart

0101101 000000000000000100000000

IP=start(100)

144

Exit: HLT

0100001 000000000000000000000000

Tп=0

Программа данных.

Адрес Нex

Идентификатор

Объектный код

(двоичного представления)

Комментарий

400

A0

00000000 00000000 00000000 00000001

1

404

A1

00000000 00000000 00000000 00000010

2

408

A2

00000000 00000000 00000000 00000000

0

40С

A3

00000000 00000000 00000000 00001100

12

410

A4

00000000 00000000 00000000 00000100

8

414

A5

00000000 00000000 00000000 00000000

0

418

A6

00000000 00000000 00000000 00000000

0

41C

A7

00000000 00000000 00000000 00000100

4

420

A8

00000000 00000000 00000000 00000010

2

424

A9

00000000 00000000 00000000 00000100

8

428

A10

00000000 00000000 00000000 00000101

5

42C

A11

00000000 00000000 00000000 00000000

0

500

B0

00000000 00000000 00000000 00000001

1

504

B1

00000000 00000000 00000000 00000101

5

600

R1

00000000 00000000 00000100 00000000

400

604

R2

00000000 00000000 00000101 00000000

500

608

R3

00000000 00000000 00000100 00110000

430

60C

Rk

00000000 00000000 00000100 00000000

0

610

M

00000000 00000000 00000000 00000000

1

R1 – регистр для обращения к исходному массиву А.

R2 – регистр адреса по которому хранится новый массив В.

R3 – адрес за последним элементом исходного массива.

Rk – регистр косвенного адреса.

M – регистр хранения маски.