16-BIT ADDITION: DIRECT DATA LOADING

ORG 0000H;
CLR C;       MAKE CY=0
MOV A,#6CH;  LOWER BYTE OF OPERAND 1 IN A
ADD A,#9DH;  ADD LOWER BYTE OF OPERAND 2 WITH A
MOV R6,A;    STORES LSB OF RESULT IN R6
MOV A,#17H;  HIGHER BYTE OF OPERAND 2 IN A
ADDC A,#3BH; ADD WITH HIGHER BYTE OF OPERAND 1
MOV R7,A;    STORES MSB OF RESULT IN R7
END

16-BIT ADDITION: DATA LOADING FROM MEMORY

ORG 0000H
MOV R0,40H;      INITIALIZING STARTING ADDRESS (40H)
MOV R2,#5;       INITIALIZING COUNTER
CLR A;           MAKE A=00H
MOV R7,A;        MAKE R7=00H
AGAIN:ADD A,@R0; ADDS CONTENTS OF ADDRESS POINTED BY R0 WITH A
JNC NEXT;        JUMP TO LABEL IF CY=0
INC R7;          INCREMENT R7
NEXT:INC R0;     INCREMENT ADDRESS
DJNZ R2,AGAIN;   DECREMENT & JUMP TO LABEL IF R2!=0
END

16-BIT SUBTRACTION: dIRECT DATA lOADING

ORG 0000H
CLR C ;       MAKE CY=0
MOV A,#0F8H;  LOWER BYTE OF OPERAND 1 IN A
SUBB A,#14H;  SUBTRACT LOWER BYTE OF OPERAND 2 WITH A
MOV R6,A;     STORES LSB OF RESULT IN R6
MOV A,#33H;   HIGHER BYTE OF OPERAND 2 IN A
SUBB A,#0CAH; SUBTRACT WITH HIGHER BYTE OF OPERAND 1
MOV R7,A ;    STORES MSB OF RESULT IN R7
END

Leave a comment