Question

2. Before starting this part of the lab, please do all calculations below manually.

Create a new project: Lab5b. Copy the appropriate files over from the provided

zip file. Starting with provided calculate.s, modify it to add or subtract the

numbers that are stored in the memory and store the sum in memory (i.e. your

program should read numbers from the memory, apply mathematical operation to

the numbers accordingly and save the result in the memory). Put the operand

values given into the .rodata section of your program. Execute the programs and

record the sum or subtraction and the 'C' (carry) and 'Z' (zero) bits of the

condition code register. Use the following data:

a. Addition of two single-byte numbers:

0xC3 + 0x8D

Helpful steps:

1) Use LDRB to read a byte of data from memory into a register.

How does an instruction refer to memory location? How do you

initialize memory? Hint: Look at Lab5a, above.

2) Use ADD to add numbers in registers.

ab 5 Rev. 3

-7-

Advanced Assembly, Branching, and Monitor Utilities

3) Use STRH or STR in order to save the result from a register to

memory-why shouldn't you use STRB in this case?

0xF5-0x34

0xFE6B34-0x58CF21

0x2E68B3F4 +0x5C2A

b. Subtraction of two single-byte numbers:

c. Three-byte subtraction:

d. Multi-byte addition:

Fig: 1