Question 1 [20]
(a) The following table reflects the memory contents of a part of memory in a one address
machine with an accumulator:
Address Contents
300 320
305 310
310 310
315 325
320 305
325 300
LOAD DIRECT 300
LOAD DIRECT 300: Direct addressing. The instruction contains the address where the value is
to found. Address 300 contains the value 320, thus the value 320 will be loaded into the
accumulator.
LOAD DIRECT 320
LOAD DIRECT 320: Direct addressing. The instruction contains the address where the value is
To found. Address 320 contains the value 305, thus the value 305 will be loaded into the
accumulator.
LOAD INDIRECT 325
LOAD INDIRECT 325: Indirect addressing. The instruction contains the address where the
address of the value to be used, is to be found. Address 325 contains the address of the value to
be used, ie address 300. Address 300 contains 320, thus the value 320 will be loaded into the
accumulator.
(b) Give examples of x86 instructions in which the following addressing modes are used:
, Immediate addressing
mov al,3
Direct addressing
mov al,[temp]
Stack addressing Indexed addressing Base-addressing
push ax (pop ax)
Register indirect addressing
mov al,[bp] (mov al,[si], mov [di],al)
Question 2 [50]
Assembly language programming:
Write a program in assembly language to read a number entered by the user. The program
should display an enlarged version of a given number on the screen. The program should
do the following:
Clear the screen and change the screen colour to yellow on blue.
Change the cursor position to row 10, column 0.
Prompt the user to key in an upper case letter (A - E). Read the letter from the keyboard.
Test whether the number is in range (A,…, E). Display an error message if the letter is out
of range and terminate the program.
Display an enlarged version of the letter on the screen.
Example: If the user enters B, the following pattern is displayed:
Enlarged letter Bit pattern Hex number Line number