2013-02-15 4 views
0

2 개의 문자열을 비교하는 조립품 수준의 언어 프로그램이 있지만 10 개의 문자열을 비교해야합니다. 이것을 어떻게 성취합니까? 내 문자열 비교 프로그램은 절차에 있습니다.조립품 수준 언어로 두 개 이상의 문자열 정렬

; segments 

data segment 
data1 db 64 ,? ,64 dup(?) 
data2 db 64 ,? ,64 dup(?) 
data3 db 64 ,? ,64 dup(?) 
data4 db 64 ,? ,64 dup(?) 
data5 db 64 ,? ,64 dup(?) 
data6 db 64 ,? ,64 dup(?) 
data7 db 64 ,? ,64 dup(?) 
data8 db 64 ,? ,64 dup(?) 
data9 db 64 ,? ,64 dup(?) 
data10 db 64 ,? ,64 dup(?) 
ends 

stack segment 
    dw 128 dup(0) 
ends 

code segment 
    main proc far 
; set segment registers: 

mov ax, data 
mov ds, ax 
move es,ax 
call input 
check data1,data2 



; gets input from user 
input proc 
    lea dx, enter 
     mov ah,09h 
     int 21h 
     call newline 

     mov ah, 0ah 
     lea dx,data1 
     int 21h 
     call newline 

     mov ah, 0ah 
     lea dx,data2 
     int 21h 
     call newline 

     mov ah, 0ah 
     lea dx,data3 
     int 21h 
     call newline 

    mov ah, 0ah 
    lea dx,data4 
    int 21h 
    call newline 

    mov ah, 0ah 
    lea dx,data5 
    int 21h 
    call newline 

    mov ah, 0ah 
    lea dx,data6 
    int 21h 
    call newline 

mov ah, 0ah 
lea dx,data7 
int 21h 
call newline 

mov ah, 0ah 
lea dx,data8 
int 21h 
call newline 

mov ah, 0ah 
lea dx,data9 
int 21h 
call newline 

mov ah, 0ah 
lea dx,data10 
int 21h 
call newline 

ret 
input endp 


newline proc 

    mov ah,02h 
    mov dl,0ah 
    int 21h 

    mov dl,0dh 
    int 21h 

ret 
newline endp 

check macro a,b 
local next,finish 

mov cx, 64 ; buffer size to save string 
mov si,a 
mov di,b 


repe cmpsw ;comparing two strings with each other 
ja next 
jmp finish 
next : 
;swapping strings 
mov cx, 64 
mov si,a 
lea di,change 
rep movsb 

mov cx,64 
mov si,b 
mov di,a 
rep movsb 

mov cx,64 
lea si,change 
mov di,b 
rep movsw 
finish: 
endm 

ends 

end main 
+0

깨우기! 오후 5시 아직 여기 없어! –

+0

버블 정렬 (예 :) 또는 게시물 오른쪽의 '관련'게시물 중 하나를 읽습니다. – KevinDTimm

답변

0

몇 가지 정렬 알고리즘이 있습니다. 예 : Quicksort. 모든 사람들이 공통적으로하는 것은 비교를 기반으로한다는 것입니다. 이미 코드를 작성 했으므로 기존 코드를 서브 루틴으로 사용하고 원하는 정렬 알고리즘 전략에 따라 각 문자열 쌍에 대해 호출해야합니다.

서브 루틴은 예를 들어, -1 반환 값을 가질 수

, 0 또는에 기초 1보다 작음, 동일 또는 보다 큼 비교 문자열 사이 관계 .

관련 문제