드래그 앤 드롭으로 즐겨찾기 아이콘 위치 수정이 가능합니다.
게시물ID : computer_114343 짧은주소 복사하기
작성자 : 아버지레드불
추천 : 0
조회수 : 1869회
댓글수 : 2개
등록시간 : 2013/09/24 15:36:12
TITLE Descending Integer Sort (test.asm) ; Program Description: 4byte 정수 리스트를 sort하는 프로그램 ; Author: 201024405 구한솔 ; Date Created: 2013. 09. 24 ; Last Modifiction Date: 2013. 09. 25 INCLUDE Irvine32.inc .data prompt1 BYTE "입력받을 정수 개수:",0 prompt2 BYTE "정수 입력:",0 num DWORD 0 ;입력받는 정수 개수 array DWORD 100 dup(?) ;입력된 정수 저장 count DWORD ? ;OuterLoop 카운터를 위한 변수 .code main PROC ;prompt "입력받을 정수 개수:" mov edx, OFFSET prompt1 call WriteString call ReadInt mov num, eax ;"정수 입력" 루프 반복 mov esi, OFFSET array mov ecx, num L1: ;prompt "정수 입력" mov edx, OFFSET prompt2 call WriteString call ReadInt ;array 배열에 읽은 정수 저장 mov [esi], eax add esi, TYPE array loop L1 ;배열 값 출력 mov esi,OFFSET array mov ecx,num L2: mov eax,[esi] add esi,4 call WriteInt call Crlf loop L2 outerLoop: mov count, ecx ; 바깥루프 카운터를 임시 변수에 저장 mov edi, 0 ; set the innerLoop index mov ecx, LENGTHOF array - 1 ; 안쪽 루프 @@@ innerLoop: mov eax, array[edi] ; eax = array[edi] cmp eax, array[edi + TYPE array] ; eax값(배열값)과 다음 배열값 비교 ja tempLoop ; 원래 배열값이 더 크면 tempLoop로 이동 ; array[edi] > array[edi + 4] ; 원래 배열값보다 다음 배열값이 크면 값을 바꿈 xchg eax, array[edi + TYPE array] ; eax = array[edi + 4], array[edi] = array[edi + 4] xchg eax, array[edi] ; array[edi + 4] = array[edi] jmp tempLoop ; sorting후에 tempLoop로 이동 tempLoop: add edi, TYPE array ; innerLoop 인덱스 증가 loop innerLoop inc esi ; outerLoop 인덱스 증가 mov ecx, count ; outerLoop 카운터를 임시변수에서 불러 옴 loop outerLoop ; sort 끝 @@@ ; 배열을 내용을 출력 @@@ mov esi,OFFSET array mov ecx,num L3: mov eax,[esi] add esi,4 call WriteInt call Crlf loop L3 exit main ENDP END main 잘 못해서 친구한테 물어도 보고, 인터넷의 소스도 활용해보고 해서 만들었는데... 밑 Sort하는 부분에서 무한루프가 도는거 같네요... 도데체 왜 그런거죠?
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.
새로운 댓글이 없습니다.