You are on page 1of 13

Write a program in 8086 assembly Language (with proper comments) to count the number

of alphabets ‘a’, ‘e’ and ‘o’ (irrespective of lower or upper case) in a strings. For example,
in case the strings is: “ABaDEFeHIO” the count of ‘a’ will be 2, ‘e’ is 2 and ‘o’ is 1. You
may assume that string is available in the memory and is of length 10. Make suitable
assumptions, if any.

DATA SEGMENT
STR1 DB “ABaDEFeHIO”
A DB 0H
E DB 0H
O DB 0H
MSG1 DB 10,13,”COUNT OF A’s IS : $”
MSG2 DB 10,13,”COUNT OF E’s IS : $”
MSG3 DB 10,13,”COUNT OF O’s IS : $”
DATA ENDS

DISPLAY MACRO MSG


MOV AH,9
LEA DX,MSG
INT 21H
ENDM

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX

LEA SI,STR1

MOV CX,10
CHECK:
MOV AL,[SI]
CMP AL,’A’
JNE N1
INC A
N1:
CMP AL,’a’
JNE N2
INC A

N2: CMP AL,’E’


JNE N3
INC E
N3: CMP AL,’e’
JNE N4
INC E

N4: CMP AL,’O’


JNE N5
INC O

N5: CMP AL,’o’


JNE N6
INC O

N6: INC SI
LOOP CHECK

DISPLAY MSG1

MOV DL,A
ADD DL,30H
MOV AH,2
INT 21H

DISPLAY MSG2

MOV DL,E
ADD DL,30H
MOV AH,2
INT 21H

DISPLAY MSG3

MOV DL,O
ADD DL,30H
MOV AH,2
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
END START

1. DATA SEGMENT
2. STR1 DB "ABaDEFeHIO"
3. A DB 0H
4. E DB 0H
5. O DB 0H
6. MSG1 DB 10,13,"COUNT OF A's IS : $"
7. MSG2 DB 10,13,"COUNT OF E's IS : $"
8. MSG3 DB 10,13,"COUNT OF O's IS : $"
9. DATA ENDS
10. DISPLAY MACRO MSG
11. MOV AH,9
12. LEA DX,MSG
13. INT 21H
14. ENDM
15. CODE SEGMENT
16. ASSUME CS:CODE,DS:DATA
17. START:
18. MOV AX,DATA
19. MOV DS,AX
20. LEA SI,STR1
21. MOV CX,10
22. CHECK:
23. MOV AL,[SI]
24. CMP AL,'A'
25. JNE N1
26. INC A
27. N1:
28. CMP AL,'a'
29. JNE N2
30. INC A
31. N2: CMP AL,'E'
32. JNE N3
33. INC E
34. N3: CMP AL,'e'
35. JNE N4
36. INC E
37. N4: CMP AL,'O'
38. JNE N5
39. INC O
40. N5: CMP AL,'o'
41. JNE N6
42. INC O
43. N6: INC SI
44. LOOP CHECK
45. DISPLAY MSG1
46. MOV DL,A
47. ADD DL,30H
48. MOV AH,2
49. INT 21H
50. DISPLAY MSG2
51. MOV DL,E
52. ADD DL,30H
53. MOV AH,2
54. INT 21H
55. DISPLAY MSG3
56. MOV DL,O
57. ADD DL,30H
58. MOV AH,2
59. INT 21H
60. MOV AH,4CH
61. INT 21H
62. CODE ENDS
63. END START
64. Screen shots :-
Page 60
66. After Execution :
67.
68.

Write a program in 8086 assembly language that accepts a 2 digit input from the keyboard
(as ASCII input) into packed BCD number. The packed BCD number may be stored in
memory.

DATA SEGMENT
MSG1 DB “ENTER NUMBER : $”
DIGIT1 DB ?
DIGIT2 DB ?
BCD DB ?
DATA ENDS

CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX

LEA DX,MSG1
MOV AH,9
INT 21H

MOV AH,1
INT 21H
SUB AL,30H
MOV DIGIT1,AL

MOV AH,1
INT 21H
SUB AL,30H
MOV DIGIT2,AL

MOV AH,DIGIT1
MOV AL,DIGIT2

MOV CL,4
ROL AH,CL

ADD AL,AH
MOV BCD,AL

CODE ENDS

END START

Program Code :

1. DATA SEGMENT
2. MSG1 DB "ENTER NUMBER : $"
3. DIGIT1 DB ?
4. DIGIT2 DB ?
5. BCD DB ?
6. DATA ENDS
7. CODE SEGMENT
8. ASSUME DS:DATA,CS:CODE
9. START:
10. MOV AX,DATA
11. MOV DS,AX
12. LEA DX,MSG1
13. MOV AH,9
14. INT 21H
15. MOV AH,1
16. INT 21H
17. SUB AL,30H
18. MOV DIGIT1,AL
19. MOV AH,1
20. INT 21H
21. SUB AL,30H
22. MOV DIGIT2,AL
23. MOV AH,DIGIT1
24. MOV AL,DIGIT2
25. MOV CL,4
26. ROL AH,CL
27. ADD AL,AH
28. MOV BCD,AL
29. CODE ENDS
30. END START
31. Screen shots :-

32.
33. Before Execution :-
34.
35. After Execution :

36. -

37.
Write a simple near procedure in 8086 assembly language that receives an ASCII digit as
parameter. It returns 1 if the ASCII digit is ‘Z’ else it returns 0. Make suitable assumptions,
if any.
DATA SEGMENT
MSG1 DB “ENTER ALPHABET ‘Z’ : $”
MSG2 DB 10,13,”BIT RETURNED IS : $”
DATA ENDS

CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX

LEA DX,MSG1
MOV AH,9
INT 21H

MOV AH,1
INT 21H
MOV BL,AL

LEA DX,MSG2
MOV AH,9
INT 21H

CALL CHECK

ADD DL,30H
MOV AH,2
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS

CHECK PROC NEAR

CMP BL,’Z’
JNE SKIP

MOV DL,1
JMP DONE
SKIP:
MOV DL,0
DONE:
RET
CHECK ENDP

END START

program code :

1. DATA SEGMENT
2. MSG1 DB "ENTER ALPHABET 'Z' : $"
3. MSG2 DB 10,13,"BIT RETURNED IS : $"
4. DATA ENDS
5. CODE SEGMENT
6. ASSUME DS:DATA,CS:CODE
7. START:
8. MOV AX,DATA
9. MOV DS,AX
10. LEA DX,MSG1
11. MOV AH,9
12. INT 21H
13. MOV AH,1
14. INT 21H
15. MOV BL,AL
16. LEA DX,MSG2
17. MOV AH,9
18. INT 21H
19. CALL CHECK
20. ADD DL,30H
21. MOV AH,2
22. INT 21H
23. MOV AH,4CH
24. INT 21H
25. CODE ENDS
26. CHECK PROC NEAR
27. CMP BL,'Z'
28. JNE SKIP
29. MOV DL,1
30. JMP DONE
31. SKIP:
32. MOV DL,0
33. DONE:
34. RET
35. CHECK ENDP
36. END START
37. Screen shots :-
38.
39. After Execution :-
40.

You might also like