8 Bit Addition: To Add Two 8 Bit Numbers
8 Bit Addition: To Add Two 8 Bit Numbers
AIM
To add two 8 bit numbers.
PROGRAM
ADDRESS
LOCATION
MNEUMONICS
OPCODE
COMMENT
8000
LXI H,9000H
21,00,90
[HL]9000H
8003
MOV A,M
7E
[A][M]
8004
INX H
23
[H][H]+1
8005
ADD M
86
[A][A]+[M]
8006
INX H
23
[H][H]+1
8007
MOV M,A
77
[M][A]
8008
HLT
76
END
INPUT
9000 07h
9001 01h
OUTPUT
9002 08h
1
8 BIT SUBTRACTION
AIM
To subtract two 8 bit numbers.
PROGRAM
ADDRESS
LOCATION
MNEUMONICS
OPCODE
COMMENT
8000
LXI H,9000H
21,00,90
[HL]9000H
8003
MOV A,M
7E
[A][M]
8004
INX H
23
[H][H]+1
8005
SUB M
96
[A][A]-[M]
8006
INX H
23
[H][H]+1
8007
MOV M,A
77
[M][A]
8008
HLT
76
END
INPUT
9000 07h
9001 02h
OUTPUT
9002 05h
8 BIT MULTIPLICATION
AIM
To multiply two 8 bit numbers.
PROGRAM
ADDRESS
LOCATION
MNEUMONICS
OPCODE
COMMENT
8000
LXI H,9000H
21, 00,90
[HL]9000H
8003
MOV C,M
4E
[C][M]
8004
INX H
23
[H][H]+1
8005
MOV B,M
46
[B][M]
8006
MVI A,00
3E,00H
[A]00H
8008
ADD C
81
[A][A]+[C]
8009
DEC B
05
[B][B]-1
800A
JNZ 8008
C2,08,80
800D
STA 9050H
32,50,90
JUMP IF NON
ZERO TO 8008H
8010
HLT
76
9050[A]
END
INPUT
9000 02h
9001 02h
OUTPUT9050 04h
3
8 BIT DIVISION
AIM
To divide two 8 bit numbers.
PROGRAM
ADDRESS
LOCATION
MNEUMONICS
OPCODE
COMMENT
8000
LXI H,9000H
21, 00,90
[HL]9000H
8003
MOV A,M
7E
[A][M]
8004
MVI C,00H
0E,00H
[C]00H
8006
INX H
23
[H][H]+1
8007
SUB M
96
[A][A]-[M]
8008
INR C
0C
[C][C]+1
8009
CMP M
BE
800A
JNC 8007
D2,07,80
COMPARE A
AND M
800D
STA 9050H
32,50,90
8010
MOV A,C
79
8011
STA 9051H
32,51,90
8014
HLT
76
JUMP IF NO
CARRY TO 8007H
9050[A]
[A][C]
9051[A]
END
ADDRESS
MNUMONICS
LOCATION
OPCODE
COMMENT
8000
LXI H,9000H
21,00,90
[HL]9000H
8003
MOV A,M
7E
[A][M]
8004
MVI C,08H
0E,08H
[C]08H
8006
MVI D,00H
16,00H
[D]00H
8008
RLC
07
8009
JNC 800D
D2,0D,80
ROTATE LEFT
WIT CARRY
800C
INR B
14
JUMP IF NO
CARRY TO
800D
800D
DCR C
0D
[B][B]+1
800E
JNZ 8008
C2,08,80
[C][C]-1
8011
MOV A,D
7A
8012
STA 9050
32,50,90
JUMP IF NON
ZERO TO 8008
8015
HLT
76
[A][D]
9050[A]
END
BLOCK MOVEMENT
AIM
To transfer data from location starting from 9000 to location starting from 7000
5
ADDRESS
LOCATION
MNUMONICS
OPCODE
COMMENT
8000
LXI H,9000H
21,00,90
[HL]9000H
8003
MOV C,M
4E
[C][M]
8004
LXI D,7000H
11,00,70
[DE]7000H
8007
INX H
23
[HL][HL]+1
8008
MOV A,M
7E
[A][M]
8009
STAX D
12
[DE][A]
800A
INX D
13
[DE][DE]+1
800B
DCR C
0D
[C][C]-1
800C
JNZ 8007
C2,07,80
800D
HLT
76
JUMP IF NON
ZERO TO 8007
END
INPUT
9000 03h
9001 08h
9002 09h
9003 04h
OUTPUT
7000 08h
7001 09h
7002 04h
LOOK UP TABLE
AIM
To find square of a number using look up table.
PROGRAM
ADDRESS
LOCATION
MNUMONICS
OPCODE
COMMENT
8000
LXI H ,9000H
21,00,90
8003
MOV A,M
7E
8004
ADD L
85
[A]+[L]=[A]
8005
MOV L,A
6F
MOVE CONTENT IN
A TO L REGISTER
8006
MOV A,M
7E
8007
STA 9050
32,50,90
MOVE CONTENT IN
LOCATION TO A
REGISTER
MOVE CONTENT IN
LOCATION TO A
REGITER
STORE RESULT IN
9050H
800A
HLT
76
END
INPUT
9000 04h
9001 01h
9002 04h
9003 09h
9004 16h
9005 25h
9006 36h
9007 49h
9008 64h
9009 81h
OUTPUT
9050 16h
MNUMONICS
OPCODE
COMMENT
8000
LXI H,9050H
21,50,90
[HL]9050H
8003
MOV B,M
46
[B][M]
8004
DEC B
05
[B][B]-1
8005
LXI H,9050H
21,50,90
[HL]9050H
8008
MOV C,M
4E
[C][M]
8009
DCR C
0D
[C][C]-1
800A
INX H
23
[HL][HL]+1
800B
MOV A,M
7E
[A][M]
800C
INX H
23
[HL][HL]+1
800D
MOV D,M
56
[D][M]
800E
CMP D
BA
800F
JC 8016
DA,16,80
COMPARE A AND
D
8012
MOV M,A
77
8013
DCX H
2B
8014
MOV M,D
72
8015
INX H
23
8016
DCR C
0D
8017
JNZ 800B
C2,0B,80
801A
DCR B
05
801B
JNZ 8005
C2,05,80
JUMP IF NON
ZERO TO800B
801D
HLT
76
[B][B]-1
JUMP IF CARRY
TO 8016
[M][A]
[HL][HL]-1
[M][D]
[HL][HL]+1
[D][D]-1
JUMP IF
NONZERO TO
8005
END
9
INPUT
9050 06h
9051 04h
9052 08h
9053 03h
9054 09h
9055 02h
9056 06h
OUTPUT
9051 02h
9052 03h
9053 04h
9054 06h
9055 08h
9056 09h
RESULT
Program to store numbers in an array in ascending order is executed and output
is verified.
10
MNUMONICS
OPCODE
COMMENT
8000
LXI H,9050H
21,50,90
[HL]9050H
8003
MOV B,M
46
[B][M]
8004
DEC B
05
[B][B]-1
8005
LXI H,9050H
21,50,90
[HL]9050H
8008
MOV C,M
4E
[C][M]
8009
DCR C
0D
[C][C]-1
800A
INX H
23
[HL][HL]+1
800B
MOV A,M
7E
[A][M]
800C
INX H
23
[HL][HL]+1
800D
MOV D,M
56
[D][M]
800E
CMP D
BA
800F
JNC 8016
D2,16,80
COMPARE A AND
D
8012
MOV M,A
77
8013
DCX H
2B
8014
MOV M,D
72
8015
INX H
23
8016
DCR C
0D
11
JUMP IF NO
CARRY TO 8016
[M][A]
[HL][HL]-1
[M][D]
[HL][HL]+1
8017
JNZ 800B
C2,0B,80
[D][D]-1
801A
DCR B
05
801B
JNZ 8005
C2,05,80
JUMP IF NON
ZERO TO800B
801D
HLT
76
[B][B]-1
JUMP IF
NONZERO TO
8005
END
INPUT
9050 05h
9051 03h
9052 04h
9053 02h
9054 05h
9055 10h
OUTPUT
9051 10h
9052 05h
9053 04h
9054 03h
9055 02h
RESULT
12
MNEUMONICS
OPCODE
COMMENT
8000
LX H,9000H
21,00,90
[HL]9000H
8003
MOV A,M
7E
[A][M]
8004
ANI,01H
E6,01H
[A][A] +01H
8006
STA 9050
32,50,90
9050[A]
8009
HLT
76
END
INPUT
9000 02h
OUTPUT
9050 00h
RESULT
13
Program to check whether the given number is odd even is executed and output
is verified.
OPCODE
COMMENT
8000
LXI H,9000H
21,00,90
[HL]9000H
8003
MOV B,M
46
[B][M]
8004
INX H
23
[HL][HL]+1
8005
MOV A,M
7E
[A][M]
8006
INX H
23
[HL][HL]+1
8007
DCR B
05
[B][B]-1
8008
JZ 8012
CA,12,80
800B
CMP M
BE
JUMP IF ZERO TO
8012
800C
JNC 8006
D2,06,80
800F
JMP 8005
C3,05,80
8012
STA 9050H
32,50,90
JUMP IF NO
CARRY TO
8015
HLT
76
8006
COMPARE A AND
M
JUMP TO 8005
9050[A]
END
14
ADDRESS
MNEUMONICS
LOCATION
OPCODE
COMMENT
8000
LXI H,9000H
21,00,90
[HL]9000H
8003
MOV B,M
46
[B][M]
8004
INX H
23
[HL][HL]+1
8005
MOV A,M
7E
[A][M]
8006
INX H
23
[HL][HL]+1
8007
DCR B
05
[B][B]-1
8008
JZ 8012
CA,12,80
800B
CMP M
BE
JUMP IF ZERO TO
8012
800C
JC 8006
DA,06,80
800F
JMP 8005
C3,05,80
8012
STA 9050H
32,50,90
JUMP IF CARRY
TO
8015
HLT
76
8006
COMPARE A AND
M
JUMP TO 8005
9050[A]
END
15
MNUMONICS
OPCODE
COMMENT
8000
LXI H,9000H
21,00,90
[HL]9000H
8003
MOV A,M
7E
[A][M]
8004
MVI D,00H
16,00H
[D]00H
8006
INX H
23
[HL][HL]+1
8007
MOV C,M
4E
[C][M]
8008
INX H
23
[HL][HL]+1
8009
ADD M
86
[A][A]+[M]
800A
JNC 8012
D2,12,80
800D
INR C
0C
JUMP IF NO
CARRY TO 8012
800E
JNC 8012
D2,12,80
[C][C]+1
JUMP IF NO
CARRY TO8012
8011
INR D
14
8012
STA 9050
32,50,90
8015
INX H
23
8016
MOV A,C
79
8017
ADD M
86
8018
JNZ 801C
D2,1C,80
801B
INR D
14
16
[D][D]+1
9050[A]
[HL][HL]+1
[A][C]
[A][A]+[M]
JUMP IF NON
ZERO TO 801C
801C
STA 9051
32,51,90
[D][D]+1
801F
MOV A,D
7A
9051[A]
8020
STA 9052
32,52,90
[A][D]
8023
HLT
76
9052[A]
END
MNUMONICS
OPCODE
COMMENT
8000
LXI H,9000H
21,00,90
[HL]9000H
8003
MVI E,00H
1E,00H
[E]00H
8005
MOV D,M
56
[D][M]
8006
INX H
23
[HL][HL]+1
8007
MOV C,M
4E
[C][M]
8008
INX H
23
[HL][HL]+1
8009
MOV A,D
7A
[A][A]+[D]
800A
SUB M
96
[A][A]-[M]
800B
JNC 8012
D2,12,80
800E
DEC C
0D
JUMP IF NO
CARRY TO 8012
800F
INR E
1C
17
[C][C]-1
8010
CMA
2F
[E][E]+1
8011
INR A
3C
COMPLIMENT A
8012
STA 9050
32,50,90
[A][A]+1
8015
MOV A,C
79
9050[A]
8016
INX H
23
[A][C]
8017
SUB M
96
[HL][HL]+1
8018
JNC 801E
D2,1E,80
[A][A]-[M]
801B
INR E
1C
801C
CMA
2F
JUMP IF NO
CARRY TO 801E
801D
INR A
3C
801E
STA 9051
32,51,90
8021
MOV A,E
7B
8022
STA 9052
32,52,90
8025
HLT
76
[E][E]+1
COMPLIMENT A
[A][A]+1
9051[A]
[A][E]
9052[A]
END
RESULT
Program to subtract two 16 bit numbers is executed and output is verified.
18
MNUMONICS
OPCODE
COMMENT
8000
LXI H,9000H
21,00,90
[HL]9000H
8003
MVI E,M
5E
[E][M]
8004
MOV C,M
4E
[C][M]
8005
INX H
23
[HL][HL]+1
8006
MOV A,M
7E
[A][M]
8007
INX H
23
[HL][HL]+1
8008
MOV B,M
46
[B][M]
8009
DEC C
1D
[D][D]-1
800A
MVI D,00H
16,00H
[D]00H
800C
INX H
23
[HL][HL]+1
800D
ADD M
86
[A][A]+[M]
800E
JNC 8013
D2,13,80
JUMP IF NO
CARRY TO 8013
8011
INR D
14
8012
INR A
3C
8013
INX H
23
8014
DCR E
1D
19
[D][D]-1
[A][A]+1
[HL][HL]+1
8015
JNZ 800C
C2,0C,80
8018
STA 9050
32,50,90
801B
MOV A,B
78
9050[A]
801C
LXI H,9003
21,03,90
[A][B]
801F
DCR C
0D
[HL]9003H
8020
INX H
23
[C][C]-1
8021
ADD M
86
[HL][HL]+1
8022
JNC 8027
D2,27,80
[A][A]+[M]
8025
INR D
14
8026
INR A
3C
8027
INX H
23
8028
DCR C
0D
8029
JNZ 8020
C2,20,80
[E][E]-1
JUMP IF NO
CARRY TO 8027
[D][D]+1
[A][A]+1
[HL][HL]+1
[D][D]-1
802C
STA 9051
32,51,90
802F
MOV A,D
7A
8030
STA 9052
32,52,90
8033
HLT
76
JUMP IF NON
ZERO TO8020
9051[A]
[A][D]
9052[A]
END
20