Saturday 18 March 2017

8086 PROGRAM TO SORT 'N' NUMBERS IN ASCENDING ORDER( INPUT AND OUTPUT SPECIFICATION )

SORTING 8086 PROGRAM

AIM : 8086 PROGRAM TO SORT 'N' NUMBERS IN ASCENDING ORDER

PROGRAM :


ADDRESS LABEL MNEMONICS DESCRIPTION
1000 MOV BL,[1300] MOVE COUNT IN BL REGISTER
1004 DEC BL DECREMENT BL
1006 L1 MOV CL,BL MOVE COUNT TO CL
1008 MOV DI,1301 LOAD DI WITH MEMORY LOCATION
100C MOV SI,1302 LOAD SI WITH MEMORY LOCATION
1010 L2 MOV AL,[DI] MOVE CONTENT OF DI TO AL
1012 MOV DL,[SI] MOVE CONTENT OF SI TO DL
1014 CMP AL,DL COMPARE AL WITH DL
1016 JBE L3 JUMP TO L3 IF BELOW OR EQUAL
1018 MOV [DI],DL MOVE CONTENT OF DL TO DI
101A MOV [SI],AL MOVE CONTENT OF AL TO SI
101C L3 INC SI INCREMENT SI
101D INC DI INCREMENT DI
101F DEC CL DECREMENT CL
1020 JNZ L2 JUMP TO L2 IF NOT EQUAL TO ZERO
1022 DEC BL DECREMENT BL
1024 JNZ L1 JUMP TO L1 IF NOT EQUAL TO ZERO
1026 HLT STOP


INPUT                                          OUTPUT

[1300] : 05                                    [1300] : 00
[1301] : 00                                    [1301] : 01
[1302] : 06                                    [1302] : 03
[1303] : 01                                    [1303] : 05
[1304] : 03                                    [1304] : 06


RESULT

8086 PROGRAM TO SORT 'N' NUMBERS IN ASCENDING ORDER HAS BEEN EXECUTED SUCCESSFULLY AND OUTPUT IS VERIFIED.

8086 Program to check whether a given number is prime or not( input and output specification )

                                 PRIME NUMBER CHECKING 8086 PROGRAM

AIM : TO CHECK WHETHER A GIVEN NUMBER IS PRIME OR NOT (8086 PROGRAM)

PROGRAM :


ADDRESS LABEL MNEMONICS DESCRIPTION
1000 MOV BX,0002 MOVE 0002 INTO BX
1004 MOV MOV AX,[1300] MOVE THE CONTENT OF 1300 TO AX
1008 MOV DX,0001 MOVE 0001 INTO DX
100C CMP AX,0002 COMPARE AX WITH 2
1010 JZ L2 JUMP TO L2 IF ZERO
1012 L1 MOV DX,0000 INITIALIZE DX WITH ZERO
1016 DIV BX DIVIDE AX WITH BX
1018 CMP DX,0000 COMPARE DX WITH 0000
101C JZ L3 JUMP TO L3 IF ZERO
101E MOV AX,[1300] MOVE CONTENT OF 1300 TO AX
1022 INC BX INCREMENT BX
1023 CMP AX,BX COMPARE AX WITH BX
1025 JNZ L1 JUMP TO L1 IF NOT ZERO
1027 L2 MOV [1302],0001 MOVE 0001 TO 1302
102C L3 MOV [1302],DX MOVE DX TO 1302
1030 HLT STOP


INPUT                                                      OUTPUT

[1300] : 0004                                            [1302] : 0000
[1300] : 0005                                            [1302] : 0001


RESULT

8086 PROGRAM TO CHECK WHETHER A GIVEN NUMBER IS PRIME OR NOT HAS BEEN EXECUTED SUCCESSFULLY AND OUTPUT IS VERIFIED.


8086 Program to find the factorial of a number( input and output specification)

                                                 FACTORIAL OF A NUMBER 

AIM : To find the factorial of a number

PROGRAM :


ADDRESS LABEL MNEMONICS DESCRIPTION
1000 MOV SI,2000 MOVE 2000 INTO SI
1004 MOV BX,[SI] MOVE THE CONTENT OF SI TO BX
1006 MOV AX,01 MOVE 0001 INTO AX
100A L1 MUL BX MULTIPLY AX WITH BX/td>
100C DEC BX DECREMENT BX
100D JNZ L1 JUMP IF NON-ZERO TO LABEL1
100F MOV DI,2002 MOVE 2002 INTO DI
1013 MOV [DI],AX MOVE CONTNT OF AX INTO LOCN SPCIFED IN DI
1015 HLT STOP


INPUT :                                      OUTPUT :

[2000] : 0004                          [2002] : 0018 // 0018 is the hexadecimal value of 24

8086 Program to check whether the given number is odd or even( input and output specification)

SORTING 8086 PROGRAM

AIM : 8086 PROGRAM TO CHECK WHETHER THE GIVEN NUMBER IS ODD OR EVEN

PROGRAM :


ADDRESS LABEL MNEMONICS DESCRIPTION
1000 MOV AX,[3000] Move the content of 3000 to AX
1004 MOV BX,0002 Move 0002 into BX
1008 DIV BX Divide AX with BX
100C CMP DX,0000 Compare DX with 0000
100E JZ L1 Jump if zero
1010 MOV DX,0001 Move 0001 into DX
1014 L1 MOV [3002],DX Move content of DX to 3002
1018 HLT Stop


INPUT                                          OUTPUT

[3000] : 0005                                    [3002] : 0001                          // If the input given is odd, '1' will get stored at location 3000 else '0'



Input is given as, SW 3000
Then give the input value, 0005
Then execute the program, GO 1000  //1000 is starting address of the program.
Press  INT button on the kit.
Now the output is stored at location 3002, to view the output, SW 3002


RESULT

8086 PROGRAM TO CHECK WHETHER THE GIVEN NUMBER IS ODD OR EVEN HAS BEEN EXECUTED SUCCESSFULLY AND OUTPUT IS VERIFIED