The document discusses the basic organization of a microcomputer system and the assembly programming process. It describes the typical components of a microcomputer like the CPU, memory, and I/O devices. It then explains the fetch-execute cycle and basic instruction set architecture. The rest of the document outlines the assembly programming environment, data types, instructions, directives, and developing simple assembly programs.
4. The Fetch-Decode-Execute Cycle
1. Get the instruction from the memory
using the address contained in PC.
2. Put the instruction into IR.
3. Increment the value in PC.
4. Decode the value in IR.
5. Execute the operation specified in the
instruction.
6. Repeat step number 1.
5. Quiz
CPU MEMORY address
CU
inst 1 001
INPUT inst 2 002
PC = ?
inst 3 003
OUTPUT IR = inst 1
... 004
ALU
7. Outline
1. Assembly Programming Environment
2. Number Systems Conversion
3. Developing Assembly Programs
8. Assembly Programming Environment
 Assembler
– a computer program for translating
assembly language (a mnemonic
representation of machine language)
into object code.
– TASM, MASM, NASM
9. Assembly Programming Environment
 Linker
– a program that combines libraries
(modules) together to form an
executable file
– TLINK, MLINK, ALINK, LD
10. Assembly Programming Environment
 Disassembler
– a computer program which translates
machine language into assembly
language, performing the inverse
operation to that of an assembler.
11. High-level PL to Executable Programs
HIGH-LEVEL LANGUAGE
(Program Code File) OBJECT CODE + LIBRARIES
COMPILER LINKER
MACHINE LANGUAGE MACHINE LANGUAGE
(Object Code File) (Executable File)
12. Assembly to Executable Programs
ASSEMBLY LANGUAGE
(Program Code File) OBJECT CODE + LIBRARIES
ASSEMBLER LINKER
MACHINE LANGUAGE MACHINE LANGUAGE
(Object Code File) (Executable File)
13. Assembly Programming Environment
32-bit Assembly Programming
 x86 machine instructions
Linux
 Use Linux services and system calls
37. Objectives
At the end of this section, we should be able
to:
 Discuss the parts of an assembly program
 Develop a simple assembly program
implementing basic input/output and other
sequential statements
38. The 32-bit Registers
 General Purpose Registers
– EAX – Accumulator
– EBX – Base
– ECX – Counter
– EDX – Data
39. The 32-bit Registers
 Segment Registers (16 bits)
– CS – Code Segment
– DS, ES, FS, GS – Data Segment
– SS – Stack Segment
 Index Registers
– ESI – Source Index
– EDI – Destination Index
40. The 32-bit Registers
 Pointer Registers
– EBP – Base Pointer
– ESP – Stack Pointer
 EIP – Instruction Pointer (a.k.a. PC)
 eFlags – Flag Registers
41. Parts of an Assembly Program
Section .data Section .text
 initialized variables  instructions
 program code
Section .bss
 unintialized
variables
42. Parts of an Assembly Program
Data Segment
Code Segment
43. Segments and Segment Registers
CS
CODE
DS
DATA
BSS USER
PROGRAM
SS STACK
SEGMENT
REGISTERS
44. Data and Data Types
High-level Programming Languages
 numeric
– signed integer
– unsigned integer
– float or real
 non-numeric
– characters and strings
– boolean
– sets
45. Data and Data Types
Computers
 only know numbers (bits)
 data types are human abstractions
 data types depend on size of data and
human interpretation
46. Instructions and Directives
Instructions
 tell processor what to do
 assembled into machine code by
assembler
 executed at runtime by the processor
 from the Intel x86 instruction set
47. Instructions and Directives
Directives
 tell assembler what to do
 commands that are recognized and
acted upon by the assembler
 not part of the instruction set
 used to declare code and data areas,
define constants and memory for storage
 different assemblers have different
directives
48. Assembler Directives
EQU directive
 defines constants
– label equ value
– count equ 100
Data definition directive
 defines memory for data storage
 defines size of data
49. Assembler Directives
Initialized Data
 db – define byte
 dw – define word
 dd – define double
– label directive initial value
– int db 0
– num dw 100
51. Assembler Directives
String constants
 single quote delimited or sequence of
characters separated by commas
 each character is one byte each
 ‘hello’
 ‘h’, ’e’, ’l’, ’l’, ’o’
– prompt1 db ‘Please enter number: ’
– prompt2 db ‘Please enter number: ’,10
57. Instruction Operands
Immediate
 character constants
– character symbols enclosed in quotes
– character ASCII code
 integer constants
– begin with a number
– ends with base modifier (B, O or H)
 ‘A’ = 65 = 41H = 01000001B
58. Instruction Operands
Memory
 when using the value of a variable,
enclose the variable name in square
brackets
 [num] - value of num
 num - address of num
59. Instruction Operands
 If the operands are registers or
memory locations, they must be of
the same type.
 Two memory operands are not
allowed in the instruction.