2014-02-17 2 views
0

MIPS를 사용하여 세 가지 작업을 시도하고 있지만 현재 어디에서 시작할지 모릅니다.MIPS 메모리 액세스

주소 0x10000000.의 메모리 위치에 0101 0101 0101 0101 값을 쓰고 코드의 일부로 16 비트 이진 값을 십진수 또는 16 진수로 변환해야합니다. 먼저 값을 레지스터에 넣은 다음 레지스터 값을 해당 주소에 메모리에 저장하십시오.

그런 다음 주소 0x10000004에있는 다음 메모리 위치에 1010 1010 1010 1010 1010 1010 1010 1010 값을 써야합니다. 다시 32 비트 이진 값을 변환하십시오. 그런 다음 먼저 lui을 사용하여 상위 16 비트를로드 한 다음 ori을 사용하여 하위 16 비트를로드하십시오.

마지막으로 0x100000000x10000004에 저장된 값을 추가하고 메모리의 다음 주소에 32 비트 단어 결과를 저장해야합니다.

도움이 될 것입니다. 등

고마워

답변

1

코드를 설명하는 것은이 시도 :

addi $t0 $zero 0x5555 #store 0101 0101 0101 0101 in $t0 
lui $t1 0x1000  #store 0x10000000 in $t1 
sw $t0 0($t1) 

lui $t0 0xAAAA #store 1010 1010 1010 1010 0000 0000 0000 0000 in $t0 
ori $t0 0xAAAA #store 1010 1010 1010 1010 1010 1010 1010 1010 in $t0 
sw $t0 4($t1) 

#load the values, add and store back 
lw $t2 0($t1) 
lw $t3 4($t1) 
add $t4 $t2 $t3 
sw $t4 8($t1) 

난 당신이 여러 기지 사이에 앞뒤로 전환 할 필요에 대해 이야기하고 어디는 혼란 아마 어떤 생각합니다. 위에서 볼 수 있듯이, 이것은 필요하지 않습니다.

+0

완벽한 :) 감사합니다. – user3320684