Professional Documents
Culture Documents
Name: Rana Muhammad Aqdas Section: BSCS 5 (A) Roll No: Bcsm-S19-046 Class Task Topic: "Stack" Submitted To: Mam Sara Date: 09/04/2021
Name: Rana Muhammad Aqdas Section: BSCS 5 (A) Roll No: Bcsm-S19-046 Class Task Topic: "Stack" Submitted To: Mam Sara Date: 09/04/2021
Section:
BSCS 5[A]
Roll No:
Bcsm-S19-046
"Stack"
Submitted to:
Mam SARA
Date:
09/04/2021
Task 1: Define a procedure to reverse an input given by user. You can use the following
algorithm:
Display a “?”
Initialize count to 0
Read a character
increment count
read a character
END_WHILE
Go to a new line
display it
END_FOR
CODE:
.MODEL SMALL
.STACK 100H
.DATA
.CODE
Main Proc
MOV AH,2
INT 21H
XOR CX,CX
MOV AH,1
INT 21H
WHILE:
CMP AL,0DH
JE END_WHILE
PUSH AX
INC CX
INT 21H
JMP WHILE
END_WHILE:
MOV AH,2
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
JCXZ EXIT
TOP:
POP DX
INT 21H
LOOP TOP
EXIT:
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
Output:
Task 2: Write an assembly program that lets the user to type some text, consisting of
words separated by blanks, ending with carriage return, and display the text in the same
word order as entered, but with the letters in each word reversed. For example, “this is a
test” becomes “siht si a test”.
CODE:
.MODEL SMALL
.STACK 100H
.DATA
COUNT DW 0
.CODE
MAIN PROC
MOV DS, AX
MOV AH, 9
INT 21H
XOR CX, CX
MOV AH, 1
@INPUT:
INT 21H
CMP AL, 0DH
JE @END_INPUT
PUSH AX
INC CX
JMP @INPUT
@END_INPUT:
XCHG BX, SP
PUSH 0020H
XCHG BX, SP
INC COUNT
@LOOP_1:
POP DX
XCHG BX, SP
PUSH DX
XCHG BX, SP
INC COUNT
LOOP @LOOP_1
MOV AH, 9
INT 21H
MOV CX, COUNT
MOV COUNT, 0
PUSH 0020H
INC COUNT
@OUTPUT:
XCHG BX, SP
POP DX
XCHG BX, SP
JNE @SKIP_PRINTING
MOV AH, 2
@LOOP_2:
POP DX
INT 21H
DEC COUNT
JNZ @LOOP_2
@SKIP_PRINTING:
PUSH DX
INC COUNT
LOOP @OUTPUT
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
Output: