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