You are on page 1of 6

Архитектура и организација на компјутери

Разгледајте ги и анализирајте ги дадените примери.


Пример 1

.data
int a = 5; a: .word 5
int b = 2021; b: .word 2021

int main() { .text


la $t0, a #adresata na a smesti ja vo t0
lw $t1, 0($t0)
la $t0, b #adresata na b smesti ja vo t0
int c = a - b; lw $t2, 0($t0)
sub $t3, $t1, $t2
printf("%d", c); add $a0, $t3, $zero
li $v0, 1 #ispecati ja sodrzinata na a0
syscall

return 0; li $v0, 10 #izlez od main


} syscall

Пример 2
C МИПС
.data
int niza[6] = {123, 456, 789, numbers: .word 123, 456, 789, 987,654,
987,654, 321}; 321
int main() {
int z; .text
#lokalna promenliva koja ke bide
#smesetna vo nekoj registar
la $t1, numbers # procitaj ja poc.
niza[2] = niza[0] + niza[4]; Addrna
# nizata
z = niza[2]; lw $t0, 0($t1)
lw $t2, 16($t1)
add $t3, $t0, $t2
printf("%d", z); sw $t3, 8($t1)

addi $a0, $t3, $zero

li $v0, 1
return 0; syscall
}
li $v0, 10
syscall
.data
int a = 5; a: .word 5
int b = 2021; b: .word 2021

int main() { .text


la $t0, a #adresata na a smesti ja vo t0
lw $t1, 0($t0)
Архитектура и организација на компјутери

la $t0, b #adresata na b smesti ja vo t0


int c = a - b; lw $t2, 0($t0)
sub $t3, $t1, $t2
printf("%d", c); add $a0, $t3, $zero
li $v0, 1 #ispecati ja sodrzinata na a0
syscall

return 0; li $v0, 10 #izlez od main


} syscall

Пример 2
C МИПС
.data
int niza[6] = {123, 456, 789, numbers: .word 123, 456, 789, 987,654,
987,654, 321}; 321
int main() {
int z; .text
#lokalna promenliva koja ke bide
#smesetna vo nekoj registar
la $t1, numbers # procitaj ja poc.
niza[2] = niza[0] + niza[4]; Addrna
# nizata
z = niza[2]; lw $t0, 0($t1)
lw $t2, 16($t1)
add $t3, $t0, $t2
printf("%d", z); sw $t3, 8($t1)

addi $a0, $t3, $zero

li $v0, 1
return 0; syscall
}
li $v0, 10
syscall

Пример 3
C МИПС

Пример 4
C МИПС

Пример 5
C МИПС

Решете ги слдните задачи:


Архитектура и организација на компјутери

Задача 1) Преведете ја програмата од пример 1 (од асемблер во машински јазик), и


извршете ја чекор по чекор.
a) Анализирајте ја содржината на регистрите $a0, $t0, $t1, $t2 и $t3 (внесете ги
сите чекори до завршување на програмата).

Чекор a0 t0 t1 t2 t3

b) Променете ја задачата така што b=-100 и во $a0 ќе ја сместите вредноста


16a+4b (користете поместување) и прикажете ја истата на екран. Преведете ја и
извршете ја модифицираната програма чекор по чекор.
Програма

Задача 2) Извршете ја ја програмата од пример 2 чекор по чекор.


c) Анализирајте ја содржината на податочниот дел од меморијата. Која е
почетната адреса на полето?

d) Напишете ја содржината на податочниот дел од меморијата при извшување на


првата инструкција и по извршувањето на последната инструкција.
Архитектура и организација на компјутери

e) Напишете ја содржината на регистрите $t0, $t1, $t2 и $t3.

Чекор t0 t1 t2 t3

Задача 3) Кој е соодветниот C израз за следните МИПС изрази, ако се претпостави


дека а, b,c и d се сместени во регистрите $s1, $s2, $s3, $s4 соодветно?
addi $s1, $s2, 5
addi $s3, $s4, -2
div $s1, $s3
mfhi $s2
Програма

Дополнете ја програмата, така што на регистрите $s1, $s2, $s3, $s4 ќе им дадете
почетни вредности 4, 9, 10 и 7. Која е нивната вредност по завршување на
програмата?

Програма
Архитектура и организација на компјутери

Вредности на регистрите

Задача 4) За следниот код во C напишете соодветна асемблерска програма, под


претпоставка дека почетната адреса на А е сместена во $s1.
int A[10] = {1,3,5,7,9,10,11,12,13,15};
int i=5 (i и j да се внесат како променливи во податочниот сегмент)
int j=12;
j=j & 3
A[i+2] = A[i/2] + j%5;
printf(“%d”,j)
int s = A[i+1];
printf(“%d”,s)

Програма
Архитектура и организација на компјутери

You might also like