0% found this document useful (0 votes)
58 views

Microcomputer Group Assignment

This document contains an assignment submission from a group of 4 students for their 4th year Microcomputer and Interfacing course. It includes 12 questions written in ALP (Assembly Language Programming) with code snippets provided as answers to the questions. The questions cover topics like calculating factorials, searching for characters in strings, converting between numeric bases, temperature conversions, and finding largest numbers in arrays.

Uploaded by

Efrem Akalu
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views

Microcomputer Group Assignment

This document contains an assignment submission from a group of 4 students for their 4th year Microcomputer and Interfacing course. It includes 12 questions written in ALP (Assembly Language Programming) with code snippets provided as answers to the questions. The questions cover topics like calculating factorials, searching for characters in strings, converting between numeric bases, temperature conversions, and finding largest numbers in arrays.

Uploaded by

Efrem Akalu
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 9

WOLKITE

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

SUBMITED TO: MR.BEKA A.

SUBMISSION DATE: May/10/2021.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~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

LOOP1: MOV DX,0


DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,9
JG LOOP1

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

EXIT: MOV AH,4CH


INT 21H
CODE ENDS
END START
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Q7 Write an ALP program to find the sum of two BCD numbers stored in memory.

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

LOOP1: MOV DX,0


DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,9
JG LOOP1

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

MOV DL, 13 ; PRINT A NEW LINE


MOV AH, 2
INT 21H
MOV DL, 10
MOV AH, 2
INT 21H

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

LEA DX,RES ;99


MOV AH,9
INT 21H

MOV AH,4CH
INT 21H
CODE ENDS
HEX2DEC PROC NEAR
MOV CX,0
MOV BX,10

LOOP1: MOV DX,0


DIV BX
ADD DL,30H
PUSH DX
INC CX
CMP AX,9
JG LOOP1

ADD AL,30H
MOV [SI],AL

LOOP2: POP AX
INC SI
MOV [SI],AL
LOOP LOOP2
RET
HEX2DEC ENDP
END START
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~END~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

You might also like