MES Lab Manual 4th Sem

1.Write a program to multiply two 16 bit binary numbers
	AREA CODE1,CODE,READONLY
ENTRY
	LDR R0,=N1 
	LDR R1,=N2 
	LDRH R2,[R0] 
	LDRH R3,[R1] 
	MUL R4, R2,R3 
	LDR R6, =RESULT 
	R4,[R6] 
STOP B STOP
N1 DCW 0X1234
N2 DCW 0X5678
	AREA DATA1,DATA,READWRITE
RESULT DCD 0
	END

2.Write a program to find the sum of first 10 integer numbers.

	AREA CODE1,CODE,READONLY
ENTRY
	MOV R2,#10 
	MOV R3,#0 
REPEAT ADD R3,R2,R3 
	SUBS R2,R2,#1 
	BNE REPEAT 
	LDR R6, =SUM 
	STR R3,[R6] 
STOP B STOP
	AREA DATA1,DATA,READWRITE
SUM DCD 0
	END 

3.Write a program to find factorial of a number
AREA CODE1,CODE,READONLY
ENTRY
	MOV R2,#10 
	MOV R3,#1 
REPEAT MUL R3,R2,R3 
	SUBS R2,R2,#1 
	BNE REPEAT
	LDR R6, =fact 
	STR R3,[R6]
STOP B STOP
	AREA DATA1, DATA, READWRITE
fact DCD 0
	END

 
 4.Write a program to add an array of 16 bit numbers and store the 32 bit result in internal RAM
	AREA CODE1,CODE,READONLY
ENTRY
	LDR R0,=INPUT 
	MOV R2,#10 
	MOV R3,#0 
REPEAT LDRH R4,[R0]
	ADD R3,R3,R4 
	ADD R0,R0,#2 
	SUBS R2,R2,#1 
	BNE REPEAT 
	LDR R6,=SUM 
	STR R3,[R6] 
STOP B STOP
INPUT DCW 0X1111 ; INPUT ELEMENTS
	DCW 0X8888
	DCW 0X3333
	DCW 0X7777
	DCW 0X11AA
	DCW 0X4444
	DCW 0X9999
	DCW 0X6666
	DCW 0X2222
	DCW 0X5555
	AREA DATA1,DATA,READWRITE
SUM DCD 0
	END 

 
 5.Write a program to find the square of a number (1 to 10) using look-up table.
	AREA CODE1,CODE,READONLY
ENTRY
	LDR R0,=INPUT 
	MOV R2,#9 
	SUB R2,R2,#1
	ADD R0, R0, R2, LSL #2 
	LDR R3, [R0] 
	LDR R6, =square 
	STR R3, [R6]
STOP B STOP
INPUT DCD 1 
	DCD 4
	DCD 9
	DCD 16
	DCD 25
	DCD 36
	DCD 49
	DCD 64
	DCD 81
	DCD 100
	AREA DATA1, DATA, READWRITE
square DCD 0
	END

6.Write a program to find the largest/smallest number in an array of 32 numbers.
	AREA CODE1,CODE,READONLY
ENTRY
	LDR R0, =INPUT 
	R1,[R0] 
	MOV R2, #9 
	MOV R3, R1 
	MOV R4, R1 
REPEAT ADD R0, #4 
	LDR R5,[R0] 
	CMP R3, R5 
	MOVGT R3, R5 

	CMP R4, R5
	MOVLT R4, R5 
 
	SUBS R2, R2, #1
	BNE REPEAT 
	LDR R6,=large 
	STR R4,[R6]
	LDR R6, =small 
	R3,[R6]
STOP B STOP
INPUT DCD 0X11 
	DCD 0X88
	DCD 0X33
	DCD 0X77
	DCD 0XAA
	DCD 0X44
	DCD 0X99
	DCD 0X66
	DCD 0X22
	DCD 0X55
	AREA DATA1, DATA, READWRITE
large DCD 0
small DCD 0
	END

 
 7.Write a program to arrange a series of 32 bit numbers in ascending/descending order.
	AREA CODE1,CODE,READONLY
ENTRY
	LDR R0,=INPUT
	LDMIA R0,{R1-R10} 
	LDR R0,=SORT
	STMIA R0,{R1-R10} 
	MOV R2,#9 
OUTER LDR R0, =SORT 
	MOV R3, R2 
REPEAT LDR R4, [R0], #4
	LDR R5,[R0] 
	CMP R4,R5 
	BLE SKIP
	SWP R5,R4,[R0] 
	SUB R0, R0, #4
	SWP R4,R5,[R0]
	ADD R0,R0,#4
SKIP SUB R3, #1 
	CMP R3, #0 
	BNE REPEAT 
	R2,#1 
	CMP R2,#0 
	BNE OUTER 
STOP B STOP
INPUT DCD 0X11
	DCD 0X88
	DCD 0X33
	DCD 0X77
	DCD 0XAA
	DCD 0X44
	DCD 0X99
	DCD 0X66
	DCD 0X22
	DCD 0X55
	AREA DATA1,DATA,READWRITE
SORT SPACE 40
	END

8. Write a program to count the number of ones and zeros in two consecutive memory locations.
	AREA CODE1,CODE,READONLY
ENTRY
	LDR R0, =INPUT
	LDRH R1,[R0] 
	MOV R2,#0 
	MOV R3, #0 
	MOV R4,#16
REPEAT RORS R1,R1,#1 
	ADDCS R3,R3,#1 
	ADDCC R2,R2,#1 
	SUB R4,R4,#1 
	CMP R4, #0 
	BNE REPEAT 
	LDR R5,=ZCOUNT 
	STR R3,[R5]
	LDR R5,=OCOUNT 
	STR R2,[R5]
STOP B STOP
INPUT DCW 0X5678
	AREA DATA1,DATA,READWRITE
ZCOUNT DCD 0
OCOUNT DCD 0
	END