Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №3 [вариант 10].doc
Скачиваний:
19
Добавлен:
02.05.2014
Размер:
107.52 Кб
Скачать

3. Выполнение работы

3.1 Ответы на вопросы:

1. Чем отличается сложение чисел в соответствии с ГСА от операции, реализуемой командой SUB Ri?

SUB Ri позволяет непосредственно вычесть из аккумулятора содержимое РОН или ячейки памяти (A=A-Ri) и результат вычитания занести в А (сложить в дополнительном коде А=А+[()+1] без учета знака вычитаемого).

2. Как устанавливается "низ" стековой памяти, и какую область ОЗУ она будет занимать?

"Низ" стека фиксируется установкой его адреса в SP командой SPHL (SPHL передает в указатель стека содержимое регистровой пары H, L).

3. Какие функции выполняет команда RET?

RET выполняет безусловный возврат к команде основной программы: её адрес загружается из вершины SP стековой памяти, к указателю стека прибавляется 2.

4. Прокомментируйте содержание подпрограммы перевода чисел в дополнительный код.

Подпрограмма перевода чисел в дополнительный код осуществляет следующие операции. Число, хранимое в аккумуляторе, сдвигается циклически через разряд СУ регистра F влево на один разряд; если СУ = 0, т.е. число положительное, то оно сдвигается вправо; если СУ = 1, т.е. число отрицательное, то содержимое аккумулятора инвертируется, сдвигается вправо, а затем к нему прибавляется 1.

5. Какую операцию выполняет команда PUSH PSW?

PUSH PSW – команда занесения в стек слова состояния процессора. Она помещает в М(SP-1) содержимое А, а в ячейку М(SP-2) содержимое F, причем разрядам ячейки М(SP-2) присваиваются b0СУ, b2P, b4АС, b6Z, b7S.

6. При помощи, каких команд можно занести содержимое РОН в стековую память?

Занести содержимое РОН в стековую память можно с помощью команды PUSH RP (помещает содержимое регистровой пары RP в стек), SPHL (передает в указатель стека содержимое регистровой пары H, L).

3.2. Перевод чисел из десятичной в двоичную и шестнадцатеричную системы счисления:

X(10) = 7.11

X(2) = 111.000111000010

X(16) = 7.1C2

X*(2) = 0011 1000 (коэффициент фиксации = 3)

X*(2)д = 0011 1000

X*(16) = 38

X*(16)д = 38

Y(10) = -18.3

Y(16) = -90.4C

Y(2 )= -10010.010011001100

Y*(2) = 1100 1001 (коэффициент фиксации = 3)

Y*(16) = C9

Y*(2)д = 1011 0110 + 20 = 1011 0111

Y*(16)д = B7

3.3 Уточненный алгоритм вычислений:

3.4 Программа вычисления операции [Z]д = [X]д + [-Y]д:

Адрес

Команда

Код

A

C

H, L

82

0B

0C

0D

82FE

82FF

8300

STC

CMC

LXI H, VV

37

3F

21

8301

0B

8302

82

8303

MVI M, V

36

820B

8304

38

38

8305

INX H

23

820C

8306

MVI M, V

36

8307

C9

C9

8308

DCX H

2B

820B

8309

MOV C, M

4E

38

830A

MOV A, C

79

38

830B

CALL 8400

CD

830C

00

830D

84

38

830E

MOV C, A

4F

38

830F

INX H

23

820C

8310

MOV A, M

7E

C9

8311

CALL 8400

CD

8312

00

8313

84

B7

8314

ADD C

81

EF

8315

INX H

23

820D

8316

MOV M, A

77

EF

8317

RST 4*8

E7

Подпрограмма перевода числа в аккумуляторе в дополнительный код:

Ячейка (16)

Мнемоника

Код команды (16)

8400

RAL

17

8401

JNC 840A

D2

8402

0A

8403

84

8404

CMA

2F

8405

RAR

1F

8406

INR A

3C

8407

JMP 840B

C3

8408

0B

8409

84

840A

RAR

1F

840B

RET

C9

Перевод числа X в дополнительный код:

1) Сдвиг влево:

СУ = 0; A = 0111 0000(2) = 70 (16)

2) Сдвиг вправо:

СУ = 0; A = 0011 1000(2) = 38 (16)

Перевод числа (-Y) в дополнительный код:

1) Сдвиг влево:

СУ = 1; A =1001 0010 (2) = 92(16)

2) A = Ā = 0110 1101(2) = 6D(16)

3) Сдвиг вправо:

СУ = 1; A = 1011 0110(2) =B6 (16)

4) A = A+1 = 1011 0110+1(2) = 1011 0111(2) = B7(16)

-Yд = 1011 0111(2) = B7(16)

Сложение чисел X и (-Y) в дополнительных кодах:

0011 1000(2) = 38(16)

1011 0111(2) = B7(16)

1110 1111 (2) = EF(16)

[Z]д = [X]д + [-Y]д = 1110 1111 (2) = EF(16)