xxxxxxxxxx
.model small
.stack 100h
.data
array db 9,6,5,4,3,2,1
count dw 7
.code
mov cx,count
dec cx ; outer loop iteration count
nextscan: ; do { // outer loop
mov bx,cx
mov si,0
nextcomp:
mov al,array[si]
mov dl,array[si+1]
cmp al,dl
jnc noswap
mov array[si],dl
mov array[si+1],al
noswap:
inc si
dec bx
jnz nextcomp
loop nextscan ; } while(--cx);
;;; this loop to display elements on the screen
mov cx,7
mov si,0
print:
Mov al,array[si]
Add al,30h
Mov ah,0eh
Int 10h
MOV AH,2
Mov DL , ' '
INT 21H
inc si
Loop print
ret
xxxxxxxxxx
.MODEL SMALL
.STACK 100H
.DATA
N DB 44H,22H,11H,55H,33H ; N is an array
LEN DW 5 ; LENGTH OF ARRAY N
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV CX,LEN ;Cx is counter for OUTERLOOP CX=5
DEC CX ; CX = 4
OUTERLOOP:
MOV SI,0 ; SI is the index of array N
MOV DX,CX ; Dx is counter for INNERLOOP
INNERLOOP:
MOV AH,N[SI] ; assign the number N[SI] into reg.AH
MOV AL,N[SI+1] ; assign the next number N[SI+1] into reg.AL
CMP AH,AL ; Compare between N[SI] and N[SI+1] <BR>
JC CARRY ; if AL > AH => Carry Flag =1 ,THEN jump to carry
MOV N[SI] , AL ; else , Do Switching bteween N[SI] and N[SI+1]
MOV N[SI+1] ,AH
CARRY:
INC SI
DEC DX
JNZ INNERLOOP
LOOP OUTERLOOP
;exit
MOV AH,4CH ;service number
INT 21H ; interrupt
MAIN ENDP
END