Friday 1 April 2011

Instruction For Data Processing

Commonly, data processing instruction are grouped in to two categories: instructions for logical operation and arithmetic.Instructions for arithmetic consist of addition, subtraction, increment, decrement, multiplication, division and decimal adjustment. instructions for logical operation consists of AND, OR, EX-OR, complement, clear, rotation and swap.

Almost of these instructions are using register A (accumulator) at every operation (for multiplication and division are using accumulator . Such instructions add, subb, mul and div. Where as inc and dec can be hold in every register.

Addition and subtraction operation.

Example code for this operation is shown below.

org 00h

mov a, #20 ;putting 20 in to accumulator

add a, #8 ;adding accumulator by 8. The result is stored in accumulator (acc=28)

; this is an example for immediate addressing mode

mov 70h, #4 ;putting 4 in to register that has address 70h

add a, 70h ;adding accumulator by the contents of register that has address 70h (acc=32)

; this is an example for direct addressing mode

mov 78h, #9 ;putting 9 in to register that has address 78h

mov r0, #78h ;putting 78h in to register r0

add a, @r0 ;adding acc by the contents of the register that its address is stored in r0 (acc=41)

mov a, #100 ;putting 100 in to accumulator

subb a, #8 ;subtraction acc by 8 (acc=92)

....

....

Increment and decrement operation.

org 00h

mov a, #10 ;putting 10 in to accumulator

inc a ;adding accumulator by 1

dec a ;subtracting accumulator by 1

mov r0, #9 ;putting 9 in to register r0

inc r0 ;adding register r0 by 1

dec r0 ;subtracting register r0 by 1

.....

.....

Multiplication and division operation.

org 00h

mov a, #10 ;putting 10 in to accumulator

mov b, #2 ;putting 2 in to register B

mul ab ;multiply content of accumulator by the content of B,

;The result is stored in A (low byte) and high byte is stored in B

mov a, #20 ;putting 20 in to accumulator

mov b, #4 ;putting 4 in to register B

div ab ;dividing the content of accumulator by the content of B

; the result is stored in A, where as the reminder is stored in B

...

...

Decimal adjustment

org 00h

mov a, #10h ;putting 10h in to accumulator (acc=10h)

da a ;adjusting the content of accumulator in to decimal number (acc=80bcd)

...

...

org 00h

mov a, #0FFh ;putting FFh in to accumulator

anl a, #0F ;force high nible low (acc=00001111b)

mov a, #10101010b ;putting 10101010 in to accumulator

orl a, #0F0h ;force high nible high (acc=11111010b)

cpl a ; complement the content of accumulator (acc=00000101b)

clr a ; clear the content of accumulator (acc=00000000b)

...

...


source : http://trensains.com/data_processing.htm

No comments: