Question

In: Computer Science

Write an MSP430 assembly language program that implements the following algorithm: a macro called "vdot" that...

Write an MSP430 assembly language program that implements the
following algorithm:
a macro called "vdot" that calculates the "dot product" of two vectors "a" and "b",
implemented as “arrays” (following the “C” language convention), of 3
elements. the macro should receive 2 pointers to the first element of each vector and
return the result in R13.

I have another file where I save my vectors called, "vars.c" here I save:

int a[] = { 14, 65, 9}

int b[] = {72,51, 22}

Solutions

Expert Solution

Hi

PROGRAM

__gthread_key_delete(int):

PUSHM.W #1, R4

MOV.W R1, R4

SUB.W #2, R1

MOV.W R12, -2(R4)

MOV.B #0, R12

ADD.W #2, R1

POPM.W #1, r4

RET

.LC0:

.string "Vector A : "

.LC1:

.string " "

.LC2:

.string "\nVector B : "

.LC3:

.string "\nDot Product : "

main:

PUSHM.W #1, R4

MOV.W R1, R4

SUB.W #16, R1

MOV.W #3, -10(R4)

MOV.W #-5, -8(R4)

MOV.W #4, -6(R4)

MOV.W #2, -16(R4)

MOV.W #6, -14(R4)

MOV.W #5, -12(R4)

MOV.W #0, -2(R4)

MOV.W #0, -4(R4)

.L5:

MOV.B #2, R12

CMP.W -4(R4), R12 { JL .L4

MOV.W -4(R4), R12

ADD.W R12, R12

ADD.W R4, R12

ADD.W #-10, R12

MOV.W @R12, R14

MOV.W -4(R4), R12

ADD.W R12, R12

ADD.W R4, R12

ADD.W #-16, R12

MOV.W @R12, R12

MOV.W R12, R13

MOV.W R14, R12

CALL #__mspabi_mpyi

ADD.W R12, -2(R4)

ADD.W #1, -4(R4)

BR #.L5

.L4:

MOV.W #.LC0, R13

MOV.W #_ZSt4cout, R12

CALL #_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

MOV.W -10(R4), R13

CALL #_ZNSolsEi

MOV.W #.LC1, R13

CALL #_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

MOV.W -8(R4), R13

CALL #_ZNSolsEi

MOV.W #.LC1, R13

CALL #_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

MOV.W -6(R4), R13

CALL #_ZNSolsEi

MOV.W #.LC2, R13

MOV.W #_ZSt4cout, R12

CALL #_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

MOV.W -16(R4), R13

CALL #_ZNSolsEi

MOV.W #.LC1, R13

CALL #_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

MOV.W -14(R4), R13

CALL #_ZNSolsEi

MOV.W #.LC1, R13

CALL #_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

MOV.W -12(R4), R13

CALL #_ZNSolsEi

MOV.W #.LC3, R13

MOV.W #_ZSt4cout, R12

CALL #_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

MOV.W -2(R4), R13

CALL #_ZNSolsEi

MOV.W #_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_, R13

CALL #_ZNSolsEPFRSoS_E

MOV.B #0, R12

ADD.W #16, R1

POPM.W #1, r4

RET

__static_initialization_and_destruction_0(int, int):

PUSHM.W #1, R4

MOV.W R1, R4

SUB.W #4, R1

MOV.W R12, -2(R4)

MOV.W R13, -4(R4)

CMP.W #1, -2(R4) { JNE .L9

CMP.W #-1, -4(R4) { JNE .L9

MOV.W #_ZStL8__ioinit, R12

CALL #_ZNSt8ios_base4InitC1Ev

MOV.W #__dso_handle, R14

MOV.W #_ZStL8__ioinit, R13

MOV.W #_ZNSt8ios_base4InitD1Ev, R12

CALL #__cxa_atexit

.L9:

NOP

ADD.W #4, R1

POPM.W #1, r4

RET

_GLOBAL__sub_I_main:

PUSHM.W #1, R4

MOV.W R1, R4

MOV.W #-1, R13

MOV.B #1, R12

CALL #__static_initialization_and_destruction_0(int, int)

POPM.W #1, r4

RET

I hope this will solve your problem.

Please do upvote for my efforts.


Related Solutions

Write an MSP430 assembly language program that implements the following algorithm: a subroutine, called 'numadd' that...
Write an MSP430 assembly language program that implements the following algorithm: a subroutine, called 'numadd' that sums up all the numeric characters present in a phrase ("string" that follows the "C" language convention). By For example, if the phrase is "Today is the 28th of month 9", the subroutine must perform the following sum: 2 + 8 + 9 = 19. The subroutine must receive the address of the first character of the corresponding phrase in the "stack", and return...
Write an MSP430 assembly language program that implements the following algorithm: a subroutine, called ‘numadd’ that...
Write an MSP430 assembly language program that implements the following algorithm: a subroutine, called ‘numadd’ that sums up all the numeric characters present in a sentence (“string” that follows the “C” language convention). For example, if the phrase is "Today is the 21st of month 5", the subroutine must perform the following sum: 2 + 1 + 5 = 8. The subroutine must receive the address of the first character of the corresponding phrase in the " stack ”, and...
Write an MSP430 assembly language program that implements the following 2 algorithms: 2) a macro called...
Write an MSP430 assembly language program that implements the following 2 algorithms: 2) a macro called "vdot" that calculates the "dot product" of two vectors "a" and "b", implemented as “arrays” (following the “C” language convention), of 3 elements. the macro should receive 2 pointers to the first element of each vector and return the result in R13.
language assembly msp430: a macro called "vdot" that calculates the "dot product" of two vectors "a"...
language assembly msp430: a macro called "vdot" that calculates the "dot product" of two vectors "a" and "b", implemented as "arrays" (following the language convention "C"), of 3 elements. the macro must receive 2 pointers to the first element of each vector and return the result in R13.
Write a MIPS assembly language program that implements the following pseudo-code operation: result = x +...
Write a MIPS assembly language program that implements the following pseudo-code operation: result = x + y – z + A[j] x and y should be in reserved memory words using the .word directive and labeled as x and y. Initialize x=10 and y=200. Read in z from the console. Input the value -8. This is the value for z, not for –z. Store this value in memory with the label z. To begin, you could just initialize z to...
Write an assembly program for the MSP430 to calculate the number of zeros and ones in...
Write an assembly program for the MSP430 to calculate the number of zeros and ones in an array. If the number of zeros is more than the number of ones, the red LED(connected to P1.0 on the MSP430 launchpad) will turn on. Otherwise, the green LED (connected to P1.6 on the MSP430 launchpad) will turn on.
Create a program called DualPivotQuickSort.java that implements the QuickSort algorithm using Yaroslavskiy’s algorithm. The program should...
Create a program called DualPivotQuickSort.java that implements the QuickSort algorithm using Yaroslavskiy’s algorithm. The program should be able to do the following: accepts one command line parameter. The parameter specifies the path to a text file containing the integers to be sorted. The structure of the file is as follows: There will be multiple lines in the file (number of lines unknown). Each line will contain multiple integers, separated by a single whitespace. reads the integers from the text file...
Write a program in C language that implements the logic of Binary Trees with the following...
Write a program in C language that implements the logic of Binary Trees with the following requirements: 1- Elements of the tree should be read from the user. 2- Keep the binary tree heigh-balanced that is the absloute value of ((hight of left sub-tree) - ( height of right sub-tree)) should not be greater than 1. If so, then the binary tree is no longer balanced. Hint: The best approach is to maintain balance during insertion. *Remember, we are talking...
please write a C program that implements Quick Sort algorithm.
please write a C program that implements Quick Sort algorithm.
Q1: A. WRITE AN ASSEMBLY LANGUAGE PROGRAM TO EXCHANGE 16-BIT NUMBERS B. WRITE AN ASSEMBLY LANGUAGE...
Q1: A. WRITE AN ASSEMBLY LANGUAGE PROGRAM TO EXCHANGE 16-BIT NUMBERS B. WRITE AN ASSEMBLY LANGUAGE PROGRAM TO SOLVE THE EQUATION Z=A+B-(C/D)+E please write the answer separately part A its own code and part B its own code this is microprocessor the ASSEMBLY LANGUAGE emu8086 should be written like this EX: mov ax,100h mov bx,200h etc
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT