All questions in this test are related to the X86 Assembly Language.
[01] Convert (234.5625)10 to IEEE754 single precision. If any, trailing ‘0's can be ignored.
[02] Convert the following C++ code fragment to x86 assembly code:
float f1[8] = {1,2,3,4,5,6,7,8};
float sum=0;
int i=0;
while(sum<=20){
sum+=f1[i++];
}
cout << i << endl;
[03] For Question [02], using stack frame principles, write a function that accepts float array and its size as two arguments and returns the index ‘i' as the results. This version, use CALL/PROC technique.
[04] Repeat Question [03] by implementing the function using PROTO/INVOKE method.
[05] Repeat Question [03] by implementing the function as a Macro.
[06] Given a structure type of "Product" with the fields string name, int id and float price. Define an array of Product type, initialize all elements to an arbitrary instance, write a code fragment to print all fields of each Product in the array.
[07] Convert the given C++ code fragment to x86 assembly code.
int a = 1234;
int b = 4321;
int c = b/a + a%b;
if(a*b>100000)
c=1;
else
c=0;
[08] Find the final binary and hex value of EAX for the following code fragment:
mov eax, 01233210h
mov ebx, 10101010h
shl eax, 2
shr eax, 1
shrd eax, ebx, 2
test eax, eax
rol eax, 4
[09] Find four different ways to reset eax other than "mov eax, 0"
[10] Implement the given pseudo code:
For( each bit B in int X){
If(B)
Print "|"
Else
Print "_"
}
[11] Write a function that accepts a char array, its size and a char to search for in the given array. Use PROTO, INVOKE and LOCAL keywords.
[12] In numeral systems context, define "Weighted Positional System" mathematically by writing its formula that converts any system (base b) to decimal.
[13] Given a hypothetical computer with a CPU speed = 2.4GHz and RAM capacity - 8GB. Answer the following:
1. If the MUL instruction requires 100 clock cycles, ideally speaking, how many MUL operations can this system perform in 4 seconds.
2. Compute number of lines in the address bus required so that the CPU can access all memory locations in the given RAM.