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;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.