Question

# Write a program using PIC24 instructions yo add three 8-bit numbers stored in the successive memory...

Write a program using PIC24 instructions yo add three 8-bit numbers stored in the successive memory locations starting from 0x0800. Store the result in the memory lpcation 0x0855.

Theory:

• PIC usually is a family of microcontrollers made by Microchip Technology, derived from the PIC 1650 originally developed by the General Instruments Microelectronics Division.
• Program memory and data memory are separated. Data memory is 8-bit, 16-bit and in the latest models, 32-bit wide. Program instructions vary in bit-count by family of PIC and maybe 12, 14, 16 or 24 bits long. The instructions sets also vary by model with more powerful chips adding instructions for digital signal processing functions.
• PIC24 MCU has two ADD instructions with two operands and one ADD instruction with three operands. These ADD instructions are designed to perform 8-bit additions. The execution of the result of the ADD instructions will effect all flag bits of the status register.
• The three-operand ADD instruction will be needed in performing multibyte ADD operations. For an 8-bit MCU, a multibyte addition is also called a multiprecision addition.
• A multiprecision addition must be performed from the least significant byte toward the most significant byte, just like numbers are added from the least significant digit toward the most significant digit.
• When dealing with multibyte numbers, there is an issue regarding how the number is stored in memory. If the least significant byte of the number is stored at the lowest address, then the byte order is called little-endian. Otherwise, the byte order is called a big-endian.

_________________________________________________________________________________________

Solution:

The algorithm for adding three numbers as - follows:

Step 1:

Load the number stored in 0x25 into the WREG register.

Step 2:

Add the number stored at 0x35 and the number in the WREG register and the lower the sum in the WREG register.

Step 3:

Add the number stored at 0x45 and the number in the WREG register and leave the sum in the WREG register.

Step 4:

Store the contents of the WREG register in the memory location at 0x55.

The program that implements this algorithm is as follows:

ORG 0x00

GOTO START

ORG 0x0800

RETFIE

ORG 0x24

RETFIE

START MOVF 0x25, W, A   ; copy the contents of 0x25 to WREG

ADDWF 0x35, W, A ; add the value in 0x35 to that of WREG

ADDWF 0x45, W, A ; add the value in 0x45 to that of WREG

MOVWF 0x55, A ; save the sum in memory location 0x55.

END

#### Earn Coins

Coins can be redeemed for fabulous gifts.

Similar Homework Help Questions
• ### Write a program to add the 32-bit numbers stored at data memory locations 0x200~0x203 and 0x204~0x207,...

Write a program to add the 32-bit numbers stored at data memory locations 0x200~0x203 and 0x204~0x207, respectively, and store the sum at 0x208~0x20B.

• ### Write a program that will add two numbers stored in memory (you can write any values...

Write a program that will add two numbers stored in memory (you can write any values in any section of memory you like). Subtracts 2 from that number, then displays the result to the screen before moving the result to memory for long term storage. Include memory map, instructions and a data example to show that it works. Create this by using the following list of instruction

• ### Add two 16-bit numbers stored in Data 1 and Data 2 using the 8-bit addition instructions....

Add two 16-bit numbers stored in Data 1 and Data 2 using the 8-bit addition instructions. The result is to be stored in Data 3. Do this using add-with-carry to demonstrate the algorithm used for multiple-byte arithmetic.

• ### Write a program using the LOOP instruction to sum all the even numbers from 20H to...

Write a program using the LOOP instruction to sum all the even numbers from 20H to 80H. Write a program using the ADC (or add with carry) instruction to add these two 48 bit numbers. Assume the first number is store at an address starting 400H and that the second number is stored at an address starting at address 500H. Store the results in memory starting at address 600H. (Note that each number consists of three 16 bit words). Show...

• ### using mips for assembly language WPte a program that asks the user for 2 numbers. the program should then add the 2 numbers bit by bit, using boolean operators no arithmetic operations ex: add, ad...

using mips for assembly language WPte a program that asks the user for 2 numbers. the program should then add the 2 numbers bit by bit, using boolean operators no arithmetic operations ex: add, addi, sub, mult, div or arrays are permitted in this project. forming a new variable (in a register) with the solution. That solution is to be output bit by bit using the function that was written in class do not use syscall with a value 10...

• ### PROGRAMMING ASSIGNMENT: Write a fully-commented program for the HC12 board, including appropriate directives and labels for...

PROGRAMMING ASSIGNMENT: Write a fully-commented program for the HC12 board, including appropriate directives and labels for memory operands and constants. The program should do the following: • The program should start execution at address \$2000. • Use directives to create an array of N=20 unsigned 8-bit decimal values: 15,20,14,13,17,9,10,5,18,7,19,8,1,3,4,11,2,6,12,16 stored in contiguous memory at locations start at \$1000. • Sort given numbers in a descending order. • Store sorted numbers at memory locations starting from \$1000. *assembly programming language*

• ### 1. A system with a word length of 32-bit and byte-addressable memory has ten consecutive 32-bit...

1. A system with a word length of 32-bit and byte-addressable memory has ten consecutive 32-bit signed numbers stored starting from memory location NUM. Write a RISC-style program to count the number of positive numbers in it and store the count in location COUNT.

• ### Write an Intel 8085 assembly program to find the largest of N numbers stored in memory...

Write an Intel 8085 assembly program to find the largest of N numbers stored in memory using the algorithm below. Hand trace (execute) the program showing the changes made to all affected registers and memory locations. Max = a(1) For i = n to N If max < a(i) then max = a(i) Next i It is important for me to see the Hand Trace so i can understand the program. With out the trace the answer is incomplete.

• ### E2.15 In assembly code, write a program to count the number of elements in an array...

E2.15 In assembly code, write a program to count the number of elements in an array that are smaller than 16. The array is stored at memory locations starting from \$1010. The array has 30 8-bit unsigned elements. Store the count in the memory location \$C001.

• ### The AVR provides a rich instruction set to support high-level languages. The AVR address- ing modes...

The AVR provides a rich instruction set to support high-level languages. The AVR address- ing modes also simplify the access of complex data structures. The AVR has a version of the ADD instruction that includes the C flag as one of the source operands, which enables multiple- precision addition operation. The AVR also has a version of the SUB instruction that includes the C flag as one of source operands and hence is used to perform multiprecision subtraction operation. The...