Download as pdf or txt
Download as pdf or txt
You are on page 1of 19

LAB 8

1.Write a program to display a string "Programming is Fun" in the screen using string
displaying function

TITLE DISPLAY PROGRAMMING IS FUN


.MODEL SMALL
.DATA
STR DB "PROGRAMMING IS FUN$"
.STACK
.CODE

MAIN PROC FAR


MOV AX, @DATA
MOV DS, AX
LEA DX, STR
MOV AH, 09H
INT 21H
MOV AX, 4C00H
INT 21H

MAIN ENDP
END MAIN

OUTPUT
2.Write a program to display the same string using character reading function (use current
address operator $ to count the no of characters e.g.
;STR DB "String to be displayed"
;LEN DW $-STR ;Gives the length of the string STR

TITLE DISPLAY PROGRAMMING IS FUN


.MODEL SMALL
.DATA
STR DB "STRING TO BE DISPLAYED"
LEN DW $-STR
.STACK
.CODE

MAIN PROC FAR


MOV AX, @DATA
MOV DS, AX
MOV CX, LEN
MOV DI, 00

LO: MOV DL, STR[DI]


MOV AH, 06H
INT 21H
INC DI
LOOP LO
MOV AX, 4C00H
INT 21H

MAIN ENDP
END MAIN

OUTPUT
3.Write a program to read string from the user (use function that reads string) and display
the string in another line. (To display the character in new line display characters 0DH and
0AH)

TITLE READ FROM THE KEYBOARD


.MODEL SMALL
.DATA
STRLEN DW 20
STR DB 20 DUP(' ')
.STACK
.CODE
MAIN PROC FAR
MOV AX, @DATA
MOV DS, AX

;; READING STRING
MOV CX, STRLEN
LEA BX, STR

L1: MOV AH, 01H


INT 21H
MOV BYTE PTR[BX], AL
INC BX
LOOP L1

;; NEW LINE CHARACTER


MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H

;; WRITING STRING
MOV CX, STRLEN
LEA BX, STR
L2: MOV AH, 02H
MOV DL, BYTE PTR[BX]
INT 21H

INC BX
LOOP L2
;; ENDING PROGRAM
MOV AX, 4C00H
INT 21H
MAIN ENDP
END MAIN

OUTPUT:

4. Write a program to read the string using the character reading function and display the
string using character displaying function.

TITLE READ FROM THE KEYBOARD


.MODEL SMALL
.DATA
STRLEN DB 20
STRSZ DB 00
STR DB 20 DUP('$')
STRTRM DB '$'
.STACK
.CODE

MAIN PROC FAR


MOV AX, @DATA
MOV DS, AX
;; READING STRING
LEA DX, STRLEN
MOV AH, 0AH
INT 21H

;; NEW LINE CHARACTER


MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H

;; WRITING STRING
LEA DX, STR
MOV AH, 09H
INT 21H

;; ENDING PROGRAM
MOV AX, 4C00H
INT 21H
MAIN ENDP

END MAIN

OUTPUT:
5 Write a program to read the string and convert it into upper case if it is in lower case and
display the resulting string. Process the string in the memory before displaying

TITLE TO UPCASE
.MODEL SMALL
.DATA
STRLEN DB 20
STRSZ DB 00
STR DB 20 DUP(' ')
STRTRM DB '$'
.STACK
.CODE

MAIN PROC FAR


MOV AX, @DATA
MOV DS, AX

;; READING STRING
LEA DX, STRLEN
MOV AH, 0AH
INT 21H

;; CHANGING TO UPCASE
MOV CX, 00H
MOV CL, STRLEN
LEA BX, STR
L1: MOV AL, [BX]

;; CHECKING IF LCASE
CMP AL, 'a'
JL EX
CMP AL, 'z'
JG EX
AND AL, 11011111B
MOV [BX], AL

EX: INC BX
LOOP L1

;; NEW LINE CHARACTER


MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H

;; WRITING STRING
LEA DX, STR
MOV AH, 09H
INT 21H

;; ENDING PROGRAM
MOV AX, 4C00H
INT 21H

MAIN ENDP
END MAIN

OUTPUT:
6.Write a program to read a string and display each word in separate lines.

TITLE WORD
.MODEL SMALL
.DATA
STRLEN DB 20
STRSZ DB 00
STR DB 20 DUP(' ')
STRTRM DB '$'
.STACK
.CODE

MAIN PROC FAR


MOV AX, @DATA
MOV DS, AX

;; READING STRING
LEA DX, STRLEN
MOV AH, 0AH
INT 21H

;; NEW LINE CHARACTER


MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H

;; PRINTING WORD
MOV CX, 00H
MOV CL, STRLEN
LEA BX, STR
L1: MOV DL, [BX]
CMP DL, ' '
JNE EX

;; NEW LINE CHARACTER


MOV DL, 0DH
MOV AH, 02H
INT 21H
MOV DL, 0AH
MOV AH, 02H
INT 21H
JMP BRK

EX: MOV AH, 02H


INT 21H

BRK: INC BX
LOOP L1

;; ENDING PROGRAM
MOV AX, 4C00H
INT 21H

MAIN ENDP
END MAIN

OUTPUT:
LAB 9

1.Write an assembly language program to scroll a window from row 5, column 20 to row
20, column 60 with a reverse video attributes. Then locate the cursor at row 12, column 30.
And display a string as "Programming in Assembly Language is Fun".

TITLE 20*20 WINDOW SCROLLING


.MODEL SMALL
.DATA
STRLEN DB 14
STRSZ DB ?
STR DB 14 DUP('$')
STRTRM DB '$'
.STACK
.CODE

MAIN PROC FAR


MOV AX, @DATA
MOV DS, AX

;; READING FROM THE USER


LEA DX, STRLEN
MOV AH, 0AH
INT 21H

;; CLEARING THE SCREEN


MOV AH, 00
MOV AL, 03H
INT 10H

;; MAKING 20 20 SCREEN
MOV AL, 00H
MOV CH, 00H
MOV CL, 30
MOV DH, 20
MOV DL, 50
MOV BH, 71H
MOV AH, 06H
INT 10H

;; PUSH AX
MOV BH, 00
MOV DH, 10
MOV AX, 80
SUB AL, STRSZ
MOV DL, 02H
DIV DL
MOV DL, AL
MOV AX, 0200H
INT 10H

;; POP AX
;; DISPLAYING THE STRING

LEA DX, STR


MOV AH, 09H
INT 21H

;; ENDING THE PROGRAM


MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN

OUTPUT:
2.Write an assembly language program that takes a string (having 60 characters at max.)
as input from user, and display the string at the center of the clear screen.

TITLE DISPLAYING AT THE CENTER


.MODEL SMALL
.DATA
STRLEN DB 60
STRSZ DB ?
STR DB 60 DUP('$')
STRTRM DB '$'
.STACK
.CODE

MAIN PROC FAR


MOV AX, @DATA
MOV DS, AX

;; READING FROM THE USER


LEA DX, STRLEN
MOV AH, 0AH
INT 21H

;; CLEARING THE SCREEN


MOV AH, 00
MOV AL, 03H
INT 10H

;; MOVING THE CURSOR


MOV BH, 00
MOV DH, 00
MOV AL, 80
MOV DL, STRSZ
SUB AL, DL
MOV DL, 02H
DIV DL
MOV DL, AL
MOV AH, 02H
INT 10H

;; DISPLAYING THE STRING


LEA DX, STR
MOV AH, 09H
INT 21H
;; ENDING THE PROGRAM
MOV AX, 4C00H
INT 21H
MAIN ENDP
END MAIN

OUTPUT:

3.Write an assembly language program that takes a string (having 24 characters at max.)
from the user and display each character at the center of each line.

.MODEL SMALL
.DATA
STRLEN DB 24
STRSZ DB ?
STR DB 24 DUP('$')
STRTRM DB '$'
.STACK
.CODE

MAIN PROC FAR


MOV AX, @DATA
MOV DS, AX

;; READING STRING
LEA DX, STRLEN
MOV AH, 0AH
INT 21H

;; CLEARING THE SCREEN


MOV AH, 00H
MOV AL, 03H
INT 10H

;; DISPLAYING IN THE CENTER


;; SETTING CURSOR POSITION
LEA SI, STR
MOV CH, 00
MOV CL, STRSZ
MOV DX, 00H

L1: MOV BH, 00H


MOV DL, 40
MOV AH, 02H
INT 10H

;; DISPLAYING IN CURSOR POSITION


MOV DL, [SI]
MOV AH, 02H
INT 21H
INC DH
INC SI
LOOP L1

;; ENDING THE PROGRAM


MOV AX, 4C00H
INT 21H

MAIN ENDP
END MAIN

OUTPUT:
4. Write an assembly language program that takes a string (having 14 characters at max.)
input from user and scroll a window of size 20*20 at the center of screen. Then display the
string at the center of scrolled window. (You can choose the color attribute yourself).

TITLE SCROLL
.MODEL SMALL
.DATA
STR DB "PROGRAMMING IN ASSEMBLY LANGUAGE IS FUN",'$'
STRLEN DB $-STR
.STACK
.CODE

MAIN PROC FAR


MOV AX, @DATA
MOV DS, AX

;; SETTING REVERSE VIDEO MODE


MOV AH, 00
MOV AL, 03H
INT 10H

;; SCROLLING FORM 5, 20 TO 20 ROW, COLUMN 60


MOV CH, 05
MOV CL, 20
MOV DH, 20
MOV DL, 60
MOV AH, 07H
MOV BH, 71H
MOV AL, 00
INT 10H

;; CHARACTER CURSOR POSITION CHANGE


MOV BH,00
MOV DH, 12
MOV DL, 30
MOV AH, 02H
INT 10H

;; DISPLAYING THE STRING


LEA DX, STR
MOV AH, 09H
INT 21H

;; ENDING THE PROGRAM


MOV AX, 4C00H
INT 21H
MAIN ENDP

END MAIN

OUTPUT:

5.Write a program that a string from the user and display each word in new line diagonally
from upper left towards bottom right in a clear screen. If the string is �Programming in
Assembly Language is Fun�, it shoud be displayed as
;Programming
; in
; Assembly
; Language
; is
; Fun

.MODEL SMALL
.STACK 64
.DATA
MSG DB "ENTER A STRING: ", 0AH,0DH,"$"
STR DB 50, ? , 50 DUP(0)
.CODE
MOV AX,@DATA;
MOV DS,AX
MOV AH,09H
LEA DX,MSG
INT 21H

;MAIN PROGRAM
MOV CX,00H
MOV DX,00H
MOV AH,0AH
LEA DX,STR
INT 21H
MOV AX,0003H
INT 10H
LEA DI,STR

AGAIN: MOV AH,02H


MOV DL, [DI+2]
CMP DL, 20H
JE T2

T1: MOV DL,[DI+2]


INT 21H
INC CL
JMP T3

T2: MOV DL, 0AH


INT 21H
INC DH
MOV BH,00H
MOV DL,CL
INT 10H

T3: INC DI
CMP [DI+2],0DH
JNE AGAIN
MOV AH,4CH

INT 21H
END
Discussion:

The laboratory session on the familiarization with DOS Service INT 21H in assembly language
programming provided an insightful exploration into the fundamental operations of the DOS
interrupt 21H. This interrupt, also known as the DOS Function Dispatcher, serves as a gateway
for various services offered by the Disk Operating System (DOS). Through this lab, students
gained hands-on experience in utilizing INT 21H to perform essential file and input/output
operations in assembly language.

During the lab, participants were exposed to a range of INT 21H functions, including file
manipulation, character input/output, and program termination. Practical exercises involved
creating, reading, writing, and deleting files using the corresponding interrupt service routines.
Additionally, students learned how to display messages on the console, read keyboard input, and
perform other essential tasks through INT 21H.

The lab not only provided a foundation for understanding the intricacies of DOS interrupt
handling but also offered valuable insights into the underlying principles of operating system
interaction at the assembly language level. Participants were able to see how INT 21H acts as a
bridge between user-level programs and the DOS kernel, facilitating seamless communication
and access to various system resources.

Conclusion:

In conclusion, the lab on DOS Service INT 21H in assembly language programming provided
practical insights into file manipulation, input/output operations, and program termination.
Participants gained valuable hands-on experience, acquiring essential skills for system-level
programming. This lab serves as a foundational step for understanding and utilizing DOS
interrupts in low-level programming tasks.
Discussion:

The laboratory session on the familiarization with BIOS Service INT 10H in assembly language
programming offered a comprehensive exploration of the Basic Input/Output System (BIOS)
interrupt for video services. Through practical exercises, participants delved into the capabilities
of INT 10H, which serves as a crucial interface for managing screen output and input at the
BIOS level.

During the lab, students engaged in activities such as setting video modes, manipulating the
cursor, and displaying characters on the screen using INT 10H functions. The hands-on
experience allowed them to understand how to control the visual aspects of their programs,
making it a fundamental aspect of low-level graphics programming. Furthermore, the lab
provided insights into color attributes, cursor control, and scrolling functionalities facilitated by
INT 10H.

Conclusion:

In conclusion, the lab on BIOS Service INT 10H in assembly language programming proved to
be an invaluable introduction to video services at the BIOS level. Participants gained practical
proficiency in manipulating screen output and input, setting the foundation for graphics
programming. The acquired knowledge on INT 10H functions equips students with essential
skills for developing assembly language programs with graphical user interfaces and lays the
groundwork for further exploration into low-level graphics programming.

You might also like