3. Załóżmy, że $s1 = 0x87654321. Określ zawartość rejestrów $s2 do $s4 po uruchomieniu następujących instrukcji: sll (shift left logical - logiczne przesunięcie w lewo), srl (shift right logical - logiczne przesunięcie w prawo), sra (shift right aritmetic - arytmetyczne przesunięcie w prawo).

Napisz program do wykonania tych instrukcji i sprawdź zawartość rejestrów $s2 do $s4. (Assembler)


Odpowiedź :

Odpowiedź:

kod:

li $s1, 0x87654321 ;

sll $s2,$1,2

srl $s3, $s1,2

sra $s4, $s1, 2

addi $v0, $zero, 10

syscall

Rejestry:

s1 0x87654321 :)

s2 0x1d940000

s3 0x21d950c8

s4 0xe1d950c8

Mini opis:

li $s1, 0x87654321  ; przypisujemy wartość do rejestru

sll $s2,$1,2 ; LShift

srl $s3, $s1,2 ;RShift

sra $s4, $s1, 2 ;ARShift

addi $v0, $zero, 10 ; flaga do przerwania systemowego -> wyjścia

syscall ; przerwanie systemowe

Mam nadzieje, że o to chodziło : )