#Problem1# Vowel Count: # Assignment#
#Problem1# Vowel Count: # Assignment#
#PROBLEM1#
VOWEL COUNT
# CODE #:
CODE SEGMENT
ASSUME
CS:CODE,DS:CODE
LEA DI,VOWELS
MOV CX,05H
REPNE SCASB ;SCANS
DATA IN ES:DI WITH DS:SI
ORG 1000H;
JNE UNTIL_
INC CNT
MOV DS,AX;
INITIALIZING DS WITH
RANDOM VALUES
MOV BX,14H;
MOV ES,AX;
UNTIL_:
DEC BX;
JNE REPEAT_
MOV DX,CNT;
LEA DI,STRING;
MOV SI,DI;
CLD
REPEAT_:
; LOAD A STRING CHAR
LODSB ; LOADS DATA
IN DS:SI
HLT
STRING DB 'NOYBIT K
MONDAL EEEA' ;
DECLARING THE STRING
VOWELS DB 'AEIOU'
CNT DW 0
CODE ENDS
END
#OUTPUT#:
Here 20 BYTE string NOYBIT K MONDAL EEEA has 8 VOWELS which will be
shown in DX register.. SO, DX shows 8h.
#PROBLEM 2#
STRING PALINDROME
# CODE :
CODE SEGMENT
ASSUME
CS:CODE,DS:CODE
ORG 1000H
STRING DB 20 DUP(0)
CNT DW 0
POP SI;
INC SI;
SUB DX,2;
CMP BL,AL;
JNE LEV1
INC CNT
MAIN ENDP
MAIN PROC
LOOP REPEAT1_
JMP TEMP_
MOV DS,AX
MOV ES,AX
EVEN_:
READSTR PROC
LEA DI,STRING
CALL READSTR
MOV SI,DI
CLD
PUSH BX
SHR BX,1;
POP BX
JNC EVEN_
ODD_:
MOV CX,BX;
DEC CX;
MOV DX,CX;
SHR CX,1;
REPEAT1_:
PUSH SI
LODSB; AL LOADED
FROM 1024
MOV BL,AL;
POP SI; 1024
PUSH SI
ADD SI,DX
LODSB ;AL AGAIN
LOADED FROM 1030
#OUTPUT#:
MOV CX,BX;
SHR CX,1;
MOV DX,BX;
DEC DX;
REPEAT2_:
PUSH SI
LODSB; AL LOADED
FROM 1024
MOV BL,AL;
POP SI; 1024
PUSH SI
ADD SI,DX
LODSB ;AL AGAIN
LOADED FROM 1030
POP SI;
INC SI;
SUB DX,2;
CMP BL,AL;
JNE LEV1
INC CNT
LOOP REPEAT2_
PUSH AX
PUSH DI
CLD
XOR BX,BX
MOV AH,1H
INT 21H
WHILE1:
CMP AL,0DH
JE ENDWHILE1
CMP AL,8H
JNE ELSE1
DEC DI
DEC BX
JMP READ
ELSE1:
STOSB
INC BX
READ:
INT 21H
JMP WHILE1
ENDWHILE1:
POP DI
POP AX
RET
READSTR ENDP
CODE ENDS
END
ADDITIONAL:
CODE:
;THIS PROBLEM PERFORMS A 48 BIT
NUMBER BY 16 BIT NUMBER DIVISION
DIV BX
MOV Q, AX
;Q+2:Q=A+4:A+2:A/BX, R =
REMAINDER
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
MOV BX, 0F015H
MOV DX, A+4
MOV AX, A+2
DIV BX
MOV Q+2, AX
MOV AX, A
OUTPUT:
MOV R, DX
HLT
ORG 50H
A DW 1536H, 4563H, 1235H
ORG 60H
Q DW ?, ?
ORG 70H
R DW ?
CODE ENDS
END