home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
WDR Computer Club Digital 1998 April
/
CC98042.BIN
/
SORTASS
/
TEST3.ASM
< prev
next >
Wrap
Assembly Source File
|
1998-03-12
|
2KB
|
81 lines
;****************************************************************
;* Aufgabe: Anlegen einer Liste und lineares Sortieren *
;* (5000 Integer-Zahlen) *
;* Prog.Name: test3.asm *
;****************************************************************
STACK_SEG SEGMENT STACK
DW 128 DUP (?)
STACK_SEG ENDS
DATEN_SEG SEGMENT
Liste DW 30000 DUP(?)
Text DB "Fertig!$"
DATEN_SEG ENDS
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG,SS:STACK_SEG,DS:DATEN_SEG
START: MOV AX,DATEN_SEG; Initialisieren des DS
MOV DS,AX
; Anlegen einer inversen 16-Bit Zahlen-Liste
MOV BX,OFFSET LISTE
MOV AX,5000
L0: MOV [BX],AX
DEC AX
ADD BX,02 ; Adresse um 2 hochzählen
CMP BX,10000
JNE L0
; Sortierprogramm (Linearsort)
MOV BX,0
L1: MOV SI,BX
ADD SI,2
MOV AX,[BX]
L2: CMP AX,[SI]
JBE L3
XCHG AX,[SI]
MOV [BX],AX
L3: ADD SI,02
CMP SI,10000
JNE L2
ADD BX,02
CMP BX,9998
JB L1
mov ah,09h
mov dx,offset text
int 21h
mov ah,08H
int 21h ; Warten auf beliebige Taste; dann weiter
;Ausgabe der sortierten Liste auf Bildschirm
MOV BX,OFFSET LISTE
L4: MOV AX,[BX]
; Binär-BCD-Wandlung und Anzeige
PUSH BX
MOV CX,0
MOV BX,10
L5: MOV DX,0
DIV BX
PUSH DX
INC CX
CMP AX,0
JNZ L5
L6: POP DX
ADD DL,30H
MOV AH,02H
INT 21H
LOOP L6
POP BX
MOV AH,02 ; Anzeige-Fkt.
MOV DL,20H
INT 21H ; Ausgabe Blank (nach jeder Zahl)
ADD BX,02
CMP BX,10000
JNE L4
MOV AH,4CH ; Rückkehr nach MSDOS
INT 21H
CODE_SEG ENDS
END START