For this assignment you will create a C program that includes inline assembly co
ID: 3789034 • Letter: F
Question
For this assignment you will create a C program that includes inline assembly code. Your code should do the following:
Query the user for a 32-bit integer, saving the integer into an appropriate C variable. Use assembly code to copy the value into another C variable.
Query the user for a 16-bit variable saving the value into an appropriate C variable. Use assembly code to copy the value into another 16-bit C variable.
Query the user for an 8-bit character saving the value into an appropriate C variable. Use assembly code to copy the value into another 8-bit variable.
Copy the 8-bit value entered in step 3 into the lower 8-bit portion of the copied-to variable used in step 1 (using assembly).
Print the results of each of the above steps (using printf in your C code).
Explanation / Answer
#include <stdint.h>
#include<stdio.h>
int main()
{
int n0 , val1 ;
int16_t n1 , val2 ;
char ch, cval;
printf("enter 32bit number ");
scanf("%d",&n0);
asm ("movl %1, %%ebx;"
"movl %%ebx, %0;"
: "=r" ( val1 ) /* output */
: "r" ( n0 ) /* input */
: "%ebx" /* clobbered register */
);
printf("val =%d",val1);
printf(" enter 16bit number ");
scanf("%d",&n1);
asm ("movw %1, %%ax;"
"movw %%ax, %0;"
: "=r" ( val2 ) /* output */
: "r" ( n1 ) /* input */
: "%ax" /* clobbered register */
);
printf("val 2 =%d",val2);
printf(" enter char ");
scanf("%c",&ch);
asm ("movb %1, %%dl;"
"movb %%dl, %0;"
: "=r" ( cval ) /* output */
: "r" ( ch ) /* input */
: "%dl" /* clobbered register */
);
printf("character =%c",cval);
return 0;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.