You are on page 1of 12

An Assembly program to read in two decimal inputs and print out the smaller of

the two, in decimal

DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO COMPARE : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO COMPARE : $"
MSG3 DB 10,13,"SMALLER NUMBER IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV NUM1,AL
LEA DX,MSG2
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV NUM2,AL
LEA DX,MSG3
MOV AH,9
INT 21H
MOV AL,NUM1
CMP AL,NUM2
JG SECOND
FIRST: MOV AH,2
MOV DL,NUM1
INT 21H
JMP EXIT
SECOND: MOV AH,2
MOV DL,NUM2
INT 21H
EXIT: MOV AH,4CH
INT 21H
ENDS
END START
Assembly program to read in two decimal inputs and print out their sum, in
decimal
DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $"
MSG3 DB 10,13,"RESULT OF ADDITION IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX

LEA DX,MSG1
MOV AH,9
INT 21H

MOV AH,1
INT 21H
SUB AL,30H
MOV NUM1,AL

LEA DX,MSG2
MOV AH,9
INT 21H

MOV AH,1
INT 21H
SUB AL,30H
MOV NUM2,AL

ADD AL,NUM1

MOV RESULT,AL

MOV AH,0
AAA

ADD AH,30H
ADD AL,30H
MOV BX,AX

LEA DX,MSG3
MOV AH,9
INT 21H

MOV AH,2
MOV DL,BH
INT 21H

MOV AH,2
MOV DL,BL
INT 21H

MOV AH,4CH
INT 21H
ENDS
END START

Assembly program to convert Centigrade (Celsius) to Fahrenheit temperature


measuring scales

DATA SEGMENT
T DB ?
RES DB 10 DUP ('$')
MSG1 DB "ENTER TEMPERATURE IN CELSIUS (ONLY IN 2 DIGITS) : $"
MSG2 DB 10,13,"CONVERTED IS FAHRENHEIT (TEMPERATURE) : $"

DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX

LEA DX,MSG1
MOV AH,9
INT 21H

MOV AH,1
INT 21H

SUB AL,30H
MOV AH,0
MOV BL,10
MUL BL
MOV BL,AL

MOV AH,1
INT 21H

SUB AL,30H
MOV AH,0
ADD AL,BL
MOV T,AL

MOV DL,9
MUL DL

MOV BL,5
DIV BL
MOV AH,0

ADD AL,32

LEA SI,RES
CALL HEX2DEC

LEA DX,MSG2
MOV AH,9
INT 21H

LEA DX,RES
MOV AH,9
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
HEX2DEC PROC NEAR
MOV CX,0
MOV BX,10

LOOP1: MOV DX,0


DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,9
JG LOOP1

ADD AL,30H
MOV [SI],AL

LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2DEC ENDP

END START

Assembly program to read two decimal numbers, then multiply them together
and finally print out the result (in decimal )

DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
RESULT DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO MULTIPLY : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO MULTIPLY : $"
MSG3 DB 10,13,"RESULT OF MULTIPLICATION IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX

LEA DX,MSG1
MOV AH,9
INT 21H

MOV AH,1
INT 21H
SUB AL,30H
MOV NUM1,AL

LEA DX,MSG2
MOV AH,9
INT 21H

MOV AH,1
INT 21H
SUB AL,30H
MOV NUM2,AL

MUL NUM1

MOV RESULT,AL
AAM

ADD AH,30H
ADD AL,30H

MOV BX,AX

LEA DX,MSG3
MOV AH,9
INT 21H

MOV AH,2
MOV DL,BH
INT 21H

MOV AH,2
MOV DL,BL
INT 21H

MOV AH,4CH
INT 21H
ENDS
END START
Assembly program to convert ASCII code to its BCD equivalent

DATA SEGMENT
MESSAGE DB "ENTER CHARACTER :$"
NUM DB ?
BCD DB ?
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX

LEA DX,MESSAGE
MOV AH,9
INT 21H

MOV AH,1
INT 21H
MOV NUM,AL

SUB AL,30H
MOV BCD,AL

MOV AH,4CH
INT 21H
ENDS
END START

Assembly program to read in two decimal inputs and print out the smaller of the
two, in decimal

DATA SEGMENT
NUM1 DB ?
NUM2 DB ?
MSG1 DB 10,13,"ENTER FIRST NUMBER TO COMPARE : $"
MSG2 DB 10,13,"ENTER SECOND NUMBER TO COMPARE : $"
MSG3 DB 10,13,"SMALLER NUMBER IS : $"
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX

LEA DX,MSG1
MOV AH,9
INT 21H

MOV AH,1
INT 21H
MOV NUM1,AL

LEA DX,MSG2
MOV AH,9
INT 21H

MOV AH,1
INT 21H
MOV NUM2,AL

LEA DX,MSG3
MOV AH,9
INT 21H

MOV AL,NUM1

CMP AL,NUM2
JG SECOND

FIRST: MOV AH,2


MOV DL,NUM1
INT 21H
JMP EXIT

SECOND: MOV AH,2


MOV DL,NUM2
INT 21H

EXIT: MOV AH,4CH


INT 21H
ENDS
END START
Assembly program to calculate the average of three given numbers stored in
memory

DATA SEGMENT
NUM1 DB 5
NUM2 DB 9
NUM3 DB 7
AVG DB ?
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX

MOV AL,NUM1
ADD AL,NUM2
ADD AL,NUM3

MOV AH,0

MOV DL,3
DIV DL

MOV AVG,AL

MOV AH,4CH
INT 21H
ENDS
END START

Assembly program to Evaluate sphere volume if radius is given

DATA SEGMENT
R DB ?
RES DB 10 DUP ('$')
MSG1 DB "ENTER RADIUS : $"
MSG2 DB 10,13,"VOLUME : $"
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9
INT 21H

MOV AH,1
INT 21H

SUB AL,30H
MOV R,AL
MOV AH,0

MUL R
MUL R

MOV DL,88
MUL DL

MOV DX,0

MOV BX,21
DIV BX

LEA SI,RES
CALL HEX2DEC

LEA DX,MSG2
MOV AH,9
INT 21H

LEA DX,RES
MOV AH,9
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
HEX2DEC PROC NEAR
MOV CX,0
MOV BX,10

LOOP1: MOV DX,0


DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,9
JG LOOP1

ADD AL,30H
MOV [SI],AL

LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2DEC ENDP

END START

Assembly program to find the sum of two BCD numbers stored in memory

DATA SEGMENT
NUM1 DB 05
NUM2 DB 06
RESULT DB ?
ENDS

CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX

MOV AL,NUM1
ADD AL,NUM2

MOV RESULT,AL

MOV AH,0
AAA

MOV AH,4CH
INT 21H
ENDS
An Assembly program to exchange two memory variables using XCHG
instruction

DATA SEGMENT
NUM1 DB 9H
NUM2 DB 7H
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX

MOV AL,NUM1
MOV BL,NUM2

XCHG AL,NUM2
XCHG BL,NUM1

MOV AH,4CH
INT 21H
ENDS
END START

You might also like