You are on page 1of 5

Компјутерски архитекутри 2020

Начини на адресирање

1. Дадена е едноадресна машина со акумулатор и следните мемориски вредности:

• Адреса 20 содржи 40.


• Адреса 30 содржи 50.
• Адреса 40 содржи 60.
• Адреса 50 содржи 70.

Која вредност се внесува во акумулаторот се следните инструкции?

а. LOAD IMMEDIATE 20
б. LOAD DIRECT 20
в. LOAD INDIRECT 20
г. LOAD IMMEDIATE 30
д. LOAD DIRECT 30
ѓ. LOAD INDIRECT 30

а. 20
б. 40
в. 60
г. 30
д. 50
ѓ. 70

2. Ако содржината на локациите 100, 200, 300, 400 се 100, 200, 300, 400 соодветно, а
содржината на регистарот R1 е 0 и на индексниот регистар е 100, колкави ќе бидат
содржините на сите локации по извршување на следниве инструкции.
100 100 R1
1о ADD 100 (indeksno), R1 200 200 0
2о ADD 100 (neposredno), 200 (indirektno) 300 300
3о ADD 100 (neposredno), 200 (indirektno) 400 400 IX 100
о
4 ADD 300 (indirektno), R1

Форматот на инструкциите е следен ADD op1, op2 => op2  op1 + op2

РЕШЕНИЕ:

1о ADD 100(I), R1; ЕА (op1) = (IX) + број = 100 + 100 = 200, податокот на адреса
200 е 200 => op1 = 200.
op2 = 0 – Вредноста сместена во регистарот R1.
=> op1+op2 = 200 + 0 =200, a бидејќи втор операнд е R1 во него се сместува 200.

100 100 R1 200


200 200
300 300
400 400 IX 100
1
Компјутерски архитекутри 2020
Начини на адресирање

2о ADD 100(nep), 200(ind); op1 = 100; EA (op2) = (200) = 200; Оди на адреса 200,
па оди на адреса што ќе ја најдеш таму (200) и земи го податокот.=> op2=200.
op2  op1+op2 = 100 + 200 => се сместува 300 на адреса 200 (повторно
индиректно).

100 R1 200
100
200 300
300 300
IX 100
400 400

3о ADD 100(nep), 200(ind); op1 = 100; EA (op2) = (200) = 300; Оди на адреса 200,
па оди на адреса што ќе ја најдеш таму (300) и земи го податокот.=> op2=300.
op2  op1+op2 = 100 + 300 => се сместува 400 на адреса 300 (повторно
индиректно).
R1 200
100 100
200 300
300 400 IX
400 100
400

4о ADD 300(Ind), R1; op2 = 200; EA (op1) = (300) = 300; Оди на адреса 300, па оди
на адреса што ќе ја најдеш таму (400) и земи го податокот.=> op2=400.
op2  op1+op2 = 400 + 200 => се сместува 600 во R1.

КОНЕЧНА СОСТОЈБА:

100 100 R1 600


200 300
300 400
400 400 IX 100

3. Наменски компјутер ги користи следните инструкции: ADD, SUB, JMPZ (собери,


одземи, скокни ако е нула). Притоа, форматот на инструкциите е следен:
inst_tip op1, op2 => op1op1 inst op2
Тип на адресирање
JMPZ operand, skok=> if operand=0 then (оди на скок)

Да се изврши следнава програма и наведат последните вредности:

2
Компјутерски архитекутри 2020
Начини на адресирање

ADD_D 100,200 адреси содржина


SUB_N R1,23 100 100
SUB_N R1,23
JMPZ R1, pri_kraj 200 200
SUB_N R1, 2 300 300
ADD_D 200, 100
ADD_R -4 (релативно во однос на бројач) R1 50
ADD_D 100, R1
SUB_N R1, 5
pri_kraj: ADD_D 100, 300
END.

адреси 0 1и2 3и4 5,6,7,8 9,10,11,12 13 KRAJ


100 100 300 300 300 300 600 600
200 200 200 200 500 800 800 800
300 300 300 300 300 300 300 300
R1 50 27 4 2 0 0 0

1о ADD_D 100,200; ЕА (op1) = 100 => op1 = 100; ЕА (op2) = 200 => op1 = 200;
EA(op1) = op1+op2=300;
2о SUB_N R1,23; R1R1-23=> R1=27;
3о SUB_N R1,23; R1R1-23=> R1=4;
4о JMPZ R1, pri_kraj R1 не е 0, па оди на наредната инструкција.
5о SUB_N R1, 2 R1R1-2=> R1=2;
6о ADD_D 200,100; ЕА (op1) = 200 => op1 = 200; ЕА (op2) = 100 => op1 = 300;
EA(op1) = op1+op2=500;
7о ADD_R -4; Одземи 4 од PC и тој ќе покажува на JMPZ => следна инструкција
која ќе се изврши.
8о JMPZ R1, pri_kraj R1 не е 0, па оди на наредната инструкција.
9о SUB_N R1, 2 R1R1-2=> R1=0;
10о ADD_D 200,100; ЕА (op1) = 200 => op1 = 500; ЕА (op2) = 100 => op1 = 300;
EA(op1) = op1+op2=800;
11о ADD_R -4; Одземи 4 од PC и тој ќе покажува на JMPZ => следна инструкција
која ќе се изврши.
12о JMPZ R1, pri_kraj R1 е 0, скока на pri_kraj.
13о ADD_D 100,300; ЕА (op1) = 100 => op1 = 300; ЕА (op2) = 300 => op1 = 300;
EA(op1) = op1+op2=600;
14о КРАЈ.

3
Компјутерски архитекутри 2020
Начини на адресирање

4. Наменски компјутер ги користи следните инструкции: ADD, SUB, LOAD, STORE


и JMPZ.
Притоа, форматот на инструкциите е следен:
instr_tip OPRND_ 1 → се извршува како ACC=ACC instr OPRND_1
JMPZ operand, skok → се извршува како if operand=0 then (оди на скок)
load_tip ADDR → го полни акумулаторот (директно или индиректно)
store_tip ADDR → ја сместува содржината од акумулаторот (директно или
индиректно)
Да се прикаже извршувањето на следнава програма чекор по чекор и да се наведат
крајните вредности:

LOAD_D 100
ADD_N 100
STOR_D 300 D директно
I индиректно
JMPZ ACC, Na_kraj
N непосредно
SUB_D 100 R релативно во
STORE_I 300 однос на PC
ADD_R -4
ADD_D 200
SUB_N 10
LOAD_I 200
Na_kraj: STORE_D 100
END

Адреси Содржина
100 100 0 (13°)
200 200 100 (6°) 0 (10°)
300 300 200 (3°)
ACC -50 100 (1°) 200 (2°) 100 (5°) 0 (9°)

1° LOAD_D 100; ADR=100, VR=100 => смести 100 во ACC(се пребришува


претходната содржина на ACC)
2° ADD_N 100; ADR= nema, VR=100, ACC=100 => ACC=100+100=200
3° STORE_D 300 ; ADR=300 На таа адреса смести вредност од ACC.
4° JMPZ ACC, PRI_KRAJ; ACC не е 0 => не скока Na_kraj
5° SUB_D 100; ADR=100, VR=100 => ACC=ACC-VR=200-100=100
6° STORE_I 300; оди на 300 и од таму земи ја адресата => ADR=200. На таа адреса
смести вредност од ACC.
7° ADD_R -4; PC= PC - 4 (оди на JUMPZ)
8° JMPZ ACC, PRI_KRAJ; ACC не е 0 => не скока Na_kraj
9° SUB_D 100; ADR=100, VR=100 => ACC=ACC-VR=100-100=0
10° STORE_I 300; оди на 300 и од таму земи ја адресата => ADR=200. На таа
адреса смести вредност од ACC.
11° ADD_R -4; PC= PC - 4 (оди на JUMPZ)
12° JMPZ ACC, Na_kraj; ACC е 0, скокни Na_kraj
13° Na_kraj, STORE_D 100; ADR=100. На таа адреса смести вредност од ACC.
14° END крај

4
Компјутерски архитекутри 2020
Начини на адресирање

Конечни вредности:

Адреси содржина
100 0
200 0
300 200
ACC 0

5. Да се извршат назначените инструкции и наведат крајно добиените вредности.


Начинот на извршување на инструкциите е:
inst_Tip1_Tip2 OP1, OP2 => OP1OP1 inst OP2
JMPZ_Tip OP, skok=> if operand=0 then (оди на skok)

ADD_D_N 200, 200 Адреси Содржина


SUB_IX_I 100, 100 100 500
SUB_D_I 500, 600 200 200
JMPZ_D 500, KRAJ 300 400
SUB_I_I 100, 300 400 200
ADD_D_D 200, 300 500 300
ADD_RPC -4 600 200
KRAJ: ADD_IX_IX 0, 100 IX 100
END

адреси 0 1 2 3,4 5 6 7,8,9


100 500 500 500 500 500 500 1000
200 200 400 100 100 100 500 500
300 400 400 400 400 400 400 400
400 200 200 200 200 200 200 200
500 300 300 300 200 0 0 0
600 200 200 200 200 200 200 200
IX 100 100 100 100 100 100 100

1о ADD_D_N 200,200 (200) (200)+200; (200) 200+200; (200) 400


2о SUB_IX_I 100,100 (IX+100) (IX+100) -((100)); (200) (200)-(500);
(200) 400-300; (200) 100
о
3 SUB_D_I 500,600 (500) (500)-((600)); (500) 300-(200); (500) 300-100;
4о JMPZ_D 500, KRAJ (500) не е 0, туку 200. Затоа, оди на наредната инструкција.
5о SUB_I_I 100,300 ((100)) ((100))-((300)); (500) (500)-(400);
(500) 200-200; (500) 0;

6о ADD_D_D 200,300 (200) (200)+(300); (200) 100+400; (200) 500;


7о ADD_RPC -4; Одземи 4 од PC и тој ќе покажува JMPZ_D 500, KRAJ
8о JMPZ_D, KRAJ (500) е 0, па оди на инструкцијата кај лабелата KRAJ.
9о ADD_IX_IX 0,100 (IX+0) (IX+0) +(IX+100) ; (100) (100)+(200);
(100) 500+500; (100) 1000;
5

You might also like