8086 Alp's
8086 Alp's
MOV DI,2000H
MOV AL,[DI]
INC DI
ADD AL,[DI]
INC DI
MOV [DI],AL
HLT
16-Bit Addition
MOV DI,2000H
MOV AX,[DI]
INC DI
INC DI
ADD AX,[DI]
INC DI
INC DI
MOV [DI],AX
HLT
8-Bit Multiplication
MOV DI,2000H
MOV AL,[DI]
INC DI
MOV BL,[DI]
MUL BL
INC DI
MOV [DI],AX
HLT
16 Bit Multiplication
MOV DI,2000H
MOV AX,[DI]
INC DI
INC DI
MOV BX,[DI]
MUL BX
INC DI
INC DI
MOV [DI],AX
INC DI
INC DI
MOV [DI],DX
HLT
8-Bit Division
MOV DI,1200H
MOV AL,[DI]
INC DI
MOV BL,[DI]
DIV BL
INC DI
MOV [DI],AL
INC DI
MOV [DI],AH
HLT
16-Bit Division
MOV DI,2000H
MOV AX,[DI]
INC DI
INC DI
MOV BX,[DI]
DIV BX
INC DI
INC DI
MOV [DI],AX ;Quotient in [DI]
INC DI
INC DI
MOV [DI],DX ;Remainder in [DI]
HLT
FACTORIAL of N
MOV SI,2000
MOV CX,0005
MOV AX,0001
UP MUL CX
DEC CX
JNZ UP
MOV [SI],AX
HLT
SUM OF N NATUARAL NUMBERS
MOV SI,2000
MOV CX,0005
MOV AX,0000
UP ADD AX, CX
DEC CX
JNZ UP
MOV [SI],AX
HLT
Sum of Series of 16-Bit Numbers
• DATA: 2500: F0, 12, 7F, 8D, 9B, A0, 09, 87, 26, 54 H
• RESULT: 2500: F0, A0, 9B, 8D, 87, 7F, 54, 26, 12, 09 H
Descending order:
MOV SI, 2500H ; SI is the pointer to the series
MOV DL, 0AH ; Count is stored in DL
DEC DL ; number of comparisons =DL-1
REPEAT: MOV CL, DL
NEXT: MOV AL, [SI] ; copy a number to AL
INC SI
CMP AL, [SI] ; compare with the next number
JNC SKIP ; if the first number>second then
MOV BL, [SI] ; no exchange otherwise exchange
MOV [SI], AL ; the two memory location data
DEC SI
MOV [SI], BL
INC SI ; increment the pointer
SKIP: DEC CL ; repeat until CL=0
JNZ NEXT
MOV SI, 2500H
DEC DL ; Go for next pass if DL 0
JNZ REPEAT
INT 3
.
.
.
ASCENDING ORDER
MOV SI,2000H
MOV CL,[SI]
DEC CL
REPEAT: MOV SI,2000H
MOV CH,[SI]
DEC CH
INC SI
REPCOM: MOV AL,[SI]
INC SI
CMP AL,[SI]
JC AHEAD
XCHG AL,[SI]
XCHG AL,[SI+1]
AHEAD: DEC CH
JNZ REPCOM
DEC CL
JNZ REPEAT
DESCENDING ORDER
MOV SI,2000H
MOV CL,[SI]
DEC CL
REPEAT: MOV SI,2000H
MOV CH,[SI]
DEC CH
INC SI
REPCOM: MOV AL,[SI]
INC SI
CMP AL,[SI]
JNC AHEAD
XCHG AL,[SI]
XCHG AL,[SI+1]
AHEAD: DEC CH
JNZ REPCOM
DEC CL
JNZ REPEAT
HLT
PROGRAM TO PERFORM BLOCK TRANSFER OF DATA
UP CLD
MOVSB
DEC CX
JNZ UP
HLT
PROGRAM TO PERFORM BLOCK INTERCHANGE
Example 1:
MOV AX,[1000]
MOV BX,[1002]
AND AX,BX
MOV [2000],AX
HLT
Example 2:
MOV AX,[1000]
MOV BX,[1002]
OR AX,BX
MOV [2000],AX
HLT
.
Example 3:
MOV AX,[1000]
MOV BX,[1002]
XOR AX,BX
MOV [2000],AX
HLT
Example 4:
MOV AX,[1000]
NOT AX
MOV [2000],Ax
HLT
Binary to unpacked BCD
MOV SI, 3000H ; initialize memory pointer
MOV AH, 00H
MOV AL, [SI] ; store the BCD number in Accumulator
MOV CL, 64H ; divide the BCD number with 100
DIV CL R = AH Q =AL AL/CL
MOV [3001], AL ; store the most significant digit
MOV AL, AH
MOV AH, 00
MOV CL, 0AH ; divide the remainder with 10
DIV CL
MOV [3002], AL ; store the next digit
MOV [3003], AH ; store the last digit
INT 20H
DATA
3000H – FB H
RESULT
3001 – 02
3002 – 05
3003 – 01
AL = 45
BL = 45
BCD TO BINARY CONVERSION PROGRAM
Programs
By using
TASM Software
Addition of two 16-bit numbers
ASSUME CS: CODE, DS: DATA
DATA SEGMENT
OPR1 DW 1234H
OPR2 DW 5678H
RESULT DW 01 DUP (0000)
DATA ENDS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV AX, OPR1
MOV BX, OPR2
CLC
ADD AX, BX
MOV DI, OFFESET RESULT
MOV [DI], AX
MOV AH, 4CH
INT 21H
CODE ENDS
END START
ADDITION OF TWO 16-BIT NUMBERS
CODE SEGMENT
START: MOV AX, DATA
MOV DS, AX
MOV AX, OPR1
MOV BX, OPR2
CLC
ADD AX, BX
MOV DI, OFFESET
RESULT
MOV [DI], AX
MOV AH, 4CH
INT 21H
CODE ENDS
END START
NUMBER OF EVEN AND ODD NUMBERS FROM A SERIES OF 16-BIT HEXA DECIMAL NUMBERS