Смекни!
smekni.com

Проектування комп`ютера (стр. 3 из 5)


Програма:

lw 0 1 num1

lw 0 2 num2

div 1 2 3

done halt

num1 .fill 45

num2 .fill 5

Машинний код:

8454148

8519685

34209795

25165824

45

5


Кінцевий стан:

@@@

state:

pc 4

ZF = 0

stack:

memory:

mem[ 0 ] 8454148

mem[ 1 ] 8519685

mem[ 2 ] 34209795

mem[ 3 ] 25165824

mem[ 4 ] 45

mem[ 5 ] 5

registers:

reg[ 0 ] 0

reg[ 1 ] 45

reg[ 2 ] 5

reg[ 3 ] 9

reg[ 4 ] 0

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

2. imul: 3*(-4)=-12.


Програма:

lw 0 1 num1

lw 0 2 num2

imul 1 2 3

done halt

num1 .fill 3

num2 .fill -4

Машинний код:

8454148

8519685

34209795

25165824

3

-4


Кінцевий стан:

@@@

state:

pc 4

ZF = 0

stack:

memory:

mem[ 0 ] 8454148

mem[ 1 ] 8519685

mem[ 2 ] 38404099

mem[ 3 ] 25165824

mem[ 4 ] 3

mem[ 5 ] -4

registers:

reg[ 0 ] 0

reg[ 1 ] 3

reg[ 2 ] -4

reg[ 3 ] -12

reg[ 4 ] 0

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

3. xidiv: 30/(-5)=-6, обміняти операнди місцями.


Програма:

lw 0 1 num1

lw 0 2 num2

xidiv 1 2 3

done halt

num1 .fill 30

num2 .fill -5

Машинний код:

8454148

8519685

42598403

25165824

30

-5


Кінцевий стан:

@@@

state:

pc 4

ZF = 0

stack:

memory:

mem[ 0 ] 8454148

mem[ 1 ] 8519685

mem[ 2 ] 42598403

mem[ 3 ] 25165824

mem[ 4 ] 30

mem[ 5 ] -5

registers:

reg[ 0 ] 0

reg[ 1 ] -5

reg[ 2 ] 30

reg[ 3 ] -6

reg[ 4 ] 0

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

4.and: 5&3=1

0101

&

0011

0001


Програма:

lw 0 1 num1

lw 0 2 num2

andf 1 2 3

done halt

num1 .fill 5

num2 .fill 3

Машинний код:

8454148

8519685

46792707

25165824

5

3


Кінцевий стан:

@@@

@@@

state:

pc 4

ZF = 0

stack:

memory:

mem[ 0 ] 8454148

mem[ 1 ] 8519685

mem[ 2 ] 46792707

mem[ 3 ] 25165824

mem[ 4 ] 5

mem[ 5 ] 3

registers:

reg[ 0 ] 0

reg[ 1 ] 5

reg[ 2 ] 3

reg[ 3 ] 1

reg[ 4 ] 0

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

xor: 5#3=6

0101

#

0011

0110


Програма:

lw 0 1 num1

lw 0 2 num2

xorf 1 2 3

done halt

num1 .fill 3

num2 .fill 5

Машинний код:

8454148

8519685

50987011

25165824

3

5


Кінцевий стан:

@@@

state:

pc 4

ZF = 0

stack:

memory:

mem[ 0 ] 8454148

mem[ 1 ] 8519685

mem[ 2 ] 50987011

mem[ 3 ] 25165824

mem[ 4 ] 3

mem[ 5 ] 5

registers:

reg[ 0 ] 0

reg[ 1 ] 3

reg[ 2 ] 5

reg[ 3 ] 6

reg[ 4 ] 0

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

6. cmpge: 1= 5>=3


Програма:

@@@

state:

pc 4

ZF = 0

stack:

memory:

mem[ 0 ] 8454148

mem[ 1 ] 8519685

mem[ 2 ] 55181315

mem[ 3 ] 25165824

mem[ 4 ] 5

mem[ 5 ] 3

registers:

reg[ 0 ] 0

reg[ 1 ] 5

reg[ 2 ] 3

reg[ 3 ] 1

reg[ 4 ] 0

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

7. jma: if (7>=4) reg[4]=7; else reg[5]=4, reg[4]=7.


Програма:

lw 0 1 num1

lw 0 2 num2

jmae 1 2 1

lw 0 5 num2

lw 0 4 num1

done halt

num1 .fill 7

num2 .fill 4

Машинний код:

8454150

8519687

59375617

8716295

8650758

25165824

7

3


Кінцевий стан:

@@@

state:

pc 6

ZF = 0

stack:

memory:

mem[ 0 ] 8454150

mem[ 1 ] 8519687

mem[ 2 ] 59375617

mem[ 3 ] 8716295

mem[ 4 ] 8650758

mem[ 5 ] 25165824

mem[ 6 ] 7

mem[ 7 ] 4

registers:

reg[ 0 ] 0

reg[ 1 ] 7

reg[ 2 ] 4

reg[ 3 ] 0

reg[ 4 ] 7

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

8. jmnae: if (5!>=6) reg[4]=6; else reg[4]=5, reg[5]=6.


Програма:

lw 0 1 num1

lw 0 2 num2

jmnae 1 2 1

lw 0 5 num2

lw 0 4 num1

done halt

num1 .fill 5

num2 .fill 6

Машинний код:

8454150

8519687

63569921

8716295

8650758

25165824

5

6


Кінцевий стан:

@@@

state

pc 6

ZF = 0

stack:

memory:

mem[ 0 ] 8454150

mem[ 1 ] 8519687

mem[ 2 ] 63569921

mem[ 3 ] 8716295

mem[ 4 ] 8650758

mem[ 5 ] 25165824

mem[ 6 ] 5

mem[ 7 ] 6

registers:

reg[ 0 ] 0

reg[ 1 ] 5

reg[ 2 ] 6

reg[ 3 ] 0

reg[ 4 ] 5

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

9. bsr: if (16=1000) “1” – в позиції 4.


Програма:

lw 0 1 num1

bsr 1 2

done halt

num1 .fill 16

Машинний код:

8454150

8519687

25165824

16


Кінцевий стан:

@@@

state:

pc 3

ZF = 1

stack:

memory:

mem[ 0 ] 8454147

mem[ 1 ] 71958528

mem[ 2 ] 25165824

mem[ 3 ] 16

registers:

reg[ 0 ] 0

reg[ 1 ] -2147483648

reg[ 2 ] 4

reg[ 3 ] 0

reg[ 4 ] 0

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

10. bsf: 8 (1000) – «1» в позиції 3.


Програма:

lw 0 1 num1

bsf 1 2

done halt

num1 .fill 8

Машинний код:

8454147

71958528

25165824

8


Кінцевий стан:

@@@

@@@

state:

pc 3

ZF = 1

stack:

memory:

mem[ 0 ] 8454147

mem[ 1 ] 67764224

mem[ 2 ] 25165824

mem[ 3 ] 8

registers:

reg[ 0 ] 0

reg[ 1 ] 1

reg[ 2 ] 3

reg[ 3 ] 0

reg[ 4 ] 0

reg[ 5 ] 0

reg[ 6 ] 0

reg[ 7 ] 0

end state

11. jne: if (16=1000) “1” – в позиції 4, ZF=1: Робота програми завершується, else reg[4]=8.


Програма:

lw 0 1 num1

bsr 1 0 3

jne 0 0 4

lw 0 4 num1

done halt

num1 .fill 8

Машинний код:

8454150

8519687

67764224

8454147

25165824

8


Кінцевий стан:

@@@

state:

@@@

state:

pc 5

ZF = 1

stack: