You are on page 1of 6

5.

Programs on Subroutines

a) W. A. L. P. to find the factorial of a given number.


b) W. A. L. P. to find N​CR​ value for the given n and r values.
c) W. A. L. P to convert BCD to binary number.

AIM: To write an Assembly Language Program (​ALP​) for finding factorial of


a given number using Sub – Routines.

APPARATUS: 1. Personal computer

2. TASM Software

(1) PROGRAM:

DATA SEGMENT

NUM DW 0005H

RES DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

XOR AX,AX

MOV AX,0001H

MOV BX,NUM

CMP BX,0001H
JZ L1

CALL FACT

L1: MOV RES,AX

MOV RES+2,DX

INT 21H

FACT PROC

CMP BX,0001H

JZ L2

PUSH BX

DEC BX

CALL FACT

POP BX

MUL BX

RET

L2: MOV AX,0001H

RET

FACT ENDP

CODE ENDS

END START

RESULT: AX = 0078H
(2) NCR

DATA SEGMENT

N DB 0AH

R DB 06H

RES DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AL,N

MOV BL,R

MOV RES,00H

CALL NCR

INT 21H

NCR PROC NEAR

CMP BL,00H

JE L1

CMP BL,AL

JE L1

CMP BL,01H
JE L2

DEC AL

CMP BL,AL

JE L3

PUSH AX

PUSH BX

CALL NCR

POP BX

POP AX

DEC BL

PUSH AX

PUSH BX

CALL NCR

POP BX

POP AX

RET

L1: MOV RES,01H

RET

L3: INC AL

L2: ADD RES,AL

RET

NCR ENDP
CODE ENDS

END START

(3) BCD – HEXA

DATA EGMENT

BCD DB 10

HEX DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV AL,BCD

MOV BL,AL

AND BL,0FH

SHR AL,04H

MOV DL,0AH

MUL DL

ADD AL,BL

MOV HEX,AL

INT 21H
CODE ENDS

END START

You might also like