Sei sulla pagina 1di 23

FLOW CHART FOR 8-BIT ADDITION

START

LOAD ADDRESS OF DATA IN HL PAIR

CLEAR CREGISTER

GET THE FIRST DATA IN A-REG

INCREMENT HL PAIR

ADD CONTENT OF MEMORY TO AREGISTER

CHECK WHETHER CY=0


INCREMENT C-REGISTER

ADD CONTENT OF MEMORY TO AREGISTER

ADD CONTENT OF MEMORY TO AREGISTER

STOP

FLOW CHART FOR 8-BIT SUBTRACTION


START

GET THE SUBTRAHEND IN A-REGISTER

SAVE CONENT OF A-REG IN B-REGISTER

GET THE MINUEND IN A-REGISTER

SUBTRACT THE CONTENT OF B-REGISTER FROM AREGISTER

STOP

FLOW CHART FOR 8-BIT MULTIPLICATION


START

LOAD ADDRESS OF DATA IN HL PAIR

INCREMENT THE POINTER

USING HL AS ADDRESS POINTER GET IDATA IN B-REGISTER AND II-DATA IN C-REGISTER ADD THE CONTENT OF CREGISTER TO A-REGISTER

DECREMENT B-REGISTER

CHECK WHETHER ZF=0 YES NO

STORE THE RESULT IN MEMORY

STOP

FLOW CHART FOR 8-BIT DIVISION


START

GET THE DIVISOR IN A-REGISTER AND MOVE TO B-REGISTER

GET THE DIVIDEND IN AREGISTER

CLEAR C-REGISTER (QUOTIENT)

COMPARE B-REGISTER AND A-REGISTER

CHECK WHETHER CY=0 NO SUBTRACT CONTENT OF BREG FROM A-REG INCREMENT QUOTIENT (C-REGISTER)

YES

STORE THE REMAINDER (A-REGISTER) IN MEMORY

MOVE THE CONTENT OF C-REGISTER TO A-REGISTER AND STORE QUOTIENT IN MEMORY STOP

FLOW CHART FOR 16-BIT ADDITION


START

[L][4050H] [H][4051H]

[DE][HL]

[L][4052H] [H][4053H]

[A]00H

[HL][HL]+ [DE]

IS THERE A CARRY

NO

[A][A]+1

YES

[4054][L]

[4055][H]

[4056][A]

STOP

FLOW CHART FOR 16-BIT SUBTRACTION


START

[L][4050H] [H][4051H]

[DE][HL]

[L][4052H] [H][4053H]

[HL][HL]- [DE]

IS THERE A BORROW

NO

[C][C]+1

YES

[4054][L]

[4055][H]

[4056][L]

STOP

FLOW CHART FOR 16-BIT MULTIPLICATION


START

[L][4200H] [H][4201H]

SPHL [L][4202H] [H][4203H] [DE][HL] [HL][0000] [BC][0000] [HL][HL]+ [SP]

NO IS CARRY FLAG SET


YES

[BC][BC]+1 [DE][DE]+1

NO

IS ZERO FLAG SET


YES

[4204][L] [4205][H]

[4204][L] [4205][H] STOP

FLOW CHART FOR 16-BIT DIVISION


START A [L][4200H] [H][4201H] [L][4054] [H][4055] HL [DE] AC [L][4050H] [H][4051H] [4056]A BC0000H AB AL: AAE: LA AH: AA-H-Br: HA

[4057]A

STOP

[BC][BC]+1

NO IS CARRY FLAG SET


YES

[BC][BC]-1 HLHL+DE

FLOW CHART FOR 8-BIT BCD ADDITION


START GET THE I-DATA IN A & MOVE IT TO B REGISTER

GET II-DATA IN A-REGISTER

CLEAR C-REGISTER FOR CARRY

ADD THE CONTENT OF B-REGISTER TO A-REGISTER AND PERFORM DECIMAL ADJUST AFTER ADDITION

CHECK WHETHER CY=0

NO

INCREMENT C-REGISTER FOR CARRY YES STORE THE SUM IN MEMORY

MOVE THE CONTENT OF CREGISTER TO A-REGISTER AND STORE IN MEMORY

STOP

FLOW CHART FOR 16-BIT BCD ADDITION


START A GET THE LOW ORDER 2DIGITS OF I-DATA IN A & MOVE IT TO B STORE THE SUM IN MEMORY GET THE LOW ORDER 2 DIGITS OF II-DATA IN A-REGISTER MOVE THE CONTENT OF CREGISTER TO A-REGISTER AND STORE IN MEMORY

CLEAR C-REGISTER FOR CARRY

ADD THE CONTENT OF B TO A AND PERFORM DAA STORE THE RESULT IN MEMORY STOP GET THE HIGH ORDER 2DIGITS OF I-DATA IN A & MOVE IT TO B

GET THE LOW ORDER 2 DIGITS OF II-DATA IN A-REGISTER

ADD THE CONTENT OF B AND CARRY TO PERFORM DAA

NO IS CARRY FLAG SET

YES

INCREMENT C-REGISTER

FLOW CHART FOR 8-BIT BCD SUBTRACTION


START

GET THE LOW BYTE OF SUBTRAHEND IN A AND MOVE TO B

GET THE LOW BYTE OF MINUEND IN A

PERFORM THE SUBTRACTION OF LOW BYTE AND STORE THE RESULT IN MEMORY

GET THE HIGH BYTE OF SUBTRAHEND IN A AND MOVE TO B

GET THE HIGH BYTE OF MINUEND IN A

SUBTRACT THE CONTENT OF BREGISTER AND CARRY FROM AREGISTER

STORE THE RESULT IN MEMORY

STOP

FLOW CHART FOR HEXA TO ASCII CONVERSION


START

GET THE HEXA DATA IN A-REGISTER AND STORE IT IN B-REGISTER

MASK THE UPPER NIBBLE OF THE DATA

CALL SUBROUTINE SUB1 TO GET THE ASCII CODE FOR LOWER NIBBLE IN AREGISTER STORE ASCII CODE (A-REGISTER) IN MEMORY

MOVE HEXA DATA FROM B-REGISTER TO AREGISTER AND MASK THE LOWER NIBBLE

ROTATE THE CONTENT OF A-REGISTER; 4-TIMES LEFT

CALL SUBROUTINE SUB 1 TO GET THE ASCII COE FOR UPPER NIBBLE IN AREGISTER STORE THE ASCII CODE (A-REGISTER) IN MEMORY

STOP

FLOW CHART FOR SUBROUTINE SUB1

START

COMPARE THE CONTENT OF A-REGISTER WITH 0AH

CHECK WHETHER CY=1

NO

ADD 07H TO A-REGISTER YES

ADD 30H TO A-REGISTER

RETURN TO MAIN PROGRAM

FLOW CHART FOR ASCII TO HEXA CODE CONVERSION

START

LOAD THE GIVEN DATA IN A-REGISTER

SUBTRACT 30H FROM A-REGISTER

COMPARE THE CONTENT OF A-REGISTER WITH 0AH

CHECK WHETHER CY=1

NO

YES

SUBTRACT 07H FROM A-REGISTER

STORE THE RESULT

STOP

FLOW CHART FOR BCD TO BINARY CONVERSION


START

LOAD THE GIVEN DATA IN A-REGISTER

MOVE THE IMMEDIATE DATA OF 00H IN A-REGISTER

MASK THE UPPER NIBBLE OF THE BINARY DATA IN A-REGISTER

MOVE THE IMMEDIATE DATA OF 0AH IN A-REGISTER

ADD THE CONTENT OF DREGISTER WITH A-REGISTER

MOVE THE CONTENT IN AREGISTER TO CREGISTER

DECREMENT B-REGISTER

NO MASK THE LOWER NIBBLE OF THE BINARY DATA IN A-REGISTER

IF ZERO FLAG IS SET YES

ADD THE CONTENT OF CREGISTER WITH A-REGISTER ROTATE THE UPPER NIBBLE TO LOWER NIBBLE POSITION

ADD THE CONTENT OF CREGISTER WITH A-REGISTER

MOVE THE CONTENT IN A-REGISTER TO B-REGISTER

STOP

FLOW CHART FOR BINARY TO BCD CONVERSION


START

GET THE I-DATA IN A-REGISTER

MOVE 64H IN B-REGISTER

MOVE 0AH IN C-REGISTER

MOVE 00H IN D-REGISTER

MOVE 00H IN E-REGISTER

COMPARE B-REGISTER WITH A-REGISTER

IF CHECK CY=1 NO

YES

MOVE 0AH IN C-REGISTER

INCREMENT E-REGISTER A JUMP

COMPARE C-REGISTER WITH A-REGISTER

CHECK IF, CY=1 NO SUBTRACT C-REGISTER WITH A-REGISTER INCREMENT D-REGISTER JUMP

YES

STORE THE RESULT IN MEMORY MOVE D-REGISTER TO A-REGISTER STORE THE RESULT IN MEMORY MOVE E-REGISTER WITH A-REGISTER

STORE THE RESULT IN MEMORY

STOP

FLOW CHART FOR TRANSFER CONTENTS TO OVERLAPPING MEMORY BLOCKS


START

MOVE THE IMMEDIATE DATA OF 06H IN C-REGISTER

LOAD THE CONTENT OF MEMORY LOCATION IN HL REGISTER PAIR

LOAD THE CONTENT OF MEMORY LOCATION IN DE REGISTER PAIR

MOVE THE CONTENT IN M-REG. TO A-REG. STORE THE RESULT IN DE REG. PAIR

DECREMENT HL REGISTER PAIR

DECREMENT DE REGISTER PAIR

DECREMENT C-REGISTER

YES

IF ZERO FLAG IS SET NO STOP

FLOW CHART FOR TRANSFER CONTENTS TO NON-OVERLAPPING MEMORY BLOCKS


START

MOVE THE IMMEDIATE DATA OF 06H IN C-REGISTER

LOAD THE CONTENT OF MEMORY LOCATION IN HL REGISTER PAIR

LOAD THE CONTENT OF MEMORY LOCATION IN DE REGISTER PAIR

MOVE THE CONTENT IN M-REG. TO A-REG. STORE THE RESULT IN DE REG. PAIR

INCREMENT HL REGISTER PAIR

INCREMENT DE REGISTER PAIR

DECREMENT C-REGISTER

YES

IF ZERO FLAG IS SET NO STOP

FLOW CHART FOR 16-BIT ADDITION USING 8086

START

MOVE THE CONTENT OF MEMORY LOCATION TO AX REGISTER

MOVE THE CONTENT OF MEMORY LOCATION TO BX REGISTER

ADD THE CONTENT OF AX WITH BX

MOVE THE RESULT IN MEMORY

STOP

OBSERVATION (16-Bit addition) INPUT ADDRESS DATA OUTPUT ADDRESS DATA

FLOW CHART FOR 16-BIT SUBTRACTION USING 8086

START

MOVE THE CONTENT OF MEMORY LOCATION TO AX REGISTER

MOVE THE CONTENT OF MEMORY LOCATION TO BX REGISTER

SUBTRACT THE CONTENT OF AX WITH BX

MOVE THE RESULT IN MEMORY

STOP

OBSERVATION (16-Bit Subtraction) INPUT ADDRESS DATA OUTPUT ADDRESS DATA

FLOW CHART FOR 16-BIT MULTIPLICATION USING 8086

START

MOVE THE CONTENT OF MEMORY LOCATION TO AX REGISTER

MOVE THE CONTENT OF MEMORY LOCATION TO BX REGISTER

MULTIPLY THE CONTENT OF AX WITH BX

MOVE THE RESULT IN MEMORY

STOP

OBSERVATION (16-Bit Multiplication) INPUT ADDRESS DATA OUTPUT ADDRESS DATA

FLOW CHART FOR 16-BIT DIVISION USING 8086

START

MOVE THE CONTENT OF MEMORY LOCATION TO AX REGISTER

MOVE THE CONTENT OF MEMORY LOCATION TO BX REGISTER

DIVIDE THE CONTENT OF BX WITH AX

MOVE THE RESULT IN MEMORY

STOP

OBSERVATION (16-Bit Division) INPUT ADDRESS DATA OUTPUT ADDRESS DATA

Potrebbero piacerti anche