253 test 1
Test may NOT be "made up" without prior arrangements or VERIFIED EMERGENCY!
Make-up tests will be different, will be given the following morning at 6:30am and require a medical excuse.
Make a CAP!

This guide is not a "promise" of what will be on the test, but is simply an outline of topics that MAY be on the test that I provide to be helpful to you. Other topics not listed may also sneak onto a test from time to time.
Understand that a test is a SAMPLING and can not possibly cover all information from class. The idea, however, is that you must study all the information since you don't know for certain what questions will show up. This is for your benefit as it motivates you to learn more! And finally, to avoid the "you said that topic would/would not be on the test" problem, my new "stock answer" for the question, "will this be on the test?", is now: "I can neither confirm nor deny the presence of that topic on the next test."(ref: US Navy)


   READ: Code by Petzold: Ch 1-3,7-9
   READ: EMU Tutorials: 

  - HW & Program execution
      Registers
         speed
         sizes: 8 bit, 16 bit 32 bit
         names
         special purposes
      SS , RAM , CPU
         execution sequence
         IP & context
      Speeds: clock speed vs clock cycle: mHz, gHz, microsecond, nanosecond 

   - Bases & Representation
      2, 10, 16 and conversion
      positive and negative numbers
      ranges of numbers in n bits
         signed & unsigned representation
      binary fractions
         IEEE 754 - what it is, no details
      asccii vs utf-8
         why?
         how?
      
  - Organization
      sizes
      bytes, words, dwords
      little endian
      formulas

  - Defining Storage
      byte
      word
      dword
      Ram
         how do we address?
         number of bits needed to address n bytes of RAM
            log2 n
            2x = n

  - Moving Data
      MOV  instruction
      same size
      no memory to memory
         includes ptr to ptr
         mov [edi], [esi] no - mem to mem
         
      ambiguous size - use ptr         
         cmp 0, byte ptr[esi] ; disambiguate
         cmp al, [esi]        ; register (al) disanbiguates
         
      mov does NOT set flags
      XCHG swaps

   Registers
      sizes
      names
      general
         relationship (al, ah, ax, eax, rax)
      special
         ip cs ir
         flags
         
  - Arithmetic
      add
      sub
      overflow
         signed 
         unsigned
      inc (no carry flag)
      dec
      div (ax, ah, al)
      
  - Logic      
      AND, OR, XOR,
      masks
      clearing bits: AND 0111 1110 will CLEAR first and last bit (zeroes)
      setting bits:  OR  0000 1111 will SET rightmost 4 bits (ones)    
      
  - Setting, using flags, CMP and jumps
      ZF
      SF
      OF (s)
      CF (u)
      test - 'and'
      cmp  - 'sub'       
      
  - LOOP & LABELS
      jmps
      machine code for loop
      loop
         uses CX
         decrement and loop if > 0
      conditional jumps use flags
         je, jz => z flag
         jb, ja  unsigned
         jg, jl  signed         
         
  - Assembly Language programs   
      How many bytes allocated? 
      How are they represented? 
      How are the bytes organized?  
         little endian
      
  - CALL instruction & PROC/ENDP
      how it works
      pancakes

  - Procedures
      stack
      arguments
      saving registers
      doc      

  - emu8086 Library: 
     Macro vs. Proc
       Call vs inline expansion
       
     print, printn  macro
     gotoxy macro 
      
     print_num, print_num_uns  procedure (AX)
     ** CAREFUL: ax vs ah and al when printing
     
     scan_num (CX) procedure
     
     

READ & WRITE CODE

show bytes in hex segments that can loop and add numbers write a procedure masking what flags are set jmp machine code list file!!