0% found this document useful (0 votes)
9 views39 pages

8086 Record (Printing Part)

The document contains multiple assembly language source codes for various mathematical operations and conversions, including evaluating expressions, calculating sums, converting temperature, and changing character cases. Each program is structured with a data segment for messages and variables, and a code segment for the logic to perform the specified tasks. The programs utilize DOS interrupts for input and output operations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views39 pages

8086 Record (Printing Part)

The document contains multiple assembly language source codes for various mathematical operations and conversions, including evaluating expressions, calculating sums, converting temperature, and changing character cases. Each program is structured with a data segment for messages and variables, and a code segment for the logic to perform the specified tasks. The programs utilize DOS interrupts for input and output operations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 39

SOURCE CODE:

TITLE** TO EVALUATE THE EXPRESSION A+2B+2C+1 **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

MSD1 DB CR,LF,'RESULT','$'

MSD2 DB CR,LF,'~~~~~~~~~~~~~~~~~~~~~~~~~~','$'

MSG1 DB CR,LF,'ENTER THE VALUE FOR A:','$'

MSG2 DB CR,LF,'ENTER THE VALUE FOR B:','$'

MSG3 DB CR,LF,'ENTER THE VALUE FOR C:','$'

MSG4 DB CR,LF,'THE RESULT OF THE EXPRESSION A+2B+2C+1 IS:','$'

VAR1 DB 6 DUP(?) ;FOR A

VAR2 DB 6 DUP(?) ;FOR B

VAR3 DB 6 DUP(?) ;FOR C

RESULT DB 6 DUP(?),CR,LF,'$' ;FOR THE RESULT OF THE EXPRESSION

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,00

MOV AX,SEG DATA ;TO LOAD DS REGISTER WITH ITS ADDRESS

MOV DS,AX

OUTPUT MSD1

OUTPUT MSD2

OUTPUT MSG1

INPUTS VAR1,6

ATOI VAR1 ;INTEGER VALUE OF A IS STORED IN AX

MOV BX,AX ;AX REGISTER VALUE IS TRANSFERRED TO BX

OUTPUT MSG2

INPUTS VAR2,6

ATOI VAR2 ;INTEGER VALUE OF B IS STORED IN AX

ADD AX,AX ;VALUE 2B IS STORED IN AX


ADD BX,AX ;VALUE {A+2B} IS STORED IN BX

OUTPUT MSG3

INPUTS VAR3,6

ATOI VAR3 ;INTEGER VALUE OF C IS STORED IN AX

ADD AX,AX ;VALUE 2C IS STORED IN AX

ADD BX,AX ;VALUE {A+2B+2C} IS STORED IN BX

INC BX ;VALUE {A+2B+2C+1} IS STORED IN BX

OUTPUT MSG4

ITOA RESULT,BX

OUTPUT RESULT

OUTPUT MSD2

QUIT:

MOV AL,00

MOV AH,4CH ;COME OUT TO DOS USING

INT 21H ;INT 21H

CODE ENDS

END START
OUTPUT:
SOURCE CODE:

TITLE** PROGRAM TO FIND SUM OF FIRST FIVE NUMBERS **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

MSD1 DB CR,LF,'RESULT','$'

MSD2 DB CR,LF,'~~~~~~~~~~~~~~~~~~~~~~~~~~','$'

MSG1 DB CR,LF,'THE SUM OF {1+2+3+4+5} IS:','$'

SUM DB CR,LF,CR,LF,6 DUP(?),'$' ;FOR SUM

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,00

MOV AX,SEG DATA ;TO LOAD DS REGISTER WITH ITS ADDRESS

MOV DS,AX

PROCESS:

OUTPUT MSD1

OUTPUT MSD2

MOV BX,01 ;TO STORE {01} TO BX

MOV AX,BX ;CONTENTS OF BX US COPIED TO AX

INC AX ;NOW {AX}=1+1=2

ADD BX,AX ;NOW {BX}=AX+BX=2+1=3

INC AX ;NOW {AX}=2+1=3

ADD BX,AX ;NOW {BX}=AX+BX=3+3=6

INC AX ;NOW {AX}=3+1=4

ADD BX,AX ;NOW {BX}=AX+BX=4+6=10

INC AX ;NOW {AX}=4+1=5

ADD BX,AX ;NOW {BX}=AX+BX=10+5=15

OUTPUT MSG1
ITOA SUM,BX

OUTPUT SUM

OUTPUT MSD2

QUIT:

MOV AL,00

MOV AH,4CH ;COME OUT TO DOS USING

INT 21H ;INT 21H

CODE ENDS

END START

OUTPUT:
SOURCE CODE:

TITLE** TO FIND THE SUM OF N NUMBERS **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

MS1 DB CR,LF,'ENTER THE NTH NUMBER:','$'

MS2 DB CR,LF,'THE SUM OF N NUMBER IS:','$'

MD1 DB CR,LF,'RESULT','$'

MD2 DB CR,LF,'~~~~~~~~~~~~~~~~~~~~~~~~~~','$'

VAR DB 5 DUP(?) ;FOR THE VALUE OF N

SUM DB 5 DUP(?),CR,LF,'$' ;FOR THE RESULT

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,00

MOV AX,SEG DATA ;TO LOAD DS REGISTER WITH ITS ADDRESS

MOV DS,AX

PROCESS:

OUTPUT MD1

OUTPUT MD2

OUTPUT MS1

INPUTS VAR,5

ATOI VAR

MOV BX,AX

INC AX

MUL BX

MOV BX,02

DIV BX

OUTPUT MS2
ITOA SUM,AX

OUTPUT SUM

OUTPUT MD2

QUIT:

MOV AL,00

MOV AH,4CH ;COME OUT TO DOS USING

INT 21H ;INT 21H

CODE ENDS

END START

OUTPUT:
SOURCE CODE:

TITLE** CALCULATION OF SIMPLE INTEREST **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

MSD1 DB CR,LF,'RESULT','$'

MSD2 DB CR,LF,'~~~~~~~~~~~~~~~~~~~~~~~~~~','$'

MSG1 DB CR,LF,'ENTER THE PRINCIPAL(P) AMOUNT:RS','$'

MSG2 DB CR,LF,'ENTER THE NUMBER OF YEARS(N):','$'

MSG3 DB CR,LF,'ENTER THE RATE OF INTEREST(R):','$'

MSG4 DB CR,LF,'THE SIMPLE INTEREST IS:RS','$'

VAR1 DB 6 DUP(?) ;FOR PRINCIPAL AMOUNT

VAR2 DB 4 DUP(?) ;FOR NUMBER OF YEARS

VAR3 DB 4 DUP(?) ;FOR RATE OF INTEREST

SIT DB 7 DUP(?),CR,LF,'$' ;FOR SIMPLE INTEREST

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,00

MOV AX,SEG DATA ;TO LOAD DS REGISTER WITH ITS ADDRESS

MOV DS,AX

PROCESS:

OUTPUT MSD1

OUTPUT MSD2

OUTPUT MSG1

INPUTS VAR1,6

ATOI VAR1 ;AX<=INTEGER VALU OF P

MOV BX,AX ;BX<=P

OUTPUT MSG2

INPUTS VAR2,6

ATOI VAR2 ;AX<=INTEGER VALU OF N


IMUL BX ;AX<=P*N

MOV BX,AX ;BX<=P*N

OUTPUT MSG3

INPUTS VAR3,4

ATOI VAR3 ;AX<=INTEGER VALU OF R

IMUL BX ;AX<=P*N*R

MOV BX,100

IDIV BX

OUTPUT MSG4

ITOA SIT,AX

OUTPUT SIT

OUTPUT MSD2

QUIT:

MOV AL,00

MOV AH,4CH ;COME BACK TO DOS USING

INT 21H ;INT 21H

CODE ENDS

END START

OUTPUT:
SOURCE CODE:
TITLE** TO PRINT ASCII CHARACTERS **

CODESG SEGMENT

ASSUME CS:CODESG,SS:CODESG,DS:CODESG,ES:CODESG

ORG 100H

START:

MOV DL,33 ;[DL] IS THE STARTING NUMBER OF THE PRINTABLE ASCII CHARACTER

MOV CX,221 ;[CX] IS USED TO PRINT 221 ASCII CHARACTERS

PRINT:

MOV AH,02 ;PRINTING PART USING DOS INT 21H

INT 21H

INC DL ;INCREMENT [DL] REGISTER

LOOP PRINT

QUIT:

MOV AL,00

MOV AH,4CH ;COME OUT TO DOS USING

INT 21H ;INT 21H

CODESG ENDS

END START

OUTPUT:
SOURCE CODE:
TITLE** TO CONVERT UPPER CASE TO LOWER CASE **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

PRINT1 DB CR,LF,'ENTER THE STRING IN UPPER CASE:','$'

PRINT2 DB CR,LF,'THE ENTERED STRING IN LOWER CASE IS:','$'

DESIG1 DB CR,LF,'~~~~~~~~~~~~~~~~~~~~~~~~~~','$'

DESIG2 DB CR,LF,'RESULT','$'

NAME1 DB 25 DUP(?),'$'

NAME2 DB 25 DUP(?),'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

START:

MOV AX,00

MOV AX,SEG DATA ;LOAD DATA SEGMENT NUMBER

MOV DS,AX ;INPUT NUMBERS INTO ARRAY

MOV ES,AX

MAIN:

OUTPUT DESIG1

OUTPUT DESIG2

OUTPUT DESIG1

OUTPUT PRINT1

INPUTS NAME1,25

LEA SI,NAME1 ;LOAD SI WITH NAME1

LEA DI,NAME2 ;LOAD DI WITH NAME2

L4:

MOV AL,[SI] ;AL <- {SI}

CMP AL,65 ;COMPARE [AL] WITH 65

JGE L1

JMP L3
L1:

CMP AL,90 ;COMPARE [AL] WITH 90

JLE L2

JMP L3

L2:

ADD AL,32 ;AL <- AL+32

L3:

MOV [DI],AL

INC SI ;INCREMENT [SI]

INC DI ;INCREMENT [DI]

LOOP L4

PRINT:

OUTPUT PRINT2 ;PRINT THE GIVEN STRING

OUTPUT NAME2 ;IN LOWER CASE

OUTPUT DESIG1

QUIT:

MOV AL,00

MOV AH,4CH ;COME OUT TO DOS USING

INT 21H ;INT 21H

CODE ENDS

END START

OUTPUT:
SOURCE CODE:
TITLE** TO CONVERT CENTIGRADE INTO FAHRENHEIT SCALE **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

MD1 DB CR,LF,'RESULT','$'

MD2 DB CR,LF,'~~~~~~~~~~~~~~~~~~~~~~~~~~','$'

MS1 DB CR,LF,'ENTER THE VALUE OF TEMPERATURE IN CENTIGRADE:','$'

MS2 DB CR,LF,'THE FAHRENHEIT EQUIVALENT IS:','$'

VAR1 DB 6 DUP(?) ;FOR THE VALUE OF TEMPERATURE IN CELCIUS

RESULT DB 6 DUP(?),CR,LF,'$' ;FOR RESULT

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,00

MOV AX,SEG DATA

MOV DS,AX ;TO LOAD DS REGISTER WITH ITS ADDRESS

PROCESS:

OUTPUT MD1

OUTPUT MD2

OUTPUT MS1

INPUTS VAR1,6

ATOI VAR1 ;INTEGER VALUE OF C IS STORED

MOV BX,AX ;CONTENT OF {AX} IS STORED IN BX

MOV AX,09 ;THE DATA 09 IS STORED IN AX

MUL BX ;NOW AX CONTAINS THE VALUE C*9

MOV BX,05 ;THE DATA 05 IS STORED

DIV BX ;THIS GIVES (C*9)/5 AH-REMAINDER,AL-QUOTIENT

MOV BL,AL

MOV AL,20H ;20H IS STORED IN AL

ADD BL,AL ;BX-(C*9)/5+32


MOV BH,00

OUTPUT MS2

ITOA RESULT,BX

OUTPUT RESULT

OUTPUT MD2

QUIT:

MOV AL,00

MOV AH,4CH ;COME OUT TO DOS USING

INT 21H ;INT 21H

CODE ENDS

END START

OUTPUT:
SOURCE CODE:

TITLE** TO CALCULATE SUM AND AVERAGE OF N NUMBERS **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

DES1 DB CR,LF,'~~~~~~~~~~~~~~~~~~~~~~~~~~','$'

DES2 DB CR,LF,'RESULT','$'

MSG1 DB CR,LF,'ENTER MORE THAN ONE NUMBER:','$'

MSG2 DB CR,LF,'ENTER THE TOTAL NUMBER:','$' ;FOR THE TOTAL NUMBER

MSG3 DB CR,LF,'ENTER THE NUMBER:','$' ;FOR THE NUMBER

MSG4 DB CR,LF,'THE SUM IS:','$' ;FOR THE SUM

MSG5 DB CR,LF,'THE AVERAGE IS:','$' ;FOR THE AVERAGE

VAL DB 5 DUP(?) ;FOR THE TOTAL NUMBER

NUM DB 5 DUP(?) ;FOR THE NUMBER

SUM DB 5 DUP(?),CR,LF,'$' ;FOR THE SUM

AVE DB 5 DUP(?),CR,LF,'$' ;FOR THR AVERAGE

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,00

MOV AX,SEG DATA ;TO LOAD DS REGISTER WITH ITS ADDRESS

MOV DS,AX

MAIN:

OUTPUT DES1

OUTPUT DES2

OUTPUT DES1

OUTPUT MSG1

OUTPUT DES1

OUTPUT MSG2

INPUTS VAL,5
ATOI VAL ;AX <- TOTAL NUMBER

MOV CX,AX ;CX CONTAINS {AX}

MOV DX,AX ;DX ALSO CONTAINS {AX}

PUSH DX ;PUSH THE DX INTO STACK

MOV BX,00

TOP:

PUSH CX

OUTPUT MSG3

INPUTS NUM,5

ATOI NUM

ADD BX,AX

POP CX

LOOP TOP

OUTPUT DES1

OUTPUT MSG4

ITOA SUM,BX

OUTPUT SUM

MOV AX,BX

POP DX

MOV BX,DX

CWD

DIV BX

OUTPUT MSG5

ITOA AVE,AX

OUTPUT AVE

OUTPUT DES1

QUIT:

MOV AL,00

MOV AH,4CH

INT 21H ;COME OUT TO DOS USING INT 21H

CODE ENDS

END START
OUTPUT:
SOURCE CODE:

TITLE** TO SEARCH A NUMBER IN AN ARRAY **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

ARRAY EQU 100H

DATA SEGMENT

MS1 DB CR,LF,'HOW MANY TIMES DO YOU WANT TO INPUT:','$'

MS2 DB CR,LF,'ENTER THE NUMBER:','$'

MS3 DB CR,LF,'ENTER THE SEARCH NUMBER:','$'

MS4 DB CR,LF,' THE GIVEN NUMBER APPEARS:','$'

MS5 DB 'TIMES IN AN ARRAY','$'

DS1 DB CR,LF,'~~~~~~~~~~~~~~~~~~~~~~~~~~','$'

DS2 DB CR,LF,'........................','$'

VALUE DB 10 DUP(?) ;FOR THE TOTAL NUMBER

NUMBER DB 10 DUP(?) ;FOR THE INPUT NUMBER

STARRAY DW ARRAY DUP(?) ;FOR THE CARRY

SEARCH DW 10 DUP(?) ;FOR THE SEARCH NUMBER

TEMP DW 10 DUP(?)

COUNT DW 3 DUP(?),CR,LF,'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,00

MOV AX,SEG DATA ;LOAD DATA SEGMENT NUMBER

MOV DS,AX ;INPUT NUMBERS INTO ARRAY

MAIN:

OUTPUT DS1

OUTPUT MS1

INPUTS VALUE,10

ATOI VALUE ;AX <- TOTAL NUMBER

MOV CX,AX
MOV TEMP,AX

LEA BX,STARRAY

TASK:

PUSH CX ;PUSH CS INTO STACK

OUTPUT MS2

INPUTS NUMBER,10

ATOI NUMBER

MOV [BX],AX ;MOVE THE AX TO BX

ADD BX,02

POP CX ;GET THE CX FROM STACK

LOOP TASK

LEA BX,STARRAY

OUTPUT DS2

OUTPUT MS3

INPUTS SEARCH,10

ATOI SEARCH ;AX <- SEARCH NUMBER

OUTPUT DS2

MOV CX,00

TOP:

CMP [BX],AX ;COMPARE BX WITH AX

JE JOB

RARE:

ADD BX,02

DEC TEMP ;DECREMENT TEMP

CMP TEMP,00

JE PROG

JMP TOP

CMP CX,00 ;COMPARE CX WITH DATA 00

JOB:

INC CX

JMP RARE

PROG:

OUTPUT MS4

ITOA COUNT,CX
OUTPUT COUNT

OUTPUT MS5

OUTPUT DS1

QUIT:

MOV AL,00

MOV AH,4CH

INT 21H ;COME BACK TOI DOS USING INT 21H

CODE ENDS

END START

OUTPUT:
SOURCE CODE:

TITLE** TO SEARCH A WORD IN A GIVEN STRING **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

MAT1 DB CR,LF,'ENTER ANY STRING:','$'

MAT2 DB CR,LF,'ENTER SEARCH WORD:','$'

YES DB CR,LF,'THE GIVEN SEARCH WORD IS PRESENT','$'

NO DB CR,LF,'THE GIVEN SEARCH WORD IS NOT PRESENT','$'

DES1 DB CR,LF,'~~~~~~~~~~~~~~~~~~~~~~~~~~','$'

STR DB 80 DUP(?)

SSTR DB 10 DUP(' ')

STRL DW ?

SSTL DW ?

LAST DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

START:

MOV AX,00

MOV AX,SEG DATA ;LOAD DATA SEGMENT NUMBER

MOV DS,AX ;INPUT NUMBERS INTO ARRAY

MOV ES,AX

OUTPUT DES1

OUTPUT MAT1

INPUTS STR,80 ;GET THE INPUT STIRNG

MOV STRL,CX ;CX-LENGTH OF THE GIVEN STRING

OUTPUT MAT2

INPUTS SSTR,10 ;GET THE SEARCH STRING

MOV SSTL ,CX

MOV AX,STRL
SUB AX,SSTL

INC AX

MOV LAST,AX

MOV AX,01

WHILE:

CMP AX,LAST

JG EWHILE

LEA SI,STR ;LOAD SI WITH IP STRING

ADD SI,AX

DEC SI

LEA DI,SSTR ;LOAD DI WITH SEARCH WORD

MOV CX,SSTL

REP CMPSB ;REPEAT THE COMPARISON

JZ APPEAR

INC AX

JMP WHILE

EWHILE:

OUTPUT DES1

OUTPUT NO

OUTPUT DES1

JMP QUIT

APPEAR:

OUTPUT DES1

OUTPUT YES

OUTPUT DES1

QUIT:

MOV AL,00

MOV AH,4CH

INT 21H ;COME BACK TO DOS USING INT 21H

CODE ENDS

END START
OUTPUT:
SOURCE CODE:

TITLE** TO PRINT A STRING IN REVERSE ORDER **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

MSG1 DB CR,LF,'PLEASE ENTER ANY KIND OF INPUT STRING:','$'

MSG2 DB CR,LF,'THE INPUT STRING IN THE REVERSE ORDER IS:','$'

DES1 DB CR,LF,' ','$'

PRINT1 DB 25 DUP(' ') ;FOR INPUT STRING

PRINT2 DB 25 DUP(' '),CR,LF,'$' ;FOR REVERSE STRING

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA

START:

MOV AX,00

MOV AX,SEG DATA ;LOAD DATA SEGMENT NUMBER

MOV DS,AX ;INPUT NUMBERS INTO ARRAY

MOV ES,AX

OUTPUT DES1

OUTPUT MSG1

INPUTS PRINT1,25 ;GET THE INPUT STRING

LEA SI,PRINT1

ADD SI,CX

DEC SI

LEA DI,PRINT2 ;LOAD DI WITH REVERSE STRING

MAIN:

MOV AL,[SI]

MOV [DI],AL

INC DI

DEC SI

LOOP MAIN

OUTPUT MSG2
OUTPUT PRINT2

OUTPUT DES1 ;PRINT THE REVERSE STRING

QUIT:

MOV AL,00

MOV AH,4CH ;COME BACK TO DOS USING INT 21H

INT 21H

CODE ENDS

END START

OUTPUT:
SOURCE CODE:

TITLE** PROGRAM TO CONVERT LOWERCASE TO UPPERCASE USING XLAT **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

STACK SEGMENT

DW 100 DUP(?)

STACK ENDS

DATA SEGMENT

MSD2 DB CR,LF,' ','$'

IPSTR DB 'this is MY #@; sTrI00ng!','$'

OPSTR DB 25 DUP(' '),CR,LF,'$'

LABEL1 DB 'ORIGINAL STRING: ','$'

LABEL2 DB 'CONVERTED STRING: ','$'

DES1 DB ' ','$'

CRLF DB CR,LF,'$'

TABLE DB 48 DUP(' '),'0123456789',7 DUP(' ')

DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',6 DUP(' ')

DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',133 DUP(' '),'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK

START:

MOV AX,00

MOV AX,SEG DATA ;LOAD DATA SEGMENT NUMBER

MOV DS,AX

MOV ES,AX

OUTPUT MSD2

OUTPUT DES1

OUTPUT CRLF

OUTPUT LABEL1

OUTPUT IPSTR ;DISPLAY INPUT STRING


OUTPUT CRLF

OUTPUT CRLF

OUTPUT LABEL2

LEA BX,TABLE ;OFFSET OF TRANSLATION TABLE

LEA SI,IPSTR

LEA DI,OPSTR

MOV CX,23

FOR1:

LODSB ;COPY NEXT CHARACTER TO AL

XLAT ;TRANSLATE THE CHARACTER

STOSB ;COPY CHARACTER BACK TO STRING

LOOP FOR1

INC DI

MOV AL,'$'

MOV [DI],AL

OUTPUT OPSTR

OUTPUT CRLF

OUTPUT DES1

QUIT:

MOV AL,00

MOV AH,4CH

INT 21H

CODE ENDS

END START
OUTPUT:
SOURCE CODE:

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

; SUM AND AVERAGE USING PROCEDURES

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

MAXNBRS EQU 100 ;SIZE OF NUMBER OF ARRAY

STACK SEGMENT STACK

DW 100H DUP (?)

STACK ENDS

DATA SEGMENT

PROMPT1 DB CR,LF,'ENTER UP TO 100 NUMBERS ONE AT A TIME','$'

DB CR,LF,'USE ANY NEGATIVE NUMBER TO TERMINATE INPUT','$'

PROMPT DB CR,LF, 'NUMBER?','$'

NUMBER DB 8 DUP (?),'$'

MM DB 8 DUP (?),'$'

SUMARRAY DW MAXNBRS DUP (?)

TOTELTS DW ?

SUM DB CR,LF,LF,'THE SUM IS :','$'

AVGLBL DB CR,LF,LF,'THE AVERAGE IS :','$'

OUTVALUE DB 6 DUP (?),CR,LF,'$'

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

JUPI PROC NEAR

MOV AX,00 ;SUM=0

LEA BX,SUMARRAY ;GET ADDRESS OF NUMBER ARRAY

MOV CX,TOTELTS ;COUNT:=TOTELTS

MOV DX,00

FOR1:

ADD AX,[BX]

MOV DX,AX
ITOA MM,DX

ADD BX,02

LOOP FOR1 ;REPEAT TOTELTS TIME

MOV DX,AX

ITOA MM,DX

OUTPUT SUM

OUTPUT MM

CWD ;EXTEND SUM TO DOUBLE WORD

DIV TOTELTS ;CALCULATE AVERAGE

ITOA OUTVALUE,AX ;CONVERT AVERAGE TO ASCII

OUTPUT AVGLBL ; PRINT LABEL AND AVERAGE

OUTPUT OUTVALUE ;PRINT LABEL AND SUM

RET

JUPI ENDP

START:

MOV AX, SEG DATA ;LOAD DATA SEGMENT NUMBER

MOV DS,AX ;INPUT NUMBERS INTO ARRAY

OUTPUT PROMPT1 ;DISPLAY PROMPTS

MOV TOTELTS,0 ;TOTELTS=0

LEA BX,SUMARRAY ;GET ADDRESS OF NUMBER ARRAY

WHILE:

OUTPUT PROMPT ;PROMPT FOR NUMBER

INPUTS NUMBER,8 ;GET NUMBER

ATOI NUMBER ;CONVERT TO INTEGER

JNG ENDWHILE ;EXIT IF NOT POSITIVE

MOV [BX],AX ;STORE NUMBER IN ARRAY

INC TOTELTS ;ADD 1 TO TOTELTS

ADD BX,02 ;GET ADDRESS OF NEXT WORD OF


ARRAY

JMP WHILE ;REPEAT

ENDWHILE:

CALL JUPI

QUIT:

MOV AL,00
MOV AH,4CH

INT 21H ;COME BACK TO DOS USING INT 21H

CODE ENDS

END START

OUTPUT:
SOURCE CODE:

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

; INT THE GIVEN STRING IN THE REVERSE BLINKING VIDEO

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

MSG1 DB CR,LF,'ENTER ANY INPUT STRING:','$'

NAME1 DB 100 DUP(' '),'$' ; FOR THE INPUT

COUNT DB 10 DUP(?) ;FOR COUNT

COLUMN DB(?) ;FOR SPECIFYING THE COLUMN

ROW DB(?) ;FOR SPECIFYING THE ROW

STRLEN DW(?) ;FOR LENGTH OF THE STRING

DUMMY DB CR,LF,'$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS: DATA

START:

MOV AX,00

MOV AX,SEG DATA ;LOAD DATA SEGMENT NUMBER

MOV DS,AX ;INPUT NUMBERS INTO ARRAY

MOV ES,AX

PROGRAM:

CALL CLEAR ;CALL THE PROCEDURE TO CLEAR THE SCREEN

MOV DL,20H

MOV DH,10H

CALL SETCUR

OUTPUT MSG1

INPUTS NAME1,10 ;GET THE NAME

MOV STRLEN,AX

MOV AL,40
MOV AL,CL

LEA SI,NAME1 ;MOVE EFFECTIVE ADDRESS OF NAME1 TO SI

MOV STRLEN,CX ;MOVE [CX] TO THE VARIABLE STRLEN

STOP:

MOV BX,00F0H

CALL SETCUR

CALL DISPLAY

INC SI

INC DL

DEC STRLEN ;DECREMENT STRLEN

CMP STRLEN,00

JNZ STOP

JMP QUIT

CLEAR PROC NEAR

MOV AX,0600H

MOV BH,07

MOV CX,0000

MOV DX,184FH

INT 10H ;CALL BIOS

RET

CLEAR ENDP

SETCUR PROC NEAR

MOV AH,02H

MOV BH,00H

INT 10H

RET

SETCUR ENDP

DISPLAY PROC NEAR

MOV AH,09

MOV AL,[SI]

MOV BH,00

MOV CX,01
INT 10H

RET

DISPLAY ENDP

QUIT:

MOV AL,00

MOV AH,4CH

INT 21H ;COME BACK TO DOS USING INT 21H

CODE ENDS

END START

OUTPUT:
SOURCE CODE:

TITLE** CHECK FOR PALINDROME **

INCLUDE IO.H

CR EQU 0DH ;CARRIAGE RETURN

LF EQU 0AH ;LINE FEED

DATA SEGMENT

MSG DB CR,LF,'ENTER THE STRING:','$'

S DW 25 DUP(?),CR,LF,'$'

STR1 DB 'PALINDROME','$'

STR2 DB 'NOT PALINDROME','$'

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

MOV AX,00

MOV AX,SEG DATA

MOV DS,AX

PROCESS:

OUTPUT MSG

INPUTS S,25

LEA DI,S

LEA SI,S

ADD DI,CX

DEC DI

LOOP1:

MOV AL,[DI]

MOV BL,[SI]

CMP AL,BL

JNE LOOP2

INC SI

DEC DI

LOOP LOOP1
OUTPUT STR1

LOOP LOOP3

LOOP2:

OUTPUT STR2

LOOP3:

MOV AH,4CH

INT 21H

CODE ENDS

END START

OUTPUT:

You might also like