Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Turn X86 code into ARM assembly Language #include \"stdafx.h\" #include \"stdio.

ID: 3839853 • Letter: T

Question

Turn X86 code into ARM assembly Language

#include "stdafx.h"

#include "stdio.h"

#include <iostream>

char main(void)

{

   char temp;

   char r1, r2;

   short r;

   _asm

   {

       MOV BL, 'a'

       MOV BH, 'A';

       MOV r1, BL;

       MOV r2, BH;

       MOV r, BX;

   }

   printf("BH =%c, BL = %c, BX = %x ", r2, r1, r);

   printf("BH =%x, BL = %x, BX = %x ", r2, r1, r);

   _asm

   {

       MOV temp, BH;

       MOV BH, BL; //This line was added to fix the error.

       MOV r2, BL;

       MOV BL, temp;

       MOV r2, BH;

       MOV r1, BL;

       MOV r, BX;

       //find error here for swap the info between BL and BH and make necessary change

   }

   std::cout << "After swapping" << std::endl;

   printf("BH =%c, BL = %c, BX = %x ", r2, r1, r);

   printf("BH =%x, BL = %x, BX = %x ", r2, r1, r);


   system("pause");

       //getchar();

       return 0;

}

Explanation / Answer

#include "stdafx.h"
#include "stdio.h"
#include <iostream>

char main(void)
{

char temp;
char r1, r2;
short r;

_asm
{
STR       R3, [R6, #0x18]
       SBCS   R7, R6
       ADDS   R0, R1, #6
       MOVS   R0, R0
       MOVS   R0, R0
       SUBS   R5, #0x88
       MOVS   R0, R0
       MOVS   R0, R0
       LDRH   R6, [R4, #0xA]
       MOVS   R5, R3
       MOVS   R0, R0
}
printf("BH =%c, BL = %c, BX = %x ", r2, r1, r);
printf("BH =%x, BL = %x, BX = %x ", r2, r1, r);

_asm
{
SUBS   R5, #0x88
       MOVS   R0, R0
       MOVS   R0, R0
       SVC   #0x88
       ADDS   R0, R1, #6
       MOVS   R0, R0
       MOVS   R0, R0
       ADDS   R2, R1, #6
       MOVS   R0, R0
       MOVS   R0, R0
       SUBS   R5, #0x88
       MOVS   R0, R0
       MOVS   R0, R0
       ADDS   R0, R1, #6
       MOVS   R0, R0
       MOVS   R0, R0
       LDRH   R6, [R4, #0xA]
       MOVS   R5, R3
       MOVS   R0, R0
  
}
std::cout << "After swapping" << std::endl;
printf("BH =%c, BL = %c, BX = %x ", r2, r1, r);
printf("BH =%x, BL = %x, BX = %x ", r2, r1, r);


system("pause");
//getchar();
return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote