8086 Programs
8086 Programs
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B0 04 mov al, 04h
[ 2] 0002: B3 08 movbl, 08h
[ 3] 0004: 02 C3 add al, bl
[ 4] 0006: F4 hlt
===============================================================
Output: AX = 000CH
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: C6 06 78 05 07 mov [1400], 07h
[ 2] 0005: C6 06 79 05 08 mov [1401], 08h
[ 3] 000A: A0 78 05 mov al, [1400]
[ 4] 000D: 8A 1E 79 05 movbl, [1401]
[ 5] 0011: 02 C3 add al, bl
[ 6] 0013: F4 hlt
===============================================================
Output: AX = 000FH
• Using direct and immediate addressing modes:
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: C6 06 78 05 07 mov [1400], 07h
[ 2] 0005: B3 08 movbl, 08h
[ 3] 0007: 00 1E 78 05 add [1400], bl
[ 4] 000B: A1 78 05 movax, [1400]
[ 5] 000E: F4 hlt
===============================================================
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B8 04 10 movax, 1004h
[ 2] 0003: BB 02 10 movbx, 1002h
[ 3] 0006: 03 C3 add ax, bx
[ 4] 0008: F4 hlt
===============================================================
Output: AX = 2006H
• Using direct and register addressing modes:
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 8] 001D: F4 hlt
===============================================================
Output: AX = 0503H
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 4] 0008: F4 hlt
===============================================================
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B0 20 mov al, 20h
[ 2] 0002: A2 78 05 mov [1400], al
[ 3] 0005: B3 20 movbl, 20h
[ 4] 0007: B1 1F mov cl, 1Fh
[ 5] 0009: 03 06 78 05 cc: add ax, [1400]
[ 6] 000D: FE C9 dec cl
[ 7] 000F: 75 F8 jnz cc
[ 8] 0011: F4 hlt
===============================================================
Output: AX = 0400H
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B8 01 00 movax, 0005h
[ 2] 0003: A3 78 05 mov [1400], ax
[ 3] 0006: BB 08 00 movbx, 0008h
[ 4] 0009: B9 07 00 mov cx, 0007h
[ 5] 000C: BA 00 00 mov dx, 0000h
[ 6] 000F: 03 06 78 05 cc: add ax, [1400]
[ 7] 0013: 73 01 jnc bb
[ 8] 0015: 42 inc dx
[ 9] 0016: 49 bb: dec cx
[ 10] 0017: 75 F6 jnz cc
[ 11] 0019: F4 hlt
===============================================================
Output: AX = 0028H
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B0 02 mov al, 72h
[ 2] 0002: B3 03 movbl, 73h
[ 3] 0004: F6 E3 mulbl
[ 4] 0006: F4 hlt
===============================================================
Output: AX = 3336H
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B8 72 70 movax, 7072h
[ 2] 0003: BB 73 70 movbx, 7073h
[ 3] 0006: F7 E3 mulbx
[ 4] 0008: F4 hlt
===============================================================
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B0 02 mov al, 02h (positive number)
[ 2] 0002: B3 93 movbl, 93h (2’s complement of –ve number ‘6D’)
[ 3] 0004: F6 EB imulbl
[ 4] 0006: F4 hlt
===============================================================
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B8 6D 8A movax, 8A6Dh (2’s complement of –ve ‘7593’)
[ 2] 0003: BB 45 68 movbx, 6845h (positive number)
[ 3] 0006: F7 EB imulbx
[ 4] 0008: F4 hlt
===============================================================
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B0 20 mov al, 20h
[ 2] 0002: B3 03 movbl, 03h
[ 3] 0004: B1 00 mov cl, 00h
[ 4] 0006: FE C1 loo: inc cl
[ 5] 0008: 3A C3 cmp al, bl
[ 6] 000A: 7C 0A jl loo2
[ 7] 000C: 74 04 je loo1
[ 8] 000E: 2A C3 sub al, bl
[ 9] 0010: 79 F4 jns loo
[ 10] 0012: 2A C3 loo1: sub al, bl
[ 11] 0014: FE C1 inc cl
[ 12] 0016: FE C9 loo2: dec cl
[ 13] 0018: F4 hlt
===============================================================
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: B8 0B 00 movax, 000Bh
[ 2] 0003: BB 03 00 movbx, 0003h
[ 3] 0006: F7 F3 div bx
[ 4] 0008: F4 hlt
===============================================================
Output: Quotient: AX = 03H, Reminder: DX = 02H
Reminder: AH = 14H
Aim: Find out largest number in a given array and store it in AX register.
• 8-bit numbers
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
==============================================================
[ 1] 0000: C6 06 C8 00 10 mov [0200], 10h
[ 2] 0005: C6 06 C9 00 00 mov [0201], 00h
[ 3] 000A: C6 06 CA 00 41 mov [0202], 41h
[ 4] 000F: C6 06 CB 00 83 mov [0203], 83h
[ 5] 0014: C6 06 CC 00 58 mov [0204], 58h
[ 6] 0019: C6 06 CD 00 72 mov [0205], 72h
[ 7] 001E: C6 06 CE 00 39 mov [0206], 39h
[ 8] 0023: C6 06 CF 00 46 mov [0207], 46h
[ 9] 0028: C6 06 D0 00 53 mov [0208], 53h
[ 10] 002D: C6 06 D1 00 84 mov [0209], 84h
[ 11] 0032: C6 06 D2 00 30 mov [0210], 30h
[ 12] 0037: C6 06 D3 00 00 mov [0211], 00h
[ 13] 003C: B0 00 mov al, 00h
[ 14] 003E: BE C8 00 movsi, 0200
[ 15] 0041: 8A 0C mov cl, [si]
[ 16] 0043: 46 incsi
[ 17] 0044: 46 back: incsi
[ 18] 0045: 3A 04 cmp al, [si]
[ 19] 0047: 73 02 jae go
[ 20] 0049: 8A 04 mov al, [si]
[ 21] 004B: E2 F7 go: loop back
[ 22] 004D: F4 hlt
==============================================================
Output: AX = 84H
• 16-bit numbers
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: C6 06 C8 00 06 mov [0200],06h
[ 2] 0005: C6 06 C9 00 00 mov [0201],00h
[ 3] 000A: C6 06 CA 00 41 mov [0202],41h
[ 4] 000F: C6 06 CB 00 83 mov [0203],83h
[ 5] 0014: C6 06 CC 00 58 mov [0204],58h
[ 6] 0019: C6 06 CD 00 72 mov [0205],72h
[ 7] 001E: C6 06 CE 00 39 mov [0206],39h
[ 8] 0023: C6 06 CF 00 46 mov [0207],46h
[ 9] 0028: C6 06 D0 00 53 mov [0208],53h
[ 10] 002D: C6 06 D1 00 90 mov [0209],90h
[ 11] 0032: C6 06 D2 00 30 mov [0210],30h
[ 12] 0037: C6 06 D3 00 06 mov [0211],06h
[ 13] 003C: C6 06 D4 00 99 mov [0212],99h
[ 14] 0041: B8 00 41 mov ax,4100h
[ 15] 0044: BE C8 00 mov si,0200
[ 16] 0047: 8A 0C mov cl,[si]
[ 17] 0049: 46 incsi
[ 18] 004A: 46 back:incsi
[ 19] 004B: 46 incsi
[ 20] 004C: 3B 04 cmpax,[si]
[ 21] 004E: 73 02 jae go
[ 22] 0050: 8B 04 movax,[si]
[ 23] 0052: E2 F6 go: loop back
[ 24] 0054: F4 hlt
===============================================================
Output: AX = 9906H
Aim: Find out the smallest number in a given array and store it in AX register.
• 8-bit numbers
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: C6 06 C8 00 0A mov [0200],0ah
[ 2] 0005: C6 06 C9 00 05 mov [0201],05h
[ 3] 000A: C6 06 CA 00 11 mov [0202],11h
[ 4] 000F: C6 06 CB 00 13 mov [0203],13h
[ 5] 0014: C6 06 CC 00 58 mov [0204],58h
[ 6] 0019: C6 06 CD 00 22 mov [0205],22h
[ 7] 001E: C6 06 CE 00 39 mov [0206],39h
[ 8] 0023: C6 06 CF 00 16 mov [0207],16h
[ 9] 0028: C6 06 D0 00 53 mov [0208],53h
[ 10] 002D: C6 06 D1 00 14 mov [0209],14h
[ 11] 0032: C6 06 D2 00 30 mov [0210],30h
[ 12] 0037: C6 06 D3 00 04 mov [0211],04h
[ 13] 003C: B0 05 mov al,05h
[ 14] 003E: BE C8 00 mov si,0200
[ 15] 0041: 8A 0C mov cl,[si]
[ 16] 0043: 46 incsi
[ 17] 0044: 46 back:incsi
[ 18] 0045: 3A 04 cmp al,[si]
[ 19] 0047: 7C 02 jl go
[ 20] 0049: 8A 04 mov al,[si]
[ 21] 004B: E2 F7 go: loop back
[ 22] 004D: F4 hlt
===============================================================
Output: AX = 04H
• 16-bit numbers
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
===============================================================
[ 1] 0000: C6 06 C8 00 06 mov [0200],06h
[ 2] 0005: C6 06 C9 00 05 mov [0201],05h
[ 3] 000A: C6 06 CA 00 01 mov [0202],01h
[ 4] 000F: C6 06 CB 00 13 mov [0203],13h
[ 5] 0014: C6 06 CC 00 58 mov [0204],58h
[ 6] 0019: C6 06 CD 00 22 mov [0205],22h
[ 7] 001E: C6 06 CE 00 39 mov [0206],39h
[ 8] 0023: C6 06 CF 00 16 mov [0207],16h
[ 9] 0028: C6 06 D0 00 53 mov [0208],53h
[ 10] 002D: C6 06 D1 00 14 mov [0209],14h
[ 11] 0032: C6 06 D2 00 30 mov [0210],30h
[ 12] 0037: C6 06 D3 00 04 mov [0211],04h
[ 13] 003C: C6 06 D4 00 90 mov [0212],90h
[ 14] 0041: B8 05 01 mov ax,0105h
[ 15] 0044: BE C8 00 mov si,0200
[ 16] 0047: 8A 0C mov cl,[si]
[ 17] 0049: 46 incsi
[ 18] 004A: 46 back:incsi
[ 19] 004B: 46 incsi
[ 20] 004C: 3B 04 cmpax,[si]
[ 21] 004E: 76 02 jbe go
[ 22] 0050: 8B 04 movax,[si]
[ 23] 0052: E2 F6 go: loop back
[ 24] 0054: F4 hlt
===============================================================
Output: AX = 0105H
• 8-bit numbers
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
=================================================================
[ 1] 0000: C6 06 C8 00 38 MOV [0200],38h
[ 2] 0005: C6 06 C9 00 47 MOV [0201],47h
[ 3] 000A: C6 06 CA 00 02 MOV [0202],02h
[ 4] 000F: C6 06 CB 00 11 MOV [0203],11h
[ 5] 0014: C6 06 CC 00 29 MOV [0204],29h
[ 6] 0019: C6 06 CD 00 34 mov [0205],34h
[ 7] 001E: B9 05 00 MOV CX,0006h
[ 8] 0021: 49 DEC CX
[ 9] 0022: 8B D1 Again: MOV DX,CX
[ 10] 0024: BE C8 00 MOV SI,0200
[ 11] 0027: 8A 04 Up: MOV AL,[SI]
[ 12] 0029: 46 INC SI
[ 13] 002A: 8A 1C MOV BL,[SI]
[ 14] 002C: 3A C3 CMP AL,BL
[ 15] 002E: 7E 08 JLE Next
[ 16] 0030: 86 C3 XCHG AL,BL
[ 17] 0032: 88 1C MOV [SI],BL
[ 18] 0034: 4E DEC SI
[ 19] 0035: 88 04 MOV [SI],AL
[ 20] 0037: 46 INC SI
[ 21] 0038: 4A Next: DEC DX
[ 22] 0039: 75 EC JNZ Up
[ 23] 003B: 49 DEC CX
[ 24] 003C: 75 E4 JNZ Again
[ 25] 003E: A0 C8 00 mov al,[0200]
[ 26] 0041: 8A 26 C9 00 mov ah,[0201]
[ 27] 0045: 8A 1E CA 00 movbl,[0202]
[ 28] 0049: 8A 3E CB 00 movbh,[0203]
[ 29] 004D: 8A 0E CC 00 mov cl,[0204]
[ 30] 0051: F4 hlt
=================================================================
[0201] = 11H
[0202] = 29H
[0203] = 34H
[0204] = 38H
[0205] = 47H
• 8-bit numbers
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
=================================================================
[ 1] 0000: C6 06 C8 00 38 MOV [0200],38h
[ 2] 0005: C6 06 C9 00 47 MOV [0201],47h
[ 3] 000A: C6 06 CA 00 02 MOV [0202],02h
[ 4] 000F: C6 06 CB 00 11 MOV [0203],11h
[ 5] 0014: C6 06 CC 00 29 MOV [0204],29h
[ 6] 0019: C6 06 CD 00 34 mov [0205],34h
[ 7] 001E: B9 05 00 MOV CX,0006h
[ 8] 0021: 49 DEC CX
[ 9] 0022: 8B D1 Again: MOV DX,CX
[ 10] 0024: BE C8 00 MOV SI,0200
[ 11] 0027: 8A 04 Up: MOV AL,[SI]
[ 12] 0029: 46 INC SI
[ 13] 002A: 8A 1C MOV BL,[SI]
[ 14] 002C: 3A C3 CMP AL,BL
[ 15] 002E: 7D 08 JGE Next
[ 16] 0030: 86 C3 XCHG AL,BL
[ 17] 0032: 88 1C MOV [SI],BL
[ 18] 0034: 4E DEC SI
[ 19] 0035: 88 04 MOV [SI],AL
[ 20] 0037: 46 INC SI
[ 21] 0038: 4A Next: DEC DX
[ 22] 0039: 75 EC JNZ Up
[ 23] 003B: 49 DEC CX
[ 24] 003C: 75 E4 JNZ Again
[ 25] 003E: A0 C8 00 mov al,[0200]
[ 26] 0041: 8A 26 C9 00 mov ah,[0201]
[ 27] 0045: 8A 1E CA 00 movbl,[0202]
[ 28] 0049: 8A 3E CB 00 movbh,[0203]
[ 29] 004D: 8A 0E CC 00 mov cl,[0204]
[ 30] 0051: F4 hlt
=================================================================
Output: AL = 47H AH = 38H BL = 34H
BH = 29H CL = 11H
[0201] = 38H
[0202] = 34H
[0203] = 29H
[0204] = 11H
[0205] = 02H
Aim: Write an algorithm for copying strings from source memory to destination memory.
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
=================================================================
[ 1] 0000: C6 06 C8 00 05 mov [0200],05h
[ 2] 0005: C6 06 C9 00 01 mov [0201],01h
[ 3] 000A: C6 06 CA 00 04 mov [0202],04h
[ 4] 000F: C6 06 CB 00 02 mov [0203],02h
[ 5] 0014: C6 06 CC 00 10 mov [0204],10h
[ 6] 0019: C6 06 CD 00 15 mov [0205],15h
[ 7] 001E: C6 06 CE 00 25 mov [0206],25h
[ 8] 0023: FC cld
[ 9] 0024: BE C8 00 mov si,0200
[ 10] 0027: BF 2C 01 mov di,0300
[ 11] 002A: 8A 0C mov cl,[si]
[ 12] 002C: 46 incsi
[ 13] 002D: A4 back:movsb
[ 14] 002E: E2 FD loop back
[ 15] 0030: A0 2C 01 mov al,[0300]
[ 16] 0033: 8A 1E 2D 01 movbl,[0301]
[ 17] 0037: 8A 0E 2E 01 mov cl,[0302]
[ 18] 003B: F4 hlt
=================================================================
Output: AX = 01H, BX = 04H, CX = 02H.
[0301] = 04H
[0302] = 02H
[0303] = 10H
[0304] = 15H
[0305] = 25H
Aim: Write an algorithm to find out the Fibonacci series of a given sequence.
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
=================================================================
[ 1] 0000: B1 06 MOV CL,06
[ 2] 0002: BE B8 0B MOV SI,3000
[ 3] 0005: B0 00 MOV AL,00
[ 4] 0007: 88 04 MOV [SI],AL
[ 5] 0009: 46 INC SI
[ 6] 000A: B3 01 MOV BL,01
[ 7] 000C: 88 1C MOV [SI],BL
[ 8] 000E: 02 C3 L1:ADD AL,BL
[ 9] 0010: 8A D0 MOV DL,AL
[ 10] 0012: 46 INC SI
[ 11] 0013: 88 14 MOV [SI],DL
[ 12] 0015: 8A C3 MOV AL,BL
[ 13] 0017: 8A DA MOV BL,DL
[ 14] 0019: E2 F3 LOOP L1
[ 15] 001B: F4 hlt
=================================================================
[3000] = 00H
[3001] = 01H
[3002] = 02H
[3003] = 03H
[3004] = 05H
[3005] = 08H
[3006] = 0DH
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
=================================================================
[ 1] 0000: C6 06 E8 03 01 mov [1000], 01h
[ 2] 0005: C6 06 E9 03 02 mov [1001], 02h
[ 3] 000A: C6 06 EA 03 03 mov [1002], 03h
[ 4] 000F: C6 06 EB 03 04 mov [1003], 04h
[ 5] 0014: C6 06 D0 07 01 mov [2000], 01h
[ 6] 0019: C6 06 D1 07 02 mov [2001], 02h
[ 7] 001E: C6 06 D2 07 03 mov [2002], 03h
[ 8] 0023: C6 06 D3 07 04 mov [2003], 04h
[ 9] 0028: BE E8 03 MOV SI,1000
[ 10] 002B: BF D0 07 MOV DI,2000
[ 11] 002E: B9 04 00 MOV CX,0004
[ 12] 0031: FC CLD
[ 13] 0032: F3 A6 REP CMPSB
[ 14] 0034: 74 00 JE Last
[ 15] 0036: B3 0F last:mov bl,0FH
[ 16] 0038: F4 hlt
=================================================================
Output: BX = 0FH , CX = 00H
Note: The REP instruction repeats the corresponding loop until the condition mentioned it’s below is
satisfied. It will come out of the loop if the condition is satisfied.
================================================================
[LINE] LOC: MACHINE CODE SOURCE
=================================================================
[ 1] 0000: C6 06 E8 03 01 mov [1000], 01h
[ 2] 0005: C6 06 E9 03 02 mov [1001], 02h
[ 3] 000A: C6 06 EA 03 03 mov [1002], 03h
[ 4] 000F: C6 06 EB 03 04 mov [1003], 04h
[ 5] 0014: C6 06 D0 07 01 mov [2000], 01h
[ 6] 0019: C6 06 D1 07 02 mov [2001], 02h
[ 7] 001E: C6 06 D2 07 00 mov [2002], 00h
[ 8] 0023: C6 06 D3 07 04 mov [2003], 04h
[ 9] 0028: BE E8 03 MOV SI,1000
[ 10] 002B: BF D0 07 MOV DI,2000
[ 11] 002E: B9 04 00 MOV CX,0004
[ 12] 0031: FC CLD
[ 13] 0032: F3 A6 REP CMPSB
[ 14] 0034: 74 00 JE Last
[ 15] 0036: B3 0F last:mov bl,0FH
[ 16] 0038: F4 hlt
=================================================================
Output: BX = 0FH , CX = 01H
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
=================================================================
[ 1] 0000: C6 06 70 17 01 mov [6000],01H
[ 2] 0005: C6 06 71 17 06 mov [6001],06H
[ 3] 000A: C6 06 72 17 09 mov [6002],09H
[ 4] 000F: C6 06 73 17 11 mov [6003],11H
[ 5] 0014: C6 06 74 17 21 mov [6004],21H
[ 6] 0019: C6 06 75 17 27 mov [6005],27H
[ 7] 001E: C6 06 76 17 04 mov [6006],04H
[ 8] 0023: C6 06 77 17 19 mov [6007],19H
[ 9] 0028: C6 06 78 17 0E mov [6008],0EH
[ 10] 002D: C6 06 79 17 8E mov [6009],8EH
[ 11] 0032: BF 70 17 MOV DI, 6000
[ 12] 0035: B1 09 MOV CL, 09
[ 13] 0037: B0 09 MOV AL, 09H
[ 14] 0039: FC CLD
[ 15] 003A: F2 REPNZ
[ 16] 003B: AE SCASB
[ 17] 003C: F4 hlt
=================================================================
Output: CX = 06H:
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
=================================================================
[ 1] 0000: B8 06 00 MOV Ax, 0006H
[ 2] 0003: 33 C9 xorcx,cx
[ 3] 0005: 8B C8 MOV Cx, ax
[ 4] 0007: 83 F9 01 Back: cmp cx,01h
[ 5] 000A: 74 05 jzll
[ 6] 000C: 49 DEC Cx
[ 7] 000D: F7 E1 MUL Cx
[ 8] 000F: 75 F6 jnz back
[ 9] 0011: F4 ll: HLT
=================================================================
Output: AX = 02D0H
15. Addition of two 2X2 matrices
=================================================================
[LINE] LOC: MACHINE CODE SOURCE
=================================================================