2014-10-07 1 views
0

안녕하세요 여러분, MIPS 프로그래밍에 익숙하지 않고 MIPS의 구문과 규칙을 파악하는 데 어려움을 겪고 있습니다. 나는 3 개의 정수에 대한 사용자 입력을 받아서 가장 큰 것으로부터 가장 큰 것으로 정렬하는 프로그램을 작성하려고합니다. 지금까지 내가 가지고있는 코드는 내가 입력을하고 a0- $의 A2를 $ 3 개 별도의 레지스터로 저장하는 방법에 대한 혼란 스러워요사용자가 MIPS에서 입력 한 3 개의 정수를 정렬하십시오.

.data 
prompt: .asciiz "Enter an integer: " 

.text 
.global main 

main: 
li $v0, 4 
la $a3, prompt 
syscall 

li $v0, 5 
li $a0, $v0 
syscall 

li $v0, 5 
li $a1, $v0 
syscall 

li $v0, 5 
li $a2, $v0 
syscall 

입니다. 또한 매개 변수가있는 함수를 선언하는 방법을 알지 못합니다. 나는 또한 내가 여기 뭔가 잘못하고 있다고 생각하기 때문에 사용자 입력을 수집하는 위의 코드가 올바른지 알고 싶다. 나는이 저수준 언어에 익숙하지 않지만 Java에 능숙합니다. 모든 설명은 Java를 사용하여 단순화하는 데 도움이 될 수 있습니다. 여기에 감사

+0

누구든지 ????????? – Heyya

답변

0

몇 가지 포인트 :

li

로드의 immediate 만입니다. 두 개의 레지스터에 대해 move이 필요할 것입니다. 5 번 세 번로드 할 필요가 없습니다.

문자열을 인쇄하려면 문자열을 $ a0에로드하십시오.

Java에 익숙하다면 정렬 알고리즘에 문제가 없어야합니다. 너는 기능조차 필요로하지 않는다.

함수는 jal을 사용하여 반환 주소를 저장하고 $ a0- $ a3 레지스터를 사용하는 함수로 이동합니다. 어떻게 작동하는지 모르는 경우이 가이드를 찾아보아야합니다.

+0

응답 해 주셔서 감사합니다. 그게 내 교수가 원하는 기능이기 때문에 기능이 있어야합니다. 내가 자바에서 정렬하는 방법을 알고 있지만 MIPS 언어로 그것을 번역하는 방법을 전혀 모른다. MIPS 정렬 알고리즘의 예를 들어 주시겠습니까? 미리 감사드립니다 – Heyya

+0

@ Heyya 나는 확실하지 않습니다.하지만 3 개의 숫자 만 정렬하면 상당히 사소한 것이됩니다. 당신은 아마도 약간의 스왑 (버블 정렬의 아주 최소한의 버전)으로 벗어날 수 있습니다. – qwr