1. Assembly Language Programs
1) PROGRAM TO EXCHANGE TWO 16 BIT NUMBERS
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 2A,00,F0 LHLD F000 Load memory from specified
locations.
2 8003 EB XCHG Exchange contents of HL & DE
pairs.
3 8004 2A,00,F1 LHLD F100 Load memory from specified
locations.
4 8007 22,00,F0 SHLD F000 Store memory to specified
locations.
5 800A EB XCHG Exchange contents of HL & DE
pairs.
6 800B 22,00,F1 SHLD F200 Store memory to specified
locations.
7 800E CF RST 1 Restart
INPUT (Before execution)
F001 ; F000 F101 ; F100
12 ; AB 3C ; DE
OUTPUT(After execution)
F001 ; F000 F101 ; F100
3C ; DE 12 ; AB
K. Adisesha 1
2. Assembly Language Programs
2) PROGRAM TO ADD OR SUBTRACT TWO 8 BIT NUMBERS
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 3E, XX MVI A, XX Move immediately to [A] the data
XX
2 8002 06, YY MVI B, YY Move immediately to [B] the data
YY
3 8004 80/(90) ADD B/SUB B Add(or subtract) [B] with [A]
4 8005 32,00,F0 STA F000 Store contents of [A] in specified
location
5 8008 D2,10,80 JNC (Ahead 1) Jump on no carry to specified
location
6 800B 3E,01 MVIA, 01 Move immediately to [A] the
data(01)H
7 800D C3,12,80 JMP(Ahead 2) Jump unconditionally ahead
8 8010 3E,00 Ahead 1 MVIA, 00 Move immediately to [A] the
data(00)H
9 8012 32,01,F0 Ahead 2 STA F001 Store contents of [A] in specified
location
10 8015 CF RST1 Restart
INPUT : XX, YY
1) 2B, 1A
2) 2B, FA
OUTPUT
TRIAL Addition (XX+YY) Subtraction (XX-YY)
ADDRESS F001: F000 F001: F000
1 00 : 45 00 : 25
2 01 : 25 01 : 31
K. Adisesha 2
3. Assembly Language Programs
3) PROGRAM TO ADD TWO 16 BIT NUMBERS
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 AF XRA A Clear accumulator and Flag
2 8001 2A, 00, F0 LHLD F000 Load memory from specified
locations
3 8004 EB XCHG Exchange contents of HL & DE
pairs
4 8005 2A,00,F1 LHLD F100 Load memory from specified
locations
5 8008 19 DAD D Add HL & DE pairs
6 8009 22,00,F2 SHLD F200 Store memory to specified
locations
7 800C D2,10,80 JNC (Ahead) Jump on no carry to ahead
address
8 800F 3C INR A Increment contents of
accumulator by one
9 8010 32,02,F2 Ahead STA F202 Store contents of [A] in specified
location
10 8013 CF RST1 Restart
F001: F000 (X) 4A : 2C
F101: F100 (Y) ED : 5B
F202:F201: F200 (X+Y) 01 : 37 : 87
K. Adisesha 3
4. Assembly Language Programs
4) PROGRAM TO SUBTRACT TWO 16 BIT NUMBERS (X>Y)
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 2A,00,F0 LHLD F000 Load memory from specified
locations
2 8003 EB XCHG Exchange contents of HL & DE
pairs
3 8004 2A,00,F1 LHLD F100 Load memory from specified
locations
4 8007 7D MOV A, L Move contents of [L] to [A]
5 8008 93 SUB E Subtract [E] from [A]
6 8009 32,00,F2 STA F200 Store result in specified location
7 800C 7C MOV A, H Move contents of [H] to [A]
8 800D 9A SBB D Subtract [D] from [A] with
borrow
9 800E 32,01,F2 STA F201 Store result in specified location
10 8011 CF RST 1 Restart
F001: F000 (X) FA : 2C
F101: F100 (Y) BD : 5B
F202:F201: F200 (X-Y) 3C : D1
K. Adisesha 4
5. Assembly Language Programs
5) PROGRAM TO ADD TWO N BYTE NUMBERS
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 21,00,F0 LXIH F000 Load HL pair with specified data
2 8003 01,00,F1 LXIB F100 Load BC pair with specified data
3 8006 11,00,F2 LXID F200 Load DE pair with specified data
4 8009 3E,(NN) MVI A, (NN) Specify the number of bytes
5 800B 32,00,81 LOOP STA 8100 Save the count
6 800E AF XRA A Clear accumulator and flags
7 800F 0A LDAX B Load [A] indirectly from address
specified by BC pair
8 8010 8E ADC M Add memory to [A] with carry
9 8011 12 STAX D Store contents of [A] indirectly in
location specified by DE pair
10 8012 23 INX H Update memory
11 8013 03 INX B Update BC register pair
12 8014 13 INX D Update DE register pair
13 8015 3A,00,81 LDA 8100 Load [A] from specified location
14 8018 3D DCR A Decrement count
15 8019 C2,0B,80 JNZ (LOOP) Jump on no zero to perform loop
16 801C D2,24,80 JNC (Ahead 1) Jump on no carry to ahead address
17 801F 3E,01 MVI A, 01 Move immediately to [A] the
data(01)H
18 8021 C3,26,80 JMP (Ahead 2) Jump unconditionally to ahead address
19 8024 3E,00 Ahead 1 MVI A, 00 Move immediately to [A] the
data(00)H
20 8026 12 Ahead 2 STAX D Store contents of [A] indirectly in
address specified by DE pair
21 8027 CF RST 1 Restart
K. Adisesha 5
7. Assembly Language Programs
6) PROGRAM FOR BLOCK TRANSFER
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 16,10 MVI D, (10)H Set count in [D]
2 8002 21,00,81 LXIH 8100 Load HL pair with specified
address
3 8005 01,00,82 LXIB 8200 Load BC pair with specified
address
4 8008 7E LOOP MOV A,M Move contents of memory to [A]
5 8009 02 STAX B Store contents of [A] indirectly
to location specified by BC pair
6 800A 23 INX H Update memory
7 800B 03 INX B Update BC pair
8 800C 15 DCR D Decrement count in [D]
9 800D C2,08,80 JNZ (LOOP) Jump on no zero to perform the
loop
10 8010 CF RST1 Restart
INPUT
8100:810:8102:8103:8104:8105:8106:8107:8108:8109:810A:810B:810C:810D:810E:810F
00 : 01: 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 0A : 0B : 0C : 0D : 0E : 0F
OUTPUT
8200:8201:8202:8203:8204:8205:8206:8207:8208:8209:820A:820B:820C:820D:820E:820F
00 : 01: 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 0A : 0B : 0C : 0D : 0E : 0F
K. Adisesha 7
8. Assembly Language Programs
7) PROGRAM TO BLOCK TRANSFER IN REVERSE ORDER
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 16,10 MVI D, (10)H Set count in [D]
2 8002 21,00,81 LXIH 8100 Load HL pair with specified
address
3 8005 01,0F,82 LXIB 820F Load BC pair with specified
address
4 8008 7E LOOP MOV A,M Move contents of memory to [A]
5 8009 02 STAX B Store contents of [A] indirectly
to location specified by BC pair
6 800A 23 INX H Update memory
7 800B 0B DCX B Decrement BC pair by one
8 800C 15 DCR D Decrement count in [D]
9 800D C2,08,80 JNZ (LOOP) Jump on no zero to perform the
loop
10 8010 CF RST1 Restart
INPUT
8100:810:8102:8103:8104:8105:8106:8107:8108:8109:810A:810B:810C:810D:810E:810F
00 : 01: 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 0A : 0B : 0C : 0D : 0E : 0F
OUTPUT
820F:820E:820D:820C:820B:820A:8209:8208:8207:8206:8205:8204:8203:8202:8201:8200
0F : 0E : 0D : 0C : 0B : 0A : 09 : 08 : 07 : 06 : 05 : 04 : 03 : 02 : 01 : 00
K. Adisesha 8
9. Assembly Language Programs
8) PROGRAM TO ADD N DECIMAL NUMBERS (N= 10)
INPUT OUTPUT
8100:810:8102:8103:8104:8105:8106:8107:8108:8109 F201 F200
00 : 01: 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 00 45
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 AF XRA A Clear accumulator and flags
2 8001 0E,0A MVI C, (0A)H Set N count in [C]
3 8003 16,00 MVI D , 00 Clear [D]
4 8005 21,00,81 LXIH 8100 Load HL pair with specified data
5 8008 86 LOOP ADD M Add memory to [A]
6 8009 27 DAA Decimal adjust accumulator
7 800A D2,0E,80 JNC(Ahead) Jump on no carry to ahead
address
8 800D 14 INR D Increment [D] by one
9 800E 23 Ahead INX H Update memory
10 800F 0D DCR C Decrement count
11 8010 C2,08,80 JNZ(LOOP) Jump on no zero to perform loop
12 8013 6F MOV L,A Move [A] to [L]
13 8014 62 MOV H,D Move [D] to [H]
14 8015 22,00,F2 SHLD F200 Store contents of HL pair to
specified consecutive locations
15 8018 CF RST 1 Restart
K. Adisesha 9
10. Assembly Language Programs
9) PROGRAM FOR ADDITION OF HEXA-DECIMAL NUMBERS
UNTILL ‘FF’ IS ENCOUNTERED
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 AF XRA A Clear accumulator and flags
2 8001 32,F9,FF LOOP STA FFF9 Store contents of accumulator in
specified location
3 8004 F5 PUSH PSW Push [A] and flags to stack
4 8005 CD,D3,06 CALL(UPDDT) Call display subroutine for data
field
5 8008 11,FF,FF LXID FFFF
Implement a delay of 0.5 s using
6 800B CD,BE,04 CALL(DELAY) monitor delay subroutine
7 800E F1 POP PSW Pop[A] and flags off stack
8 800F 3C INR A Increment contents of [A] by one
9 8010 C2,01,80 JNZ (LOOP) Perform the loop until [A]
becomes zero
10 8013 76 HLT Halt
OUTPUT: ‘00’ up to ‘FF’ is displayed in data field.
K. Adisesha 10
11. Assembly Language Programs
10) PROGRAM FOR FOUR DIGIT BCD ADDITION
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 21,00,F0 LXIH F000 Load HL pair with specified data
2 8003 01,00,F1 LXIB F100 Load BC pair with specified data
3 8006 11,00,F2 LXID F200 Load DE pair with specified data
4 8009 3E,02 MVI A, (02) Specify the number of bytes
5 800B 32,00,81 LOOP STA 8100 Save the count
6 800E 0A LDAX B Load [A] indirectly from address
specified by BC pair
7 800F 8E ADC M Add memory to [A] with carry
8 8010 27 DAA Decimal adjust accumulator
9 8011 12 STAX D Store contents of [A] indirectly in
location specified by DE pair
10 8012 23 INX H Update memory
11 8013 03 INX B Update BC register pair
12 8014 13 INX D Update DE register pair
13 8015 3A,00,81 LDA 8100 Load [A] from specified location
14 8018 3D DCR A Decrement count
15 8019 C2,0B,80 JNZ (LOOP) Jump on no zero to perform loop
16 801C D2,24,80 JNC (Ahead 1) Jump on no carry to ahead address
Move immediately to [A] the
17 801F 3E,01 MVI A, 01 data(01)H
Jump unconditionally to ahead
18 8021 C3,26,80 JMP (Ahead 2) address
Move immediately to [A] the
19 8024 3E,00 Ahead 1 MVI A, 00 data(00)H
Store contents of [A] indirectly in
20 8026 12 Ahead 2 STAX D address specified by DE pair
Restart
21 8027 CF RST 1
K. Adisesha 11
13. Assembly Language Programs
11) PROGRAM TO FIND 2`S COMPLEMENT OF 8 BIT/ 16 BIT
NUMBER
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 06,01/(02) MVI B,01/(02) Move to [B] (01) for 8-bit & (02)
for 16-bit complement of data
2 8002 11,01,00 LXID 0001 Load DE pair with specified data
3 8005 21,00,F0 LXIH F000 Load HL pair with specified data
4 8008 7E LOOP MOV A,M Copy contents of memory to [A]
5 8009 2F CMA Complement contents of [A]
6 800A 77 MOV M,A Copy contents of [A] to memory
7 800B 05 DCR B Decrement [B] by one
8 800C CA, 13,80 JZ (Ahead) Jump on zero to ahead address
9 800F 23 INX H Update memory
10 8010 C3,08,80 JMP(Loop) Jump unconditionally to perform
loop
11 8013 2A,00,F0 Ahead LHLD F000 Load contents of HL pair from
specified locations
12 8016 19 DAD D Add HL and DE pair of registers
13 8017 22,00,F1 SHLD F100 Store contents of HL pair to
specified locations
14 801A CF RST 1 Restart
DATA INPUT OUTPUT(2`s complement)
K. Adisesha 13
14. Assembly Language Programs
8-Bit F000 : 7A F100 : 87
16-Bit F001 : F000 :: 1A: 26 F101 : F100 :: E5: DA
12) PROGRAM FOR SUB TRACTION OF TWO 16-BIT BCD
NUMBERS (X>Y)
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 11,86,97 LXID(9786) Load DE pair with specified
data
2 8003 01,59,32 LXIB(3259) Load BC pair with specified
data
3 8006 CD,20, 80 CALL(Sub-BCD) Call subroutine for BCD
subtraction
4 8009 6F MOV L,A Copy contents of [A] to [L]
5 800C 5A MOV E,D Copy contents of [D] to [E]
6 800D 48 MOV C,B Copy contents of [B] to [C]
7 800E CD,20,80 CALL(Sub-BCD) Call subroutine for BCD
subtraction
8 800F 67 MOV H,A Copy contents of [A] to [H]
9 8012 22,00,F0 SHLD F000 Store contents of HL pair to
specified locations
10 8013 CF RST 1 Restart
12 8020 3E,99 Sub-BCD MVI A,99 Move to [A] the given data to
subtract using 99` complement
13 8017 93 SUB E Subtract [E] from [A]
14 8018 3C INR A Increment [A] by 1
15 8019 81 ADD C Add [C] to [A]
16 801A 27 DAA Decimal adjust accumulator
17 801B C9 RET Return from subroutine
unconditionally
K. Adisesha 14
15. Assembly Language Programs
OUTPUT
F001: F000 :: 65 : 27
13) PROGRAM FOR BLOCK EXCHANGE
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 21,00,F0 LXIH F000 Load HL pair with specified
address
2 8003 11,00,F1 LXID F100 Load HL pair with specified
address
3 8006 0E,10 MVI C,(10)H Set counter in [C] for N counts
4 8008 1A LOOP LDAX D Load [A] indirectly from
address indicated by DE pair
5 8009 46 MOV B,M Copy contents of memory to[B]
6 800A 77 MOV M,A Copy contents of [A] to memory
7 800B 78 MOV A,B Copy contents of [B] to [A]
8 800C 12 STAX D Store contents of [A] indirectly
onto address in DE pair
9 800D 23 INX H Update memory
10 800E 13 INX D Update DE register pair
11 800F 0D DCR C Decrement [C] by 1
12 8010 C2,08,80 JNZ(Loop) Perform the loop until [C]
becomes zero
13 8013 CF RST 1 Restart
INPUT
F000:F001:F002:F003:F004:F005:F006:F007:F008:F009:F00A:F00B:F00C:F00D:F00E:F00F
00 : 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 0A : 0B : 0C : 0D : 0E : 0F
F100:F101:F102:F103:F104:F105:F106:F107:F108:F109:F10A:F10B:F10C:F10D:F10E:F10F
K. Adisesha 15
17. Assembly Language Programs
14) PROGRAM FOR SORTING AN ARRAY OF ‘N-NUMBERS’ IN
ASCENDING ORDER
K. Adisesha 17
18. Assembly Language Programs
INPUT
F100:F101:F102:F103:F104:F105:F106:F107:F108:F109
0A : 01 : 09 : 05 : 03 : 06 : 08 : 07 : 04 : 02
Sl no. ADDRESS HEX CODE LABE MNEMONICS COMMENTS
L
1 8000 AF XRA A Clear accumulator & flags
2 8001 06,0B MVI B,0B Move a count (N+1) in [B]
3 8003 48 START MOV C,B Copy contents of [B] to [C]
4 8004 0D DCR C Decrement contents of [C] by one
5 8005 21,00,F1 LXIH F100 Load the specified address in HL pair
6 8008 7E LOOP MOV A,M Copy contents of [M] to [A]
7 8009 23 INX H Update memory
8 800A BE CMP M Compare memory with accumulator
9 800B DA,13,80 JC (AHEAD) Jump on carry to ahead address
10 800E 56 MOV D,M Copy contents of [M] to [D]
11 800F 77 MOV M,A Copy contents of [A] to [M]
12 8010 2B DCX H Decrement HL pair by one
13 8011 72 MOV M,D Copy contents of [D] to [M]
14 8012 23 INX H Increment contents of HL pair by one
15 8013 0D AHEAD DCR C Decrement contents of [C] by one
16 8014 C2,08,80 JNZ (LOOP) Jump on no zero to perform the loop
17 8017 05 DCR B Decrement count in [B]
18 8018 C2,03,80 JNZ (START) Jump on no zero to specified address
19 801B CF RST 1 Restart
K. Adisesha 18
19. Assembly Language Programs
OUTPUT
F100:F101:F102:F103:F104:F105:F106:F107:F108:F109
01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 0A
15) PROGRAM TO CHECK 2-OUT-OF-5 CODE
K. Adisesha 19
20. Assembly Language Programs
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
Sl no. ADDRESS HEX CODE LABEL MNEMONICS COMMENTS
1 8000 3A,00,F0 LDA F000 Load data into accumulator from
specified location
2 8003 0E,05 MVI C,05 Move a count (05)H in [C]
3 8005 16,00 MVI D,00 Clear contents of [D]
4 8007 E6,E0 ANI E0 Logical AND (E0) H with [A]
5 8009 C2,23,80 JNZ (AHEAD 1) Jump on no zero to specified address
6 800C 3A,00,F0 LDA F000 Load data into accumulator from
specified location
7 800F 0F LOOP RRC Rotate contents of [A] to right
8 8010 D2,14,80 JNC(AHEAD 2) Jump on no carry to ahead address
9 8013 14 INR D Increment count in [D]
10 8014 0D AHEAD 2 DCR C Decrement contents of [C] by one
11 80015 C2,0F,80 JNZ(LOOP) Jump on no zero to perform the loop
12 8018 7A MOV A,D Copy contents of [D] to [A]
13 8019 FE,02 CPI ,02 Compare (02) H immediately with [A]
14 801B C2,23,80 JNZ(AHEAD 1) Jump on no zero to specified address
15 801E 3E,FF MVI A, FF Move ‘FF’ to [A] immediately
16 8020 C2,25,80 JMP(AHEAD 3) Jump to specified location
unconditionally
17 8023 3E,00 AHEAD 1 MVI A, 00 Move ‘00’ to [A] immediately
18 8025 32,00,F1 AHEAD 3 STA F100 Store data from accumulator into
specified location
19 8028 CF RST 1 Restart
INPUT OUTPUT
F000: 11 F100: FF
F000: 13 F100: 00
16) PROGRAM TO MULTIPLY TWO DIGIT BCD
K. Adisesha 20
21. Assembly Language Programs
1 8000 21,00,00 LXIH (0000 )H Move a count (0000)H in HL pair
2 8003 3A,00,F0 LDA F000 Load data into accumulator from
specified location
3 8006 47 MOV B,A Copy contents of [A] to [B]
4 8007 3A,01,F0 LDA F001 Load data into accumulator from
specified location
5 800A 4F MOV C,A Copy contents of [A] to [C]
6 800B 79 START MOV A,C Copy contents of [C] to [A]
7 800C 85 ADD L Add [L] to accumulator
8 800D 27 DAA Decimal adjust [A]
9 800E 6F MOV L,A Copy contents of [A] to [L]
10 800F 3E,00 MVI A,00 Clear contents of [A]
11 80011 8C ADC H Add contents of [H] to [A]
12 8012 27 DAA Decimal adjust [A]
13 8013 67 MOV H,A Copy contents of [A] to [H]
14 8014 78 MOV A,B Copy contents of [B] to [A]
15 8015 C6,99 ADI ,99 Add immediately to accumulator 99
16 8017 27 DAA Decimal adjust [A]
17 8018 47 MOV B,A Copy contents of [A] to [B]
18 8019 C2,0B,80 JNZ(START) Jump on no zero to specified address
19 801C 22,00,F1 SHLD(F100) Store data from HL pair onto specified
location
20 801F CF RST 1 Restart
INPUT OUTPUT
F001: F000 F101: F100
11 : 12 01 : 32
K. Adisesha 21