Question

Step 1: Create a new ASSEMBLY project using Keil Software (1) Make sure you use the M3 option St...

Step 1: Create a new ASSEMBLY project using Keil Software (1) Make sure you use the M3 option

Step 2: “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 R1 when the program ends. “ UHCL: Unwala CENG 3371Microcontroller Programming Spring 2017

Step 3: Copy the template below to your assembly file AREA Lab_10_YourFirstName_YourLastName, CODE, READONLY EXPORT __main __main LDR R0, =0x2345ABCD; This is how you assign large value to R0. MOV will NOT work! stop B stop END


Step 3: Change YourFirstName to your first name. Change YourLastName to your last name.

Step 4: You are allowed to use ONLY the instructions below: Pay attention: This is different than Lab 08!

1. LDR[*]

2. MOV[*]

3. B[*]

4. ADC[*]

5. LSR[*]

What does [*] means? This means that you may use any combination of the given instruction. Example: LDR[*] means that you may use LDR or LDRLE or LDREQ or LDRS or any other combinations.

You may use Keil ARM documentation to learn about any of the instructions listed above. http://www.keil.com/support/man/docs/armasm/armasm_dom1361289850039.htm
  
Step 5: Results: Hexadecimal: 0x2345ABCD Decimal: 591,768,525 Binary: 10 0011 0100 0101 1010 1011 1100 1101

The expected result will be 16 [Count # of 1 in the Binary Value above] R1 should be 0x00000010

Step 6: Hints. 1. The tricks in solving this lab are dealing with flags and carry! 2. You will need to use one loop 3. Use Windows Calculator to convert between hexadecimal to binary to save yourself time as shown in previous labs.

0 0
Add a comment Improve this question Transcribed image text
Answer #1

IF YOU HAVE ANY DOUBTS COMMENT BELOW I WILL BE THERE TO HELP YOU

ANSWER:

CODE:

LDR R0,=0x2345ABCD

LDR R2,=0x0

bit_count_loop:

    MOVS r0,r0,LSR #1

    ADC r1,r1,r2

    BNE bit_count_loop

Explanatiuon:-

we are just shifting the first bit of register R0 with 1 place.So,that the first bits goes to carry bit

and it will added by adc command in r1 and r2 is zero.ADC r1=r1+r2+Carry => r1=r1+Carry . BNE will check the flags set by MOVS

THANKS

Add a comment
Know the answer?
Add Answer to:
Step 1: Create a new ASSEMBLY project using Keil Software (1) Make sure you use the M3 option St...
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. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • I need help with ARM assembly program : Using the following code as basic : 1...

    I need help with ARM assembly program : Using the following code as basic : 1 ) Write a program code that is able to calculate the following : Result = A + ( B * C ) - D Place the result as the return value so you can print it afterwards in the command prompt. 2) This time, use MLA instruction to reduce the number of instructions in question 1. Place the result as the return value so...

  • You are to create a new application that will execute on your Arduino platform based upon...

    You are to create a new application that will execute on your Arduino platform based upon the Blink example that is available in the Arduino Examples folder that you downloaded as part of the IDE. Your application will use a toggle switch to interface with the user. The application will operate by controlling the LEDs based upon the position of the toggle switch. If the user moves the LEDs until new user input is provided. When the user moves the...

  • Please use Python Exercise 1 Create a program named sentinel_loop using break. This program should implement...

    Please use Python Exercise 1 Create a program named sentinel_loop using break. This program should implement functionality that is the same as the Part 1 tutorial example, except for the following differences: • • This program should count even and odd integers. This program should report counts of even and odd integers. Remember that even integers can be identified using the test condition: value % 2 == 0 Remember to test your code for appropriate behavior when the user signals...

  • Assembly language Use this portion of the program to help you answer the questions BALR R6,0 USING *.R6 L R10,FIRSTNUM L R12,NEXTNUM CR R10,R12 BC 8,BYPASS   AR R10,R12 ST R10,RESULT B PROGEND BYPASS...

    Assembly language Use this portion of the program to help you answer the questions BALR R6,0 USING *.R6 L R10,FIRSTNUM L R12,NEXTNUM CR R10,R12 BC 8,BYPASS   AR R10,R12 ST R10,RESULT B PROGEND BYPASS SR R10,R12 ST R10,RESULT PROGEND    END FIRSTNUM DC F’15 NEXTNUM . DC . F'20' RESULT . DS . F 1 /what register is being used as the base register and what value is stored at the time of assembly ? 2/ What will be stored in RESULT?...

  • You will create a new project. Type in the following program and run it to produce...

    You will create a new project. Type in the following program and run it to produce the output for the program. Good practice in writing a program in any language, including Python, is to add comments for each line and state clearly what is the program input and output. Your program must include comments, so a reader will know exactly what you are trying to do in each line of code and allow for easy maintenance. Beginning a line with...

  • 1) Echo the input: First, you should make sure you can write a program and have...

    1) Echo the input: First, you should make sure you can write a program and have it compile and run, take input and give output. So to start you should just echo the input. This means you should prompt the user for the plaintext, read it in and then print it back out, with a message such as "this is the plaintext you entered:". [4 points, for writing a working program, echoing the input and submitting the program on the...

  • LC-3 Programming Help!! The Stack Protocol The following outline is the protocol for passing arguments to...

    LC-3 Programming Help!! The Stack Protocol The following outline is the protocol for passing arguments to a function and returning values. Everything is stored on the runtime stack so that space is used only when the function is executing. As a result the actual address of arguments and locals may change from call to call. However, the layout of the stack frame (activation record) is constant. Thus, the offests from the frame pointer (FP) to the parameters/locals are constant. All...

  • Project 1. Dog Door You are asked to create a dog door for a client. You...

    Project 1. Dog Door You are asked to create a dog door for a client. You are programming the remote that will do things such as open and close, etc. You must create both the program and write a white paper explaining your design • It should open (saying "The dog door is open.") and close (saying "The dog door is closed.). • It should take into account a dog going outside and coming back in; it should open when...

  • Make sure you show all working and describe each step in your calculations. 1. A signum function ...

    signals and communications 2 Make sure you show all working and describe each step in your calculations. 1. A signum function is defined as sgn(t) = { 1、12 0 1 t<0 Plot and express this function in terms of the unit-step function. 5 marks/ Determine and plot the even and odd parts of the signal 2. x(t) (te-3 +2)u(t). 5 marks 3. If prove that y[n-m] = x[n-m] * h[n]. 5 marks 4. Assuming α > 0, plot the signal...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT