Tutorial questions based on the section covered on "Introduction to Assembly Language – Basic Computer
Architecture":
1.1. BASIC COMPUTER ARCHITECTURE (Address, Data, and Control Buses)
Tutorial Questions
1. Define the three primary types of buses used in a computer system and describe their roles.
2. Why is the address bus unidirectional while the data bus is bidirectional?
3. Explain the analogy of the uneducated servant and the book in context of computer buses. What does each part
represent?
4. What would happen if there was no clear read or write signal sent to the memory? Why is this distinction
important?
5. How do cell width and number of memory cells define a memory module? Give an example.
6. Why must the memory cell width not exceed the data bus width? What could go wrong otherwise?
7. Describe how the control bus helps in synchronization between the processor and the memory.
8. Give a real-life example (other than the servant analogy) that illustrates the need for synchronization in
communication.
9. What is the role of the processor in generating control signals, and why can’t memory or I/O devices initiate
these signals?
10. Why is the control bus bidirectional even though the processor initiates most communication? Give a scenario
to justify.
1.2. REGISTERS
Tutorial Questions
1. Why are registers used in processors when performing operations that require more than one operand?
2. What is the difference between memory and registers in terms of availability and efficiency?
3. What are the different naming conventions used by manufacturers for registers, and why are they necessary?
4. Explain the function of the accumulator and how it relates to the word size of a processor.
5. Describe the role of an index register and provide a real-world programming example where it would be used.
6. What is a flags register (or program status word), and how is it different from other registers?
7. Why is the carry flag important in arithmetic operations? Give a scenario to illustrate.
8. What is the purpose of the program counter (or instruction pointer)? How does it help maintain program flow?
9. Define the term “opcode.” How does it relate to instruction mnemonics?
10. What is an assembler, and what role does it play in converting human-readable code to machine code?
1.3. INSTRUCTION GROUPS
Tutorial Questions
1. What are the four major groups of instructions commonly found in every processor's
instruction set?
2. Why do the mnemonics for the same operations vary between different processor manufacturers?
3. Give two examples of data movement instructions and explain what they do.
4. What is the purpose of arithmetic and logic instructions in a processor? Provide two examples.
5. Explain the meaning of the instruction: add bx, [1200].
6. What is the main function of program control instructions?
7. Interpret the following instruction pair: cmp ax, 0 followed by jne 1234.
8. What are special instructions and when are they typically used?
9. What do the instructions cli and sti do, and how are they related?
10. How does categorizing instructions into groups help in learning new processors or architectures?
1.4. INTEL IAPX88 ARCHITECTURE
Tutorial Questions – Intel iAPX88 Architecture
1. What does "iAPX88" stand for in Intel's processor naming?
2. Which Intel processor was used in the very first IBM PC machines?
3. Why is the Intel 8088 architecture commonly used in teaching assembly language?
4. What is the bit size of the Intel 8088 processor? What does this mean for its registers?
5. What is the key difference between the 8088 and the iAPX386 processor in terms of word size?
6. What does it mean that the iAPX386 is "downward compatible" with the 8088?
7. Define the term “processor architecture” in the context of this discussion.
8. In what way are the concepts discussed using the 8088 architecture applicable to other processors?
9. What will be the focus of the second half of the course after learning about the 8088?
10. How does the use of the 8088 processor help in transitioning to more advanced processors like the
386?
1.5 HISTORY
Tutorial Questions
1. What was Intel's first meaningful processor and why did it gain popularity?
2. Which processor was developed based on the experience gained from the Intel 8080, and what were its
key advantages?
3. 8085 become popular among the engineering community?
4. What was Intel’s first 16-bit processor, and what significance did it have in the evolution of personal
computing?
5. How much memory could the Intel 8085 and Intel 8088 address, respectively?
6. Which major company adopted the Intel 8088 in their personal computers, and what was the initial
clock speed of those machines?
7. Why was the IBM PC XT considered a huge success in the computing world?
8. What factors contributed to the unexpected long-term success of the Intel 8088 architecture?
9. What design feature in the Intel 8088 reflected the developers’ underestimation of the processor’s
longevity?
10. What does the continued presence of the Intel 8088 architecture in modern computing systems
indicate about early processor design decisions?
1.6. REGISTER ARCHITECTURE
Tutorial Questions and Answers
1. What does the 'X' stand for in the register names AX, BX, CX, and DX?
2. How is the AX register structured, and what is its special role?
3. What are the specific roles of BX, CX, and DX registers in Intel architecture?
4. What are the roles of SI and DI registers, and can they be broken into 8-bit pairs?
5. What is the function of the Instruction Pointer (IP) register?
6. What is the difference between the Stack Pointer (SP) and Base Pointer (BP)?
7. Why is the FLAGS register considered significant on a bit-wise level?
8. What is the function of the Carry and Auxiliary Carry flags?
9. What does the Zero (Z) flag indicate in the FLAGS register?
10 What do the Direction (D) and Overflow (O) flags represent?
1.7. OUR FIRST PROGRAM
Assembly Language Tutorial – Questions and Answers
1. What is the purpose of the first program introduced in the text?
2. What does the instruction mov ax, 5 do?
3. In Intel assembly language, what is the correct order of operands in an instruction?
4. What does the add ax, bx instruction do?
5. What is the purpose of mov ax, 0x4c00 followed by int 0x21?
6. What is the function of the [org 0x0100] directive?
7. What does a semicolon (;) signify in an assembly language program?
8. What is NASM?
9. What is AFD and what is it used for?
10 What command is used to assemble the file ex01.asm into a .COM file using NASM?
11. What is the purpose of the .lst file generated during assembly?
12. What does the opcode B8 signify in the listing file?
13. What is meant by “little-endian” byte order?
14. Why is 0500 used in the machine code for mov ax, 5?
15. What does the instruction int 0x21 do in a .COM program?
16. What register changes occur when stepping through the addition instructions?
17. What is the significance of the IP register during program execution?
18. Why can the debugger display your assembly code from the .COM file alone?
19. Why is vertical spacing recommended in assembly programs?
20. What does an immediate operand mean in assembly language?