home *** CD-ROM | disk | FTP | other *** search
/ WDR Computer Club Digital 1998 April / CC98042.BIN / SORTASS / TEST3.ASM < prev    next >
Assembly Source File  |  1998-03-12  |  2KB  |  81 lines

  1. ;****************************************************************
  2. ;* Aufgabe: Anlegen einer Liste und lineares Sortieren        *
  3. ;*  (5000 Integer-Zahlen)                    *
  4. ;* Prog.Name:  test3.asm                    *
  5. ;****************************************************************
  6.  
  7. STACK_SEG    SEGMENT  STACK
  8.         DW 128 DUP (?)
  9. STACK_SEG    ENDS
  10.  
  11. DATEN_SEG       SEGMENT
  12. Liste        DW 30000 DUP(?)
  13. Text        DB "Fertig!$"
  14. DATEN_SEG    ENDS
  15.  
  16. CODE_SEG    SEGMENT
  17.         ASSUME CS:CODE_SEG,SS:STACK_SEG,DS:DATEN_SEG
  18. START:        MOV AX,DATEN_SEG; Initialisieren des DS
  19.         MOV DS,AX
  20. ; Anlegen einer inversen 16-Bit Zahlen-Liste
  21.         MOV BX,OFFSET LISTE
  22.         MOV AX,5000
  23. L0:        MOV [BX],AX
  24.         DEC AX
  25.         ADD BX,02    ; Adresse um 2 hochzählen
  26.         CMP BX,10000
  27.         JNE L0
  28.  
  29. ; Sortierprogramm (Linearsort)
  30.         MOV BX,0
  31. L1:        MOV SI,BX
  32.         ADD SI,2
  33.         MOV AX,[BX]
  34. L2:        CMP AX,[SI]
  35.         JBE L3
  36.         XCHG AX,[SI]
  37.         MOV [BX],AX
  38. L3:        ADD SI,02
  39.         CMP SI,10000
  40.         JNE L2
  41.         ADD BX,02
  42.         CMP BX,9998
  43.         JB  L1
  44.         mov ah,09h
  45.         mov dx,offset text
  46.         int 21h
  47.         mov ah,08H
  48.         int 21h     ; Warten auf beliebige Taste; dann weiter
  49.  
  50. ;Ausgabe der sortierten Liste auf Bildschirm
  51.         MOV BX,OFFSET LISTE
  52. L4:        MOV AX,[BX]
  53. ; Binär-BCD-Wandlung und Anzeige
  54.         PUSH BX
  55.         MOV CX,0
  56.         MOV BX,10
  57. L5:        MOV DX,0
  58.         DIV BX
  59.         PUSH DX
  60.         INC CX
  61.         CMP AX,0
  62.         JNZ L5
  63. L6:        POP DX
  64.         ADD DL,30H
  65.         MOV AH,02H
  66.         INT 21H
  67.         LOOP L6
  68.         POP BX
  69.  
  70.         MOV AH,02  ; Anzeige-Fkt.
  71.         MOV DL,20H
  72.         INT 21H    ; Ausgabe Blank (nach jeder Zahl)
  73.         ADD BX,02
  74.         CMP BX,10000
  75.         JNE L4
  76.  
  77.         MOV AH,4CH ; Rückkehr nach MSDOS
  78.         INT 21H
  79. CODE_SEG    ENDS
  80.         END START
  81.