Part 1 of 3
A uni-processor system, having single-core, has 8 general-purpose registers. The machine has 256-byte RAM. The size of every register and memory word is 16 bits. The computer uses fixed-length instructions of size 16 bits each. An instruction of the machine can have only one operand, which can be either a direct memory operand or a register operand. Both these operands use direct addressing. An instruction of a machine consists of bits for operation code, one bit for addressing mode, and bits for memory operand or register operand. The machine has about 128 different operation codes. The addressing mode bits specifies addressing mode as:
Addressing mode bit Register Operand Memory Operand
0 - Direct
1 Direct -
Part 1 of 3
Assume that you have a machine, as shown in section 3.2.2 of Block 3 having the microoperations given in Figure 10 on page 62 of Block 3. Consider that R1 and R2 both are 8-bit registers and contain 11110000 and 00110110 respectively. What will be the values of select inputs, carry-in input, and result of the operation (including carry out bit) if the following microoperations are performed? (For each micro-operation you may assume the initial value of R1
and R2 as given above)
(i) Decrement R1
(ii) Add R1 and R2 with carry
(iii)AND R1 and R2
(iv) Shift right R1
Consider that an instruction pipeline has only three stages namely instruction fetch and
decode (IFD), Operand Fetch (OF), and Instruction execute and store results (IES). Draw and
instruction pipeline diagram showing execution of 5 sequential instructions. What are the
problems of this instruction pipelining?
Explain the following in the context of 8086 Microprocessor:
(i) Physical address calculation in code and data segment
(ii) Interrupt vector table and its use
(iii)Based Indexed addressing mode with the help of an example
Write a NEAR subroutine using 8086 assembly Language (with proper comments) that
returns the smallest byte value in a byte array of length 5-bytes. The array is declared in the
calling program and the base address of the array is passed to the subroutine in the stack. You
should write both the calling program and subroutine.
write a program emu8086 take four digit number and write it to next memory address. Consider which memory address you should be using according to the answer of the first question.
write a program on emu8086
Write a program that adds ten numbers and store the result in register AX,BX,CX,DX and DS
Write a program that adds ten numbers and store the result in register AX,BX,CX,DX and DS
Two code snippets are being presented to you.
1. mov rax, 0x1234567812345678
xor ax, 0x11
mov rdi, ax
call printf
xor rax, 0x11
mov rdi, rax
call printf
2. int x=-2;
unsigned int y = -33;
int z;
z = x + y;
printf(‘‘%u %u %u’’, x,y,z);
printf(‘‘%d %d %d’’, x,y,z);
In both the parts (1) and (2), explain what the two printf function calls
result in. Explain the reasons for any differences in the two cases.
Let us say that you have a program that uses SCHED FIFO scheduling. How
would the vruntime variable for such a program be computed or updated ?
2.How is this different from how vruntime would be updated for SCHED RR and
SCHED NORMAL ?