Question

In Assembly language for MSP430: Create a subrutine called ‘numadd’ that add every numeric character present...

In Assembly language for MSP430:

Create a subrutine called ‘numadd’ that add every numeric character present in a phrase (“string” that follows the convention of the C language). For Example, If the phrase says: “Today is the day 15 of quarantine of the month 8”, the subroutine needs to do the following sum: 1+5+8 = 14. The subroutine needs to receive the direction of the first character of the phrase corresponding in the “stack” and return the result in the register R4.

Homework Answers

Answer #1

Please give positive ratings for my effort. Thanks.

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 "today is the day 15 of quarantine of the month 8"

.LC1:

        .string "Result : "

main:

        PUSHM.W #1, R10

        PUSHM.W #1, R4

        MOV.W   R1, R4

        SUB.W   #26, R1

        MOV.W   R4, R12

        ADD.W   #-5, R12

        CALL    #_ZNSaIcEC1Ev

        MOV.W   R4, R13

        ADD.W   #-5, R13

        MOV.W   R4, R12

        ADD.W   #-26, R12

        MOV.W   R13, R14

        MOV.W   #.LC0, R13

        CALL    #_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EPKcRKS3_

        MOV.W   R4, R12

        ADD.W   #-5, R12

        CALL    #_ZNSaIcED1Ev

        MOV.W   #0, -2(R4)

        MOV.W   #0, -4(R4)

.L9:

        MOV.W   R4, R12

        ADD.W   #-26, R12

        CALL    #_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv

        MOV.W   R12, R13

        MOV.W   -4(R4), R14

        MOV.B   #1, R12

        CMP.W   R13, R14 { JLO        .L4

        MOV.B   #0, R12

.L4:

        AND     #0xff, R12

        CMP.W   #0, R12 { JEQ .L5

        MOV.W   -4(R4), R13

        MOV.W   R4, R12

        ADD.W   #-26, R12

        CALL    #_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj

        MOV.B   @R12, R12

        MOV.B   #47, R13

        CMP.B   R12, R13 { JHS        .L6

        MOV.W   -4(R4), R13

        MOV.W   R4, R12

        ADD.W   #-26, R12

        CALL    #_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj

        MOV.B   @R12, R12

        MOV.B   #57, R13

        CMP.B   R12, R13 { JLO        .L6

        MOV.B   #1, R12

        BR      #.L7

.L6:

        MOV.B   #0, R12

.L7:

        CMP.W   #0, R12 { JEQ .L8

        MOV.W   -4(R4), R13

        MOV.W   R4, R12

        ADD.W   #-26, R12

        CALL    #_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEj

        MOV.B   @R12, R12

        ADD.W   #-48, R12

        ADD.W   R12, -2(R4)

.L8:

        ADD.W   #1, -4(R4)

        BR      #.L9

.L5:

        MOV.W   #.LC1, R13

        MOV.W   #_ZSt4cout, R12

        CALL    #_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc

        MOV.W   -2(R4), R13

        CALL    #_ZNSolsEi

        MOV.B   #0, R10

        MOV.W   R4, R12

        ADD.W   #-26, R12

        CALL    #_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev

        MOV.W   R10, R12

        BR      #.L15

        MOV.W   R12, R10

        MOV.W   R4, R12

        ADD.W   #-5, R12

        CALL    #_ZNSaIcED1Ev

        MOV.W   R10, R12

        CALL    #_Unwind_Resume

        MOV.W   R12, R10

        MOV.W   R4, R12

        ADD.W   #-26, R12

        CALL    #_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev

        MOV.W   R10, R12

        CALL    #_Unwind_Resume

.L15:

        ADD.W   #26, R1

        POPM.W  #1, r4

        POPM.W  #1, r10

        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      .L18

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

        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

.L18:

        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

IMAGE OF PROGRAM

IMAGE OF OUTPUT

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
ADVERTISEMENT
Need Online Homework Help?

Get Answers For Free
Most questions answered within 1 hours.

Ask a Question
ADVERTISEMENT