Saturday, 26 January 2013

Introduction to Assembly Language Programming

Introduction to Assembly Language Programming


Registers:

Register are used to store information temporarily, while the information could be

  • a byte of data to be processed, or
  • an address pointing to the data to be fetched
The 8 bits of a register are shown from MSB D7 to the LSB D0
  • With an 8-bit data type, any data larger than 8 bits must be broken into 8-bit chunks before it is processed
The most widely used registers are
  • A (Accumulator)
  • For all arithmetic and logic instructions
  • B, R0, R1, R2, R3, R4, R5, R6, R7
  • DPTR (data pointer), and PC (program counter)

    MOV Command

    MOV destination, soruce
    purpose of this command copy source to destination.
    symbol "#" shows that it is value (number)

    Example: 

    MOV A,#55H ;load value 55H into reg. A
                            ;NOTE: Method use to transfer value is known as
                            ;Direct Addressing mode
    MOV R0,A ;copy contents of A into R0
    ;(now A=R0=55H)
                            ;NOTE: Method use to transfer value is known as
                            ;Register Addressing mode
    MOV R1,A ;copy contents of A into R1
    ;(now A=R0=R1=55H)
    MOV R2,A ;copy contents of A into R2
    ;(now A=R0=R1=R2=55H)
    MOV R3,#95H ;load value 95H into R3
    ;(now R3=95H)
    MOV A,R3 ;copy contents of R3 into A
    ;now A=R3=95H

    important points 



    • MOV A, #23H
      • if you forgot to add symbol "#" then it will consider it as location. With this symbol it will consider it as value.
    • MOV R5, #0F9H
      • Add an extra 0 before HEX number A to F to indicate that it isis a hex number and not a letter as done in example; MOV R5, #0F9H
    • If values 0 to F moved into an 8-bit register, the rest of the bits are assumed all zeros
      • “MOV A, #5”, the result will be A=05; i.e., A= 00000101 in binary
    • Moving a value that is too large into a register will cause an error 
      • MOV A, #7F2H ; ILLEGAL: 7F2H>(FFH) 8 bits 

    ADD command


    ADD A, source
    The ADD instruction tells the CPU to add the source byte to accumulator register A and put the result in register A
    • Source operand can be either a register or immediate data, but the destination must always be register A
    • Remember: “ADD R4, A” and “ADD R2, #12H” are invalid since A must be the destination of any arithmetic operation
    Example:
    MOV A, #25H ;load 25H into A
    MOV R2, #34H ;load 34H into R2
    ADD A, R2            ;add R2 to Accumulator
                                  ;(A = A + R2)
    There are always many ways to write the same program, depending on the registers used
    MOV A, #25H ;load one operand
                                  ;into A (A=25H)
    ADD A, #34H        ;add the second
                                   ;operand 34H to A


    No comments:

    Post a Comment