mips를 사용하는 클래스 학습 어셈블리의 메신저. 배열 배열을 정렬하는 중입니다. 올바르게 작동하는 메서드가 있다고 생각하지만 문제는 조금 있습니다. 메신저가 완전히 분류 된 때를 확인하는 방법을 모르겠습니다. 나는 정렬에 꽤 기초적인 방법을 사용하고 있지만, 그것은 우리가 지금까지 배웠던 모든 것입니다. 또한, 나는 그것이 정렬되어 있는지 확인하기 위해 숫자를 출력하는 방법을 모르겠습니다. 임씨는 Java에 익숙했기 때문에 어셈블리가 나에게 조금만 던져주고 있습니다. 여기까지 내 코드는 다음과 같습니다.mips의 배열 정렬 (어셈블리)
.text
.globl main
main: la $a0, Array # sets the base address of the array to $a0
loop: lw $t0, 0($a0) # sets $t0 to the current element in array
lw $t1, 4($a0) # sets $t1 to the next element in array
blt $t1, $t0, swap # if the following value is greater, swap them
addi $a0, $a0, 4 # advance the array to start at the next location from last time
j loop # jump back to loop so we can compare next two elements
swap: sw $t0, 4($a0) # store the greater numbers contents in the higher position in array (swap)
sw $t1, 0($a0) # store the lesser numbers contents in the lower position in array (swap)
li $a0, 0 # resets the value of $a0 back to zero so we can start from beginning of array
j loop # jump back to the loop so we can go through and find next swap
.data
Array: .word 14, 12, 13, 5, 9, 11, 3, 6, 7, 10, 2, 4, 8, 1
감사합니다!
버블 정렬의 일종처럼 나에게 보인다. 왜 당신은 스와핑 후 배열의 시작 부분으로 이동합니까? arr [i]> arr [i + 1] 인 경우 각 반복 후에 배열의 마지막 위치에 하나 이상의 요소가 있습니다. 이 방법을 사용하면 n 번 (n은 배열의 길이 임)을 n 번 반복하면 끝에 배열을 정렬 할 수 있습니다. –
또한 출력을 사용자에게 작성하는 데 도움이됩니다. http://forum.codecall.net/topic/42881-mips-assembly-take-user-input-and-write-to-the-console/ –
만약 내가 배열의 처음으로 되돌아 가기를 바라지 않고 계속 가려고한다면 배열의 끝에있는 메신저를 어떻게 알 수 있고 어떻게 정렬 될지 어떻게 알 수 있을까요? – erp