Great People Talk About Ideas.. Average People Talk About Things, And Small People Talk About Other People.

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

Related Posts Plugin for WordPress, Blogger...