In: Computer Science
Question 1)
Given the byte value:
0xad
a) What is the equivalent decimal notation as an unsigned value?
b_ What is the equivalent decimal notation as a signed value?
Question 2)
Below are integer values and the location where each is stored,
which may be an address in memory or a register:
Value    Location
0xc       0x130
0x82     0x134
0x5       %rdi
0x134    %rsi
What are the values of the following operands? You may answer in
decimal or hexadecimal, but if you answer in hexadecimal, you must
use the "0x" prefix:
Operand:
a) %rsi
b) (%rsi)
c) 20(%rsi,%rdi,4)
Question 3)
Assume that a variable "x" exists and its address is stored in
%rdx.
For each specification below, write an assembly instruction that
copies the value of variable "x" to the %rax/eax register.
a. Data type of "x": unsigned int
b. Data type of "x": unsigned long
Question 4)
Below are values that are stored in memory or registers, as
noted:
value    address/register
0x11     0x130
0x13     0x138
0xab     0x140
0xff    0x148
0x138   %rsi
0x3     %rcx
0x1       %rdx
Compute the result, in hexadecimal, of each of the following
assembly instructions and note the location where each result will
be stored:
subq %rcx, 8(%rsi)
a) Result (answer below):
b) Location:
incq %rdx
a) Result (answer below):
b) Location:
1)
Hexadecimal     Binary
    0           0000
    1           0001
    2           0010
    3           0011
    4           0100
    5           0101
    6           0110
    7           0111
    8           1000
    9           1001
    A           1010
    B           1011
    C           1100
    D           1101
    E           1110
    F           1111
Use this table to convert from hexadecimal to binary
Converting AD to binary
A => 1010
D => 1101
So, in binary 0xAD is 10101101
a)
=> 10101101
=> 1x2^7+0x2^6+1x2^5+0x2^4+1x2^3+1x2^2+0x2^1+1x2^0
=> 1x128+0x64+1x32+0x16+1x8+1x4+0x2+1x1
=> 128+0+32+0+8+4+0+1
=> 173
Answer: 173
b)
since left most bit is 1, this number is negative number.
so, follow these steps below to convert this into a decimal value.
I. first flip all the bits. Flip all 0's to 1 and all 1's to 0.
   10101101 is flipped to 01010010
II. Add 1 to above result
01010010 + 1 = 01010011
III. Now convert this result to decimal value
=> 1010011
=> 1x2^6+0x2^5+1x2^4+0x2^3+0x2^2+1x2^1+1x2^0
=> 1x64+0x32+1x16+0x8+0x4+1x2+1x1
=> 64+0+16+0+0+2+1
=> 83
Answer: -83
