Chapter1b

275 views
190 views

Published on

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
275
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Chapter1b

  1. 1. I. INTRODUCTIONMicrocomputer Systems:Basic Computer Organization
  2. 2. The Basic Organization of a Microcomputer CPU CU INPUT REGISTER MEMORY FILE OUTPUT ALU
  3. 3. Von Neumann’s Simple Computer CPU CU INPUT PC MAR MEMORY IR MBR OUTPUT A ALU
  4. 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. 5. Quiz CPU MEMORY address CU inst 1 001 INPUT inst 2 002 PC = ? inst 3 003 OUTPUT IR = inst 1 ... 004 ALU
  6. 6. I. INTRODUCTIONAssembly Programming Process
  7. 7. Outline 1. Assembly Programming Environment 2. Number Systems Conversion 3. Developing Assembly Programs
  8. 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. 9. Assembly Programming Environment  Linker – a program that combines libraries (modules) together to form an executable file – TLINK, MLINK, ALINK, LD
  10. 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. 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. 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. 13. Assembly Programming Environment 32-bit Assembly Programming  x86 machine instructions Linux  Use Linux services and system calls
  14. 14. Executing Assembly Programs nasm –f elf <file>.asm  produces <file>.o ld -o <file> <file>.o  produces <file>.exe ./<file>  run <file>
  15. 15. Review  Number Systems Conversion
  16. 16. Binary to Decimal Binary 0 0 1 0 0 1 1 0 Decimal Hex Decimal Binary
  17. 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. 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. 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. 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. 21. Binary to Decimal 128 64 32 16 8 4 2 1 Binary Decimal 5 7 Hex Decimal Binary
  22. 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. 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. 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. 25. Decimal to Binary 128 64 32 16 8 4 2 1 Binary Decimal 1 5 Hex 0 Decimal Binary
  26. 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. 27. Binary to Hexadecimal Binary 0 0 1 0 0 1 1 0 Hexadecimal Hex Decimal Binary
  28. 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. 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. 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. 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. 32. Hexadecimal to Binary 8 4 2 1 8 4 2 1 Binary Hexadecimal F 4 Hex Decimal Binary
  33. 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. 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. 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
  36. 36. I. INTRODUCTIONDeveloping Assembly LanguagePrograms
  37. 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. 38. The 32-bit Registers  General Purpose Registers – EAX – Accumulator – EBX – Base – ECX – Counter – EDX – Data
  39. 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. 40. The 32-bit Registers  Pointer Registers – EBP – Base Pointer – ESP – Stack Pointer  EIP – Instruction Pointer (a.k.a. PC)  eFlags – Flag Registers
  41. 41. Parts of an Assembly Program Section .data Section .text  initialized variables  instructions  program code Section .bss  unintialized variables
  42. 42. Parts of an Assembly Program Data Segment Code Segment
  43. 43. Segments and Segment Registers CS CODE DS DATA BSS USER PROGRAM SS STACK SEGMENT REGISTERS
  44. 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. 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. 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. 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. 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. 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. 50. Assembler Directives Character constants  single quote delimited  ‘A’ – char db ‘!’
  51. 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. 52. Assembler Directives Declarations
  53. 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. 54. Assembler Directives Uninitialized variables
  55. 55. Assembly Instructions Basic Format instruction operand1, operand2 Operand  Register  Immediate  Memory
  56. 56. Instruction Operands Register  eax, ax, ah, al  ebx, bx, bh, bl  ecx, cx, ch, cl  edx, dx, dh, dl
  57. 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. 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. 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.

×