ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
I. INTRODUCTION
Microcomputer Systems:
Basic Computer Organization
The Basic Organization of a Microcomputer



                  CPU

                   CU

   INPUT
                 REGISTER        MEMORY
                   FILE
   OUTPUT



                   ALU
Von Neumann’s Simple Computer



                    CPU

                    CU

   INPUT       PC        MAR
                                MEMORY
               IR        MBR
   OUTPUT
                     A



                    ALU
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.
Quiz


              CPU        MEMORY   address

              CU
                         inst 1    001
  INPUT                  inst 2    002
            PC = ?
                         inst 3    003
  OUTPUT   IR = inst 1
                          ...      004



              ALU
I. INTRODUCTION

Assembly Programming Process
Outline



   1. Assembly Programming Environment

   2. Number Systems Conversion

   3. Developing Assembly Programs
Assembly Programming Environment

  Assembler
    – a computer program for translating
      assembly language (a mnemonic
      representation of machine language)
      into object code.
    – TASM, MASM, NASM
Assembly Programming Environment

  Linker
    – a program that combines libraries
      (modules) together to form an
      executable file
    – TLINK, MLINK, ALINK, LD
Assembly Programming Environment

  Disassembler
    – a computer program which translates
      machine language into assembly
      language, performing the inverse
      operation to that of an assembler.
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)
Assembly to Executable Programs


   ASSEMBLY LANGUAGE
    (Program Code File)   OBJECT CODE + LIBRARIES




         ASSEMBLER                 LINKER




   MACHINE LANGUAGE        MACHINE LANGUAGE
    (Object Code File)      (Executable File)
Assembly Programming Environment

 32-bit Assembly Programming
  x86 machine instructions

 Linux
  Use Linux services and system calls
Executing Assembly Programs

 nasm –f elf <file>.asm
  produces <file>.o

 ld -o <file> <file>.o
  produces <file>.exe

 ./<file>
  run <file>
Review

  Number Systems Conversion
Binary to Decimal



 Binary         0    0     1   0   0   1   1   0


                         Decimal
     Hex


  Decimal

            Binary
Binary to Decimal

              128 64 32 16 8           4   2   1
 Binary         0    0     1   0   0   1   1   0


                         Decimal
     Hex


  Decimal

            Binary
Binary to Decimal

              128 64 32 16 8           4   2   1
 Binary         0    0     1   0   0   1   1   0


                         Decimal       3   8
     Hex


  Decimal

            Binary
Decimal to Binary

              128 64 32 16 8         4   2   1
 Binary         0    0   0   1   1   0   0   0


                     Decimal
     Hex


  Decimal

            Binary
Decimal to Binary

              128 64 32 16 8         4   2   1
 Binary         0    0   0   1   1   0   0   0


                     Decimal         2   4
     Hex


  Decimal

            Binary
Binary to Decimal

              128 64 32 16     8 4   2   1
 Binary



                     Decimal    5    7
     Hex


  Decimal

            Binary
Binary to Decimal

              128 64 32 16       8 4     2   1
 Binary         0    0   1   1   1   0   0   1


                     Decimal         5   7
     Hex


  Decimal

            Binary
Decimal to Binary

              128 64 32 16 8 4           2   1
 Binary         1    0   0   0   0   0   1   1


                 Decimal
     Hex


  Decimal

            Binary
Decimal to Binary

              128 64 32 16 8 4               2   1
 Binary         1    0   0   0   0   0       1   1


                 Decimal         1       3
     Hex                                         1
  Decimal

            Binary
Decimal to Binary

              128 64 32 16   8 4       2   1
 Binary



                 Decimal     1     5
     Hex                                   0
  Decimal

            Binary
Decimal to Binary

              128 64 32 16       8 4         2   1
 Binary         1    0   0   1   0   1       1   0


                 Decimal         1       5
     Hex                                         0
  Decimal

            Binary
Binary to Hexadecimal



 Binary         0     0   1   0    0   1   1   0


                     Hexadecimal
     Hex


  Decimal

            Binary
Binary to Hexadecimal

                8     4   2   1    8   4   2   1
 Binary         0     0   1   0    0   1   1   0


                     Hexadecimal
     Hex


  Decimal

            Binary
Binary to Hexadecimal

                8     4   2   1    8   4       2   1
 Binary         0     0   1   0    0   1       1   0


                     Hexadecimal           2       6
     Hex


  Decimal

            Binary
Binary to Hexadecimal

                8      4   2   1   8   4   2   1
  Binary        0      0   1   1   1   0   1   1


                     Hexadecimal
     Hex


  Decimal

            Binary
Binary to Hexadecimal

                8      4   2   1   8   4       2   1
  Binary        0      0   1   1   1   0       1   1


                     Hexadecimal           3       B
     Hex


  Decimal

            Binary
Hexadecimal to Binary

                8      4   2   1   8   4       2   1
  Binary



                     Hexadecimal           F       4
     Hex


  Decimal

            Binary
Hexadecimal to Binary

                8      4   2   1   8   4       2   1
  Binary        1      1   1   1   0   1       0   0


                     Hexadecimal           F       4
     Hex


  Decimal

            Binary
Hexadecimal to Binary

  Binary
   8 4       2 1     8   4 2   1 8   4   2   1




     Hex
             Hexadecimal        1    3       1
  Decimal

            Binary
Hexadecimal to Binary

  Binary
   8 4          2 1     8   4 2     1 8     4   2   1
   0       0    0   1   0   0   1   1   0   0   0   1


     Hex
                Hexadecimal             1   3       1
  Decimal

               Binary
I. INTRODUCTION
Developing Assembly Language
Programs
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
The 32-bit Registers

   General Purpose Registers
    – EAX – Accumulator
    – EBX – Base
    – ECX – Counter
    – EDX – Data
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
The 32-bit Registers

   Pointer Registers
     – EBP – Base Pointer
     – ESP – Stack Pointer

   EIP – Instruction Pointer (a.k.a. PC)
   eFlags – Flag Registers
Parts of an Assembly Program

  Section .data             Section .text
   initialized variables    instructions
                             program code
  Section .bss
   unintialized
    variables
Parts of an Assembly Program




                          Data Segment




                          Code Segment
Segments and Segment Registers


      CS
                   CODE
      DS
                   DATA

                   BSS     USER
                           PROGRAM



      SS           STACK

   SEGMENT
   REGISTERS
Data and Data Types

 High-level Programming Languages
  numeric
    – signed integer
    – unsigned integer
    – float or real
  non-numeric
    – characters and strings
    – boolean
    – sets
Data and Data Types

 Computers
  only know numbers (bits)
  data types are human abstractions
  data types depend on size of data and
   human interpretation
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
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
Assembler Directives

 EQU directive
  defines constants
    – label   equ value
    – count equ 100

  Data definition directive
   defines memory for data storage
   defines size of data
Assembler Directives

 Initialized Data
  db – define byte
  dw – define word
  dd – define double

   – label       directive   initial value
   – int         db          0
   – num         dw          100
Assembler Directives

 Character constants
  single quote delimited
  ‘A’

   – char   db   ‘!’
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
Assembler Directives




                       Declarations
Assembler Directives

 Uninitialized Data
  resb – reserve byte
  resw – reserve word
  resd – reserve double word

   – label   directive   value
   – num     resb        1     ; reserves 1 byte
   – nums    resb        10    ; reserves 10 bytes
Assembler Directives




                       Uninitialized
                       variables
Assembly Instructions

 Basic Format
   instruction operand1, operand2

 Operand
  Register
  Immediate
  Memory
Instruction Operands

 Register
  eax, ax, ah, al
  ebx, bx, bh, bl
  ecx, cx, ch, cl
  edx, dx, dh, dl
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
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
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.

More Related Content

Chapter1b

  • 2. The Basic Organization of a Microcomputer CPU CU INPUT REGISTER MEMORY FILE OUTPUT ALU
  • 3. Von Neumann’s Simple Computer CPU CU INPUT PC MAR MEMORY IR MBR OUTPUT A ALU
  • 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
  • 14. Executing Assembly Programs nasm –f elf <file>.asm  produces <file>.o ld -o <file> <file>.o  produces <file>.exe ./<file>  run <file>
  • 15. Review  Number Systems Conversion
  • 16. Binary to Decimal Binary 0 0 1 0 0 1 1 0 Decimal Hex Decimal Binary
  • 17. Binary to Decimal 128 64 32 16 8 4 2 1 Binary 0 0 1 0 0 1 1 0 Decimal Hex Decimal Binary
  • 18. Binary to Decimal 128 64 32 16 8 4 2 1 Binary 0 0 1 0 0 1 1 0 Decimal 3 8 Hex Decimal Binary
  • 19. Decimal to Binary 128 64 32 16 8 4 2 1 Binary 0 0 0 1 1 0 0 0 Decimal Hex Decimal Binary
  • 20. Decimal to Binary 128 64 32 16 8 4 2 1 Binary 0 0 0 1 1 0 0 0 Decimal 2 4 Hex Decimal Binary
  • 21. Binary to Decimal 128 64 32 16 8 4 2 1 Binary Decimal 5 7 Hex Decimal Binary
  • 22. Binary to Decimal 128 64 32 16 8 4 2 1 Binary 0 0 1 1 1 0 0 1 Decimal 5 7 Hex Decimal Binary
  • 23. Decimal to Binary 128 64 32 16 8 4 2 1 Binary 1 0 0 0 0 0 1 1 Decimal Hex Decimal Binary
  • 24. Decimal to Binary 128 64 32 16 8 4 2 1 Binary 1 0 0 0 0 0 1 1 Decimal 1 3 Hex 1 Decimal Binary
  • 25. Decimal to Binary 128 64 32 16 8 4 2 1 Binary Decimal 1 5 Hex 0 Decimal Binary
  • 26. Decimal to Binary 128 64 32 16 8 4 2 1 Binary 1 0 0 1 0 1 1 0 Decimal 1 5 Hex 0 Decimal Binary
  • 27. Binary to Hexadecimal Binary 0 0 1 0 0 1 1 0 Hexadecimal Hex Decimal Binary
  • 28. Binary to Hexadecimal 8 4 2 1 8 4 2 1 Binary 0 0 1 0 0 1 1 0 Hexadecimal Hex Decimal Binary
  • 29. Binary to Hexadecimal 8 4 2 1 8 4 2 1 Binary 0 0 1 0 0 1 1 0 Hexadecimal 2 6 Hex Decimal Binary
  • 30. Binary to Hexadecimal 8 4 2 1 8 4 2 1 Binary 0 0 1 1 1 0 1 1 Hexadecimal Hex Decimal Binary
  • 31. Binary to Hexadecimal 8 4 2 1 8 4 2 1 Binary 0 0 1 1 1 0 1 1 Hexadecimal 3 B Hex Decimal Binary
  • 32. Hexadecimal to Binary 8 4 2 1 8 4 2 1 Binary Hexadecimal F 4 Hex Decimal Binary
  • 33. Hexadecimal to Binary 8 4 2 1 8 4 2 1 Binary 1 1 1 1 0 1 0 0 Hexadecimal F 4 Hex Decimal Binary
  • 34. Hexadecimal to Binary Binary 8 4 2 1 8 4 2 1 8 4 2 1 Hex Hexadecimal 1 3 1 Decimal Binary
  • 35. Hexadecimal to Binary Binary 8 4 2 1 8 4 2 1 8 4 2 1 0 0 0 1 0 0 1 1 0 0 0 1 Hex Hexadecimal 1 3 1 Decimal Binary
  • 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
  • 50. Assembler Directives Character constants  single quote delimited  ‘A’ – char db ‘!’
  • 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
  • 52. Assembler Directives Declarations
  • 53. Assembler Directives Uninitialized Data  resb – reserve byte  resw – reserve word  resd – reserve double word – label directive value – num resb 1 ; reserves 1 byte – nums resb 10 ; reserves 10 bytes
  • 54. Assembler Directives Uninitialized variables
  • 55. Assembly Instructions Basic Format instruction operand1, operand2 Operand  Register  Immediate  Memory
  • 56. Instruction Operands Register  eax, ax, ah, al  ebx, bx, bh, bl  ecx, cx, ch, cl  edx, dx, dh, dl
  • 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.