Microcomputer Group Assignment
Microcomputer Group Assignment
UNIVERSITY
COLLEGE OF ENGINEERING AND TECHNOLOGY
DEPARTMENT OF ELECTRICAL AND COMPUTER ENGINEERING
4th YEAR.
COURSE TITLE: - MICROCOMPUTER
AND INTERFACING
GROUP ASSIGNMENT.
GROUP - 1
STREAM : CONTROL.
NAME
ID
1.EFREM
AKALU ...................................................ENGR/1058/10
2.EYERUSALEM WELDEMARIYAM......................
ENGR/359/10
3.BRHANU
BOKI.......................................................ENGR/221/10
4.LIDIA
DELIL .......................................................... ENGR/569/10
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~START~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Q2 Write an ALP program to calculate
;the Factorial of a give number.
DATA SEGMENT
NUM DB ?
FACT DB 1H
RES DB 10 DUP ('$')
MSG1 DB "ENTER ANY NUMBER U WANT TO FACTORIZE : $"
MSG2 DB 10,13,"RESULT : $"
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 NUM,AL
MOV AH,0
MOV AL,FACT
MOV CH,0
MOV CL,NUM
LABEL1: MUL CL
LOOP LABEL1
LEA SI,RES
CALL HEX2DEC
LEA DX,MSG2
MOV AH,9
INT 21H
LEA DX,RES
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
HEX2DEC PROC NEAR
MOV CX,0
MOV BX,10
ADD AL,30H
MOV [SI],AL
LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2DEC ENDP
END START
~~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~
;Q3. Write an ALP program to search for a character
;in a given string and calculate the number of
;occurrences of the character in a given string.
DATA SEGMENT
MSG1 DB 10,13,'ENTER ANY STRING :- $'
MSG2 DB 10,13,'ENTER ANY CHARACTER U WANT TO CALCULATE THE
NUMBER OFOCCURRANCES OF THE CHARACTER IN AGIVEN
STRING: $'
MSG3 DB 10,13,' $'
MSG4 DB 10,13,'NO, CHARACTER FOUND IN THE GIVEN STRING $'
MSG5 DB ' CHARACTER(S) FOUND IN THE GIVEN STRING $'
CHAR DB ?
COUNT DB 0
P1 LABEL BYTE
M1 DB 0FFH
L1 DB ?
P11 DB 0FFH DUP ('$')
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
DISPLAY MSG1
LEA DX,P1
MOV AH,0AH
INT 21H
DISPLAY MSG2
MOV AH,1
INT 21H
MOV CHAR,AL
DISPLAY MSG3
LEA SI,P11
MOV CL,L1
MOV CH,0
CHECK:
MOV AL,[SI]
CMP CHAR,AL
JNE SKIP
INC COUNT
SKIP:
INC SI
LOOP CHECK
CMP COUNT,0
JE NOTFOUND
DISPLAY MSG3
MOV DL,COUNT
ADD DL,30H
MOV AH,2
INT 21H
DISPLAY MSG5
JMP EXIT
NOTFOUND:
DISPLAY MSG4
DATA SEGMENT
MESSAGE DB "ENTER CHARACTER :$"
NUM DB ?
BCD DB ?
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,DATA
MOV DS,AX
LEA DX,MESSAGE
MOV AH,9
INT 21H
MOV AH,1
INT 21H
MOV NUM,AL
SUB AL,30H
MOV BCD,AL
MOV AH,4CH
INT 21H
ENDS
END START
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Q8 Write a program to convert
;the ASCII code to its BCD equivalent.
DATA SEGMENT
MSG1 DB "Enter the first number:$"
MSG2 DB 13,10,"Result of packed bcd:$"
BCD DB ?
FIRST DB ?
SECOND DB ?
RESULT DB 20 DUP('$')
ENDS
CODE SEGMENT
ASSUME DS:DATA CS:CODE
START:
MOV AX,@DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,09h
INT 21h
MOV AX,00
MOV AH,01h
INT 21h
sub AL,'0'
MOV BL,AL
MOV AX,00
;MOV AH,01h
;INT 21h
SUB AL,'0'
AND BL,0Fh
AND AL,0Fh
MOV CL,04h
ROL BL,CL
OR AL,BL
MOV BCD,AL
LEA DX,MSG2
MOV AH,09h
INT 21h
MOV DX,00
MOV DL,bcd
MOV AH,02h
INT 21h
MOV AX,4c00h
INT 21h
ENDS
END START
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Q10, Write an ALP program to convert Celsius to Fahrenheit
;temperature measuring scales. Using formula: 5/9(Fahrenheit-32).
DATA SEGMENT
T DB ?
RES DB 10 DUP ('$')
MSG1 DB "ENTER TEMPERATURE IN CELSIUS (ONLY IN 2 DIGITS) : $"
MSG2 DB 10,13,"CONVERTED IS FAHRENHEIT (TEMPERATURE) : $"
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 AH,0
MOV BL,10
MUL BL
MOV BL,AL
MOV AH,1
INT 21H
SUB AL,30H
MOV AH,0
ADD AL,BL
MOV T,AL
MOV DL,9
MUL DL
MOV BL,5
DIV BL
MOV AH,0
ADD AL,32
LEA SI,RES
CALL HEX2DEC
LEA DX,MSG2
MOV AH,9
INT 21H
LEA DX,RES
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
HEX2DEC PROC NEAR
MOV CX,0
MOV BX,10
ADD AL,30H
MOV [SI],AL
LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2DEC ENDP
END START
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;Q11. Write an ALP program to interface with LCD.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Q12, Write an ALP program for finding the largest
; number in an array of 10 elements.
.data
MSG1 DB 13,10,'ENTER ANY 10 NUMBER TO FIND THE LARGEST FROM THOSE ',13,10,'$'
MSG2 DB 13,10,'THE LARGET NUMBER IS:','$'
ARR DB 13 (?)
.CODE
LAR PROC
MOV AX,@DATA
MOV DS,AX
LEA DX,MSG1
MOV AH,9H
INT 21H
MOV CX,10
lebel:
MOV AH,1
INT 21h
SUB AL,'0'
MOV ARR[SI],AL
INC SI
DEC CX
JNZ lebel
MOV BL,ARR[0]
MOV DI,1
MOV CX,10
LEB2:
CMP BL,ARR[DI]
JL B
JMP C
B:
MOV BL,ARR[DI]
C:
INC DI
DEC CX
JNZ LEB2
LEA DX,MSG2
MOV AH,9H
INT 21H
MOV DL,BL
ADD DL,'0'
MOV AH,2
INT 21H
LAR ENDP
END LAR
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Q14, Write an ALP program, which takes the input of 4- digit number,
;and display the sum of square of digits as given below.
;For example if the Input=4537, the result becomes 4^2+5^2+3^2+7^2
;=16+25+9+49=99
DATA SEGMENT
MSG1 DB "ENTER NUMBER WITH FOUR DIGITS : $"
MSG2 DB 10,13,"RESULT : $"
D1 DB ?
D2 DB ?
D3 DB ?
D4 DB ?
SUM DB ?
RES DB 10 DUP ('$')
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 ;4
INT 21H
SUB AL,30H
MOV AH,0
MUL AL
MOV D1,AL
MOV AH,1 ;5
INT 21H
SUB AL,30H
MOV AH,0
MUL AL
MOV D2,AL
MOV AH,1 ;3
INT 21H
SUB AL,30H
MOV AH,0
MUL AL
MOV D3,AL
MOV AH,1 ;7
INT 21H
SUB AL,30H
MOV AH,0
MUL AL
MOV D4,AL
ADD AL,D3
ADD AL,D2
ADD AL,D1
MOV SUM,AL
LEA SI,RES
CALL HEX2DEC
LEA DX,MSG2
MOV AH,9 ;result:
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
HEX2DEC PROC NEAR
MOV CX,0
MOV BX,10
ADD AL,30H
MOV [SI],AL
LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2DEC ENDP
END START
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~