Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
8 views5 pages

Solution

The document contains multiple assembly language programs that perform various tasks, including printing hexadecimal numbers, comparing values, summing integers, toggling bits, comparing signed integers, counting set bits, and determining parity of an 8-bit value. Each program is structured with data and code sections, utilizing ARM assembly instructions. The programs demonstrate fundamental operations such as loading, storing, comparing, and branching.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views5 pages

Solution

The document contains multiple assembly language programs that perform various tasks, including printing hexadecimal numbers, comparing values, summing integers, toggling bits, comparing signed integers, counting set bits, and determining parity of an 8-bit value. Each program is structured with data and code sections, utilizing ARM assembly instructions. The programs demonstrate fundamental operations such as loading, storing, comparing, and branching.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

LAB-1

1.​ Write an assembly language program to print numbers 0 to 15 in Hex.

AREA program_data, DATA, READWRITE


num DCD 0
AREA program_code, CODE, READONLY
ENTRY
EXPORT main
main
LDR R0,=num
​ ​ LDR R1,[R0] ; r1 = num
loop
​ ​ CMP R1,#16
​ ​ BEQ Stop
​ ​ MOV R3,R1 ; r3 = print val
​ ​ ADD R1,R1,#1
​ ​ B loop
Stop
B Stop
END

2.​ Write an assembly language program to compare two values stored in memory
and store the larger one at a new location.

AREA program_data, DATA, READWRITE


n1 DCD 0xA
n2 DCD 0xB
res DCD 0x0
AREA program_code, CODE, READONLY
ENTRY
EXPORT main
main
LDR R0, =n1
LDR R0, [R0]

LDR R1, =n2


LDR R1, [R1]

CMP R0, R1

MOVGT R2, R0 ; If R0 > R1, R2 = R0


MOVLE R2, R1 ; Else, R2 = R1
LDR R3, =res
STR R2, [R3]

Stop
B Stop
END

3.​ Write an assembly language code that sums 5 integers stored in memory and
stores the result in another memory location.

AREA program_data, DATA, READWRITE


arr DCD 1,2,3,4,5
n DCD 5​
res DCD 0
AREA program_code, CODE, READONLY
ENTRY
EXPORT main
main
LDR R0, =arr

LDR R1, =n
LDR R1, [R1]
​ ​ LDR R2,=res
​ ​ MOV R3,#0 ; sum
loop
​ ​ CMP R1,#0
​ ​ BEQ done
​ ​ LDR R4,[R0],#4 ; arr[i], i++
​ ​ ADD R3,R3,R4 ; sum = sum+arr[i]
​ ​ SUB R1,R1,#1 ; cnt --
B loop
done
​ ​ STR R3,[R2]
Stop
B Stop
END

4.​ You are given a 32-bit value. Write an assembly code to toggle every even bit (bit
positions 0, 2, 4, ...) and store the result. Input value will be in the memory address
0x20000000 and store the result in the memory 0x 20000004
AREA my_code, CODE, READONLY
ENTRY
EXPORT main
n​ ​ DCD 0x12345678
main
LDR R0, =0x20000000
LDR R1,=n
​ ​ LDR R1,[R1]
STR R1, [R0]
LDR R1, [R0]
EOR R2, R1, #0x55555555 ; odd toggling : 0xAAAAAAAA

LDR R3, =0x20000004


STR R2, [R3]
Stop
B Stop
END

5.​ Write an assembly code to compare two signed 32-bit integers and store the result
in memory.
​ 1 if A > B
​ 0 if A == B
​ -1 if A < B

AREA my_data, DATA, READWRITE


n1 DCD 0xAAAAAAAA ; First number
n2 DCD 0xBAAAAAAA ; Second number
res DCD 2 ; To store result
AREA my_code, CODE, READONLY
ENTRY
EXPORT main
main
LDR R0, =n1
LDR R0, [R0] ; R0 = n1

LDR R1, =n2


LDR R1, [R1] ; R1 = n2

LDR R3, =res ; R3 = result address

CMP R0, R1 ; Compare signed


BEQ st_zero
BGT st_one
BLT st_neg_one
st_zero
MOV R4, #0
STR R4, [R3]
B Stop
st_one
MOV R4, #1
STR R4, [R3]
B Stop
st_neg_one
MOV R4, #-1
STR R4, [R3]
B Stop
Stop
B Stop
END

6.​ 8.​ Write an assembly language code to count how many bits are set (1s) in a
32-bit integer and store the result in the memory.

AREA my_data, DATA, READWRITE


n1 DCD 0xB0B ; First number
res DCD 0 ; To store result
AREA my_code, CODE, READONLY
ENTRY
EXPORT main
main
LDR R0, =n1
LDR R0, [R0] ; R0 = n1
​ ​ MOV R1,#0 ;cnt
loop
​ ​ CMP R0,#0
​ ​ BEQ done
​ ​ AND R2,R0,#0x1 ; r2 =0 || 1
​ ​ ADD R1,R1,R2​ ; cnt += r2
​ ​ LSR R0,R0,#1
​ ​ B loop
done
​ ​ LDR R4,=res
​ ​ STR R1,[R4]
Stop
B Stop
END
7.​ Write an assembly code to count the number of 1s in an 8-bit value which is
stored in memory. If it’s even, store 0 (even parity) and If it’s odd, store 1 (odd
parity).

AREA my_data, DATA, READWRITE


n1 DCB 0xB0 ; First number
res DCB 0 ; To store result
AREA my_code, CODE, READONLY
ENTRY
EXPORT main
main
LDR R0,=n1
LDRB R0, [R0] ; R0 = n1
​ ​ MOV R1,#0 ;cnt
loop
​ ​ CMP R0,#0
​ ​ BEQ cnt_done
​ ​ AND R2,R0,#0x1 ; r2 =0 || 1
​ ​ ADD R1,R1,R2​ ; cnt += r2
​ ​ LSR R0,R0,#1
​ ​ B loop
cnt_done
​ ​ MOV R5,#2
​ ​ UDIV R3,R1,R5 ; R3 = cnt/2
​ ​ MUL R3,R3,R5 ; r3 = r3*2
​ ​ SUB R1,R1,R3 ; rem = cnt - r3
​ ​ LDR R4,=res
​ ​ STR R1,[R4]
Stop
B Stop
END

8.​ A
9.​ A
10.​A
11.​A
12.​a

You might also like