Question

ARM on a raspberry pi 1. Create a assembly program that branches based off the value...

ARM on a raspberry pi 
1. Create a assembly program that branches based off the value of three different variables.

## Details

Task 1:
    I highly suggest reading the book and doing the practice before doing this.
    Name your file cp5.s.
    You need to initally start with the three variables.
        * the variables should be called max, t1, t2.
        * Set the values to whatever you would like.
        * max tells us the cut off for a value
        * if t1 or t2 greater than max we branch to a function that adds 2 to the register r0.
        * if t1 or t2 less than the max we branch to a function that adds 1 to the register r0.
    Your main should,
        1. load the addresses of the variables into a register.
        2. Load the values within the variables.
        3. Compare the variables and branch to the functions that do something to r0.
        4. Finally your program should return 2,3, or 4 depending on the values of t1 and t2.
    You will also need to create a makefile to build your assembly code as well.


## Gradding
    Task 1:
        I will first run your makefile.
        Your makfile should create files specified in the chapter. (1 point)
        I will run your code useing this command `./cp5 ; echo $?`.
        The output should be 2,3, or 4. (2 points)
        When I run `make clean` the files created by your make should be deleted. (1 point)
        Loading memory from variables will be worth 2 points.
        Do a comparison that branches to a new funtion depending on the comparison. (2 points)
        Return a correct value based on the values of the variables.

Homework Answers

Answer #1

.data

.align 4
t1:
    .word 0

.align 4
t2:
    .word 0

.align 4
max:
    .word 0

.align 4

.global main

main:

    ldr r1, addr_of_t1
    mov r3, #5
    str r3, [r1]
    ldr r2, addr_of_t2
    mov r3, #8
    str r3, [r2]
    ldr r4, addr_of_max
    mov r3, #10
    str r3, [r4]

ldr r1, addr_of_t1

ldr r1, [r1]

ldr r2, addr_of_t2

ldr r2, [r2]

ldr r4, addr_of_max

ldr r4, [r4]

cmp r1, r4

blt r1_lower

cmp r2, r4

blt r2_lower

mov r0, #1




r1_lower:

    mov r0, #2

    b end

r2_lower:

    mov r0, #2

    b end


addr_of_t1: .word t1

addr_of_t2: .word t2

addr_of_max: .word max
Know the answer?
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for?
Ask your own homework help question
Similar Questions
Write an ARM assembly language program that counts the number of 1’s for any value in...
Write an ARM assembly language program that counts the number of 1’s for any value in R0. The program must assemble/compile in KEIL and must be able to run in the KEIL simulator. Generally, R0 may contain any value, but for purpose of this exercise, you may move 0x2345ABCD into R0. The number in R0 does not need be preserved. You may use any other registers as you need. The result, total count of 1’s in R0, should be in...
My assignment is listed below. I already have the code complete, but I cannot figure out...
My assignment is listed below. I already have the code complete, but I cannot figure out how to complete this portion: You must create a makefile to compile and build your program. I can't figure out if I need to create a makefile, and if I do, what commands do I use for that? Create a  ContactInfo class that contains the following member variables: name age phoneNumber The ContactInfo class should have a default constructor that sets name = "", phoneNumber...
In MPLAB XIDE create a program using assembly to produce three different LED combinations using 4...
In MPLAB XIDE create a program using assembly to produce three different LED combinations using 4 LED lights and 4 switches that correspond to each LED. There will be 4 inputs and 4 outputs. The program includes three levels (the three LED combinations). Each level will be a random combination (i.e. red, blue, green, orange). The player will then repeat the combinations as accurately as possible. If the player repeats the led sequence correctly, the code will branch to the...
Lab 2 Write a C program that runs on ocelot for a mini calculator using only...
Lab 2 Write a C program that runs on ocelot for a mini calculator using only the command line options. You must use getopt to parse the command line. The calculator will only do addition, subtraction, multiplication, division, and a power of 2. Usage: minicalc [-a num] [-d num] [-m num] [-s num] [-x] value • The variable value is the starting value. • Value should be validated to be an integer between 1 and 50 inclusive. Error message and...
For this lab assignment you will need to write some code and create some graphs. You...
For this lab assignment you will need to write some code and create some graphs. You may use excel to create your graphs, or other language of your choice. Your data needs to demonstrate the experimental running time for Selection Sort (code in book), Merge Sort (code in book), and the Arrays.sort() method. Here is a basic outline of how you need to code this assignment. 1) Create several arrays of size 100, 1000, 10000, 100000, 1000000, … (you need...
C++. Write a program that draws a rocket shape on the screen based on user input...
C++. Write a program that draws a rocket shape on the screen based on user input of three values, height, width and stages. The type of box generated (i.e.. a hollow or filled-in) is based on a check for odd or even values input by the user for the box height (or number of rows). Here is the general specification given user input for the height of the box..... Draw a hollow box for each stage if the value for...
You can complete this assignment individually or as a group of two people. In this assignment...
You can complete this assignment individually or as a group of two people. In this assignment you will create a ​​Sorted Singly-Linked List​ that performs basic list operations using C++. This linked list should not allow duplicate elements. Elements of the list should be of type ‘ItemType’. ‘ItemType’ class should have a private integer variable with the name ‘value’. Elements in the linked list should be sorted in the ascending order according to this ‘value’ variable. You should create a...
Consider the C program (twoupdate) to demonstrate race condition. In this assignment, we will implement Peterson's...
Consider the C program (twoupdate) to demonstrate race condition. In this assignment, we will implement Peterson's algorithm to ensure mutual exclusion in the respective critical sections of the two processes, and thereby eliminate the race condition. In order to implement Peterson's Algorithm, the two processes should share a boolean array calledflagwith two components and an integer variable called turn, all initialized suitably. We will create and access these shared variables using UNIX system calls relating to shared memory – shmget,...
Implement and demonstrate a disk-based buffer pool class based on the LRU buffer pool replacement strategy....
Implement and demonstrate a disk-based buffer pool class based on the LRU buffer pool replacement strategy. Disk blocks are numbered consecutively from the beginning of the file with the first block numbered as 0. Assume that blocks are 4096 bytes in size. Use the supplied C++ files to implement your LRU Buffer Pool based on the instructions below. • Implement a BufferBlock class using the supplied BufferBlockADT.h o Your Buffer Block must inherit BufferBlockADT or you will not get credit...
I NEED TASK 3 ONLY TASK 1 country.py class Country:     def __init__(self, name, pop, area, continent):...
I NEED TASK 3 ONLY TASK 1 country.py class Country:     def __init__(self, name, pop, area, continent):         self.name = name         self.pop = pop         self.area = area         self.continent = continent     def getName(self):         return self.name     def getPopulation(self):         return self.pop     def getArea(self):         return self.area     def getContinent(self):         return self.continent     def setPopulation(self, pop):         self.pop = pop     def setArea(self, area):         self.area = area     def setContinent(self, continent):         self.continent = continent     def __repr__(self):         return (f'{self.name} (pop:{self.pop}, size: {self.area}) in {self.continent} ') TASK 2 Python Program: File: catalogue.py from Country...