masm programs
DESCRIPTION
8086 / Masm ProgramsTRANSCRIPT
www.esnips.com/user/vapremaims Page 1
1) 8086/Masm Program On Fibonacci Series.
DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE MAIN PROC MOV AH,02H MOV DL,’1’ INT 21H MOV DL,’,’ INT 21H MOV DL,’1’ INT 21H MOV BL,01H MOV CH,01H MOV DL,’,’ INT 21H START1: MOV CL,BL ADD BL,CH MOV CH,CL MOV AL,BL
MOV AH,00 MOV BH,10 DIV BH MOV CL,AH MOV DL,AL MOV AH,02H ADD DL,30H INT 21H MOV DL,CL ADD DL,30H INT 21H MOV DL,CL ADD DL,30H INT 21H MOV DL,’,’ INT 21H CMP BL,50H JL START1 MOV AX,4C00H INT 21H CODE ENDS
END MAIN ***********************
www.esnips.com/user/vapremaims Page 2
2) 8086/Masm Program To Perform The Following Operations. (A) Reverse A String.
DATA SEGMENT M1 DB 10,13,'ENTER THE STRING:$' M2 DB 10,13,'REVERSE OF A STRING:$' BUFF DB 80 DB 0 DB 80 DUP(0) COUNTER1 DW 0 COUNTER2 DW 0 DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA
START:MOV AX,DATA
MOV DS,AX MOV AH,09H MOV DX,OFFSET M1 INT 21H MOV AH,0AH LEA DX,BUFF INT 21H MOV AH,09H MOV DX,OFFSET M2 INT 21H LEA BX,BUFF INC BX MOV CH,00 MOV CL,BUFF+1 MOV DI,CX
BACK:MOV DL,[BX+DI] MOV AH,02H INT 21H DEC DI JNZ BACK
EXIT:MOV AH,4CH INT 21H
CODE ENDS END START ************************* Output:- Enter the String SR Engineering College
www.esnips.com/user/vapremaims Page 3
3) 8086/Masm Program To Print Factorial Of A Number
DATA SEGMENT DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC
MOV AX,0001H MOV CX,0008H MOV DX,0000H
L1: MUL CX LOOP L1 MOV CX,00 L2: MOV DX,0000H MOV BX,0AH
DIV BX PUSH DX
INC CX CMP AX,0000H JE L3 JMP L2
L3: POP DX
MOV AH,02H ADD DX,0030H INT 21H LOOP L3
END: MOV AX,4C00H
INT 21H CODE ENDS MAIN ENDP END MAIN *********************
Output:- 40320
www.esnips.com/user/vapremaims Page 4
4) 8086/Masm Program To Print Numbers From 0-9 and 9-0 CODE SEGMENT ASSUME CS:CODE START:
MOV BL,00H MOV AX,0200H
START2: MOV DL,BL ADD DL,30H INT 21H MOV DL,’,’ INT 21H ADD BL,01H CMP BL,0AH
JL START2 SUB BL,01H
START1: MOV DL,BL ADD DL,30H INT 21H MOV DL,’,’ INT 21H SUB BL,01H CMP BL,00H JGE START1
MOV AX,4C00H INT 21H CODE ENDS
END STAR ********************** Output:-
0,1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1,0
www.esnips.com/user/vapremaims Page 5
5) 8086 MASM PROGRAM TO Read In A Binary String Through Keyboard And Display It In The Reverse Order.Also Display Its Parity.
ASSUME DS:DATA1,CS:CODE1 DATA1 SEGMENT MSG DB 0AH,0DH,'ENTER THE BINARY NUMBER$' NUMBER DB 20,0,20 DUP('$') MSG2 DB 0AH,0DH,'THE NUMBER IN REVERSED ORDER IS$',0AH,0DH ODD DB 0AH,0DH,'THE NUMBER HAS ODD PARITY$' EVENPAR DB 0AH,0DH,'THE NUMBER HAS EVEN PARITY$' DATA1 ENDS CODE1 SEGMENT START:MOV AX,DATA1 MOV DS,AX LEA DX,MSG MOV AH,09H INT 21H LEA DX,NUMBER MOV AH,0AH INT 21H MOV BX,0000H MOV CX,BX MOV CL,NUMBER+1 LEA SI,NUMBER+2 AGAIN:MOV AX,0001H AND AL,[SI] JZ SKIP INC BX SKIP:INC SI LOOP AGAIN LEA DX,MSG2 MOV AH,09H INT 21H MOV CX,0000H MOV CL,NUMBER+1 DEC SI DO: MOV DL,[SI] MOV AH,02H INT 21H DEC SI LOOP DO MOV AX,BX MOV BL,02H
www.esnips.com/user/vapremaims Page 6
DIV BL AND AH,01H JNZ ODDPAR LEA DX,EVENPAR MOV AH,09H INT 21H JMP DOWN ODDPAR: LEA DX,ODD MOV AH,09H INT 21H DOWN: MOV AH,4CH INT 21H CODE1 ENDS END START ****************
Output:-
www.esnips.com/user/vapremaims Page 7
6) 8086 /Masm Program To Find Out Whether The Given Year Is A Leap Year Or Not
ASSUME DS:DATA1,CS:CODE1 DATA1 SEGMENT MSG DB 0AH,0DH,'ENTER THE YEAR$' NUMBER DB 6,0,6 DUP('$') YS DB 0AH,0DH,'YES,IT IS A LEAP YEAR$' N DB 0AH,0DH,'NO,IT IS NOT A LEAP YEAR$' DATA1 ENDS CODE1 SEGMENT START: MOV AX,DATA1 MOV DS,AX LEA DX,MSG MOV AH,09H INT 21H LEA DX,NUMBER MOV AH,0AH INT 21H LEA BX,NUMBER+4 MOV AH,[BX] MOV AL,[BX+1] AAD MOV BL,04H DIV BL AND AH,0FFH JZ YES LEA DX,N MOV AH,09H INT 21H JMP DOWN YES:LEA DX,YS MOV AH,09H INT 21H DOWN: MOV AH,4CH INT 21H CODE1 ENDS END START **************** Output:- Enter the Year 2000
Yes, It Is A Leap Year
www.esnips.com/user/vapremaims Page 8
7) 8086 / MASM PROGRAM TO CONVERT THE Given Temperature In Centigrade(<100°C) To Fahrenheit And Kelvin And Display It (I/P And O/P As Decimal Numbers)
ASSUME DS:DATA1,CS:CODE1 DATA1 SEGMENT MSG DB 0AH,0DH,'ENTER THE TEMPERATURE IN DEGREE CELSIUS',0AH,'$' MSG1 DB 0AH,0DH,'ERROR! ENTER A TEMPERATURE LESS THAN 99 DEGREE C$' MSG2 DB 0AH,0DH,'THE TEMPERATURE IN KELVIN SCALE IS=$' MSG3 DB 0AH,0DH,'THE TEMPERATURE IN FARENHEIT SCALE IS APPROXIMATELY=$' MSG4 DB 0AH,0DH,'THE TEMPERATURE IN CELSIUS SCALE IS=$' TEMP DB 6,0,6 DUP('$') RESULT DB 20,0,20 DUP('$') DATA1 ENDS CODE1 SEG START:MOV AX,SEG DATA1 MOV DS,AX LEA DX,MSG MOV AH,09H INT 21H MOV CH,02H ASK: LEA DX,TEMP MOV AH,0AH INT 21H LEA DX,MSG4 MOV AH,09H INT 21H LEA DX,TEMP+2 MOV AH,09H INT 21H DO: LEA BX,TEMP+1 MOV CL,[BX] INC BX MOV AH,[BX] DEC CL JZ DOWN MOV AL,[BX+1] DEC CL JZ DOWN1
www.esnips.com/user/vapremaims Page 9
LEA DX,MSG1 MOV AH,09H INT 21H JMP ASK DOWN: MOV AL,AH MOV AH,00H DOWN1: AND AX,0F0FH AAD DEC CH JZ SECOND ADD AX,0111H;273 ADDITION CALL DISPLAY LEA DX,MSG2 CALL SHOW JMP DO SECOND: MOV CL,09H MUL CL MOV CL,05H DIV CL MOV AH,00H ADD AL,20H;HEX EQUIVALENT OF 32 CALL DISPLAY LEA DX,MSG3 CALL SHOW JMP OVER DISPLAY:LEA BX,RESULT+4 MOV DL,03H MOV CL,0AH AGAIN: DIV CL ADD AH,30H MOV [BX],AH DEC BX MOV AH,00H DEC DL JNZ AGAIN RET SHOW: MOV AH,09H INT 21H LEA DX,RESULT+2 MOV AH,09H INT 21H
www.esnips.com/user/vapremaims Page 10
RET OVER: MOV AH,4CH INT 21H CODE1 ENDS *************
Output:
www.esnips.com/user/vapremaims Page 11
8) 8086 / MASM PROGRAM To Display The Multiplication Table (First 10 Values) For A Number N(<10d)
ASSUME DS:DATA1,CS:CODE1 DATA1 SEGMENT MSG DB 0AH,0DH,'ENTER THE NUMBER$' NUMBER DB 2,0,2 DUP('$') DECIMAL DB '0','1','2','3','4','5','6','7','8','9' ANS DB 0AH,'0','*','0','=','0','0','$' DATA1 ENDS CODE1 SEGMENT START;MOV AX,SEG DATA1 MOV DS,AX LEA DX,MSG MOV AH,09H INT 21H MOV CX,000AH MOV DL,0AH MOV AH,02H INT 21H LEA DX,NUMBER MOV AH,0AH INT 21H LEA DX,NUMBER INC DX INC DX MOV DI,DX MOV BL,[DI] AND BL,0FH LEA DX,ANS INC DX MOV SI,DX MOV DL,[DI] MOV [SI],DL LEA DX,ANS INC DX MOV DI,DX LEA DX,DECIMAL MOV SI,DX AGAIN:LEA DX,ANS INC DX MOV DI,DX MOV AL,[SI] INC DI INC DI MOV [DI],AL MOV BH,[SI] MOV AX,0000H AND BH,0FH MOV AL,BH
www.esnips.com/user/vapremaims Page 12
MUL BL AAM ADD AX,03030H INC DI INC DI MOV [DI],AH INC DI MOV [DI],AL LEA DX,ANS MOV AH,09H INT 21H INC SI LOOP AGAIN MOV AH,4CH INT 21H CODE1 ENDS END START ***************
Output:- Enter The Number 6
6*0=00
6*1=06
6*2=12
6*3=18
6*4=32
6*5=36
6*6=36
6*7=42
6*8=48
6*9=54
www.esnips.com/user/vapremaims Page 13
9) 8086 / MASM PROGRAM To Input 9 Digits And Display The Second Biggest Number That Can Be Formed Using Those Digits
ASSUME DS:DATA1,CS:CODE1,SS:STACK1 STACK1 SEGMENT STORE1 DB 10,0,10 DUP('$') STACK1 ENDS DATA1 SEGMENT MSG DB 0AH,0DH,'ENTER THE 9 DIGIT NUMBER$' NUMBER DB 12,0,12 DUP('$') MSG1 DB 0AH,0DH,'THE REARRANGED ORDER IS=$' DATA1 ENDS STACK SEGMENT STORE DB 10,0,10 DUP('$') STACK ENDS CODE1 SEGMENT START:MOV AX,DATA1 MOV DS,AX LEA DX,MSG MOV AH,09H INT 21H LEA DX,NUMBER MOV AH,0AH INT 21H MOV CX,0008H PASS:PUSH CX MOV CX,0008H LEA DX,NUMBER+2 MOV SI,DX AGAIN:MOV AL,[SI] CMP AL,[SI+1] JNC DOWN XCHG AL,[SI+1] XCHG AL,[SI] DOWN: INC SI LOOP AGAIN POP CX LOOP PASS MOV AL,[SI] XCHG AL,[SI-1] XCHG AL,[SI] LEA DX,MSG1 MOV AH,09H INT 21H LEA DX,NUMBER+2 MOV AH,09H INT 21H MOV AH,4CH INT 21H
www.esnips.com/user/vapremaims Page 14
CODE1 ENDS END START ***************
Output:-
www.esnips.com/user/vapremaims Page 15
10) 8086 / Masm Program for Adding of Numbers
.model small
.stack 100h
.data
t dw 10
.code
mov ax,@data
mov ds,ax
mov ax,45
add ax,t
mov dl,al
mov ah,02h
int 21h
mov ah,4ch
int 21h
end
************
Output:-
7