You are on page 1of 3

MICROPROCESSORS AND MICRONTROLLERS LAB ASSIGNMENT 5

21BCE2651 ADIT KAUSHAL

SUBMITTED TO: DR. VEERAPU GOUTHAM

24/4/24

1. Write an ARM7TDMI assembly language programming to find the sum of digits of a


number.
AREA ADDITION, CODE, READONLY
ENTRY
START
MOV R0, #0X100
MOV R2, #0
ADDIT
CMP R0, #0
BEQ DONE
AND R1, R0, #0xF
ADD R2, R2, R1
LSR R0, R0, #4
B ADDIT
DONE MOV R0, R2
END

ANOTHER APPROACH IS:


AREA PROG14, CODE, READONLY
DIVIDEND RN 1
DIVISOR RN 2
QUOTIENT RN 3
REMAINDER RN 4
RESULT RN 5
ENTRY
LDR DIVIDEND, =12345
MOV DIVISOR, #10
MOV RESULT, #0
LOOP BL DIV
ADD RESULT, REMAINDER, RESULT
CMP QUOTIENT, #0
MOVNE DIVIDENT, QUOTIENT
BNE LOOP
STOP B STOP
DIV MOV QUOTIENT, #0
LOOP2 SUBS DIVIDEND, DIVIDEND, DIVISOR
ADDPL QUOTIENT, QUOTIENT, #1
BPL LOOP2
ADDMI REMAINDER, DIVIDEND, DIVISOR
BX LR
END
2. Write an ARM7TDMI assembly language programming to reverse a 32 bit number
AREA REVERSAL, CODE, READONLY
ENTRY
START
MOV R0, #0X1234
MOV R1, #0
MOV R2, R0
COUNT CMP R0, #0
BEQ NEXT_STEP
AND R3, R0, #0xF
ADD R1, R1, #1 ;storing count
LSR R0, R0, #4
B COUNT
NEXT_STEP MOV R0, R2
MOV R2, #0
MOV R4, #0
LOOP CMP R0, #0
BEQ DONE
AND R5, R0, #0xf ;taking out the single digit
MOV R6, R1
LOOP2 CMP R1, #0
BEQ NEXT
MUL R4, R4, #10
SUB R1, R1, #1
B LOOP2
NEXT MOV R1, R6
SUB R1, R1, #1 ;decreasing count value
ADD R4, R4, R5 ;add last digit to the previous value
LSR R0, R0, #4 ;remove the last digit
B LOOP
DONE: MOV R0, R4
END

3. Write an assembly language program in 8086 microprocessor to reverse 4 digit BCD


number. Example: Assume 16 bit number is stored at memory location 2050 and 2051

ASSUME CS: CODE, DS: DATA

DATA SEGEMENT

RESULT DW 01 DUP(?)

DATA ENDS

CODE SEGEMENT

START:
MOV AX, 2000H

MOV DS, AX

MOV AX, [50H]

MOV CX, #04H

ROL AH, CX

ROL AL, CX

MOV DI, OFFSET RESULT

MOV [DI], AX

MOV 2050H, AL

MOV 2051, AH

INT 3H

CODE ENDS

END START

You might also like