This is a program to print out the second smallest number of 8086 architecture. If you have any doubts, please let me know.
.MODEL SMALL
.DATA
MSG DB 'ENTER THE NUMBERS: ','$'
NUM DB 20,0,20 DUP('$')
NEW DB 0AH,0DH,24H
.CODE
START:MOV AX,@DATA
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
LEA DX,NEW
MOV AH,09H
INT 21H
LEA DX,NUM
MOV AH,0AH
INT 21H
ADD DX,02H
MOV SI,DX
MOV DX,0000H
MOV AX,0000H
MOV CX,0009H
L1:MOV BX,0009H
LEA SI,NUM
MOV DX,SI
ADD DX,02H
MOV SI,DX
L2:MOV AL,[SI]
INC SI
CMP AL,[SI]
JNC CONTD
MOV DL,[SI]
MOV [SI],AL
DEC SI
MOV [SI],DL
INC SI
CONTD:DEC BX
JNZ L2
LOOP L1
DEC SI
LOOP1: MOV AL,[SI]
DEC SI
CMP AL,[SI]
JE LOOP1
MOV BL,[SI]
MOV [SI],AL
INC SI
MOV [SI],BL
LEA DX,NEW
MOV AH,09H
INT 21H
LEA DX,NUM
ADD DX,02H
MOV AH,09H
INT 21H
.EXIT
END START
.MODEL SMALL
.DATA
MSG DB 'ENTER THE NUMBERS: ','$'
NUM DB 20,0,20 DUP('$')
NEW DB 0AH,0DH,24H
.CODE
START:MOV AX,@DATA
MOV DS,AX
LEA DX,MSG
MOV AH,09H
INT 21H
LEA DX,NEW
MOV AH,09H
INT 21H
LEA DX,NUM
MOV AH,0AH
INT 21H
ADD DX,02H
MOV SI,DX
MOV DX,0000H
MOV AX,0000H
MOV CX,0009H
L1:MOV BX,0009H
LEA SI,NUM
MOV DX,SI
ADD DX,02H
MOV SI,DX
L2:MOV AL,[SI]
INC SI
CMP AL,[SI]
JNC CONTD
MOV DL,[SI]
MOV [SI],AL
DEC SI
MOV [SI],DL
INC SI
CONTD:DEC BX
JNZ L2
LOOP L1
DEC SI
LOOP1: MOV AL,[SI]
DEC SI
CMP AL,[SI]
JE LOOP1
MOV BL,[SI]
MOV [SI],AL
INC SI
MOV [SI],BL
LEA DX,NEW
MOV AH,09H
INT 21H
LEA DX,NUM
ADD DX,02H
MOV AH,09H
INT 21H
.EXIT
END START
No comments:
Post a Comment