Simple 8086 microprocessor programs

..............

Friday, January 8, 2010

Generate prime numbers

MOV CH,[1500h]
MOV DI,2000h
MOV [DI],02h
MOV BL,03h
LOC2: CMP BL,CH
JG LOC5
MOV CL,BL
LOC1: DEC CL
CMP CL,01h
JE LOC3
MOV AL,BL
XOR AH,AH
DIV CL
CMP AH,00h
JZ LOC4
JMP LOC1
LOC3: INC DI
MOV [DI],BL
LOC4: ADD BL,02h
JMP LOC2
LOC5: HLT

Solve the Equation


==============SQRT(x^2*y)+SQRT(y^2*x)=================
HINTS:

[1500]=x =4
[1501]=y =4

x^2*y= [1600]
SQRT(x^2*y)= [1700]
y^2*x= [1800]
SQRT(y^2*x)= [1900]

SQRT(x^2*y)+SQRT(y^2*x)= [2000]
======================================================


MOV BX,1500h
MOV AL,[BX]
CALL PRODT
INC BX
MOV SI,BX
CALL PRODT
MOV BX,1600h
MOV [BX],AX
CALL ROOT
MOV [1700h],AX
MOV BX,SI
MOV AX,[BX]
CALL PRODT
DEC BX
CALL PRODT
MOV BX,1800h
MOV [BX],AX
CALL ROOT
MOV [1900h],AX
ADD AX,[1700h]
MOV [2000h],AX
HLT
PRODT: MOV CL,[BX]
MUL CL
RET

ROOT:
MOV CX,0001h
c: MOV AX,[BX]
XOR DX,DX
DIV CX
CMP AX,CX
JZ d
JC d
INC CX
JMP c
d: RET
===========================
by ramesh.k<>

Even and odd Seperation

MOV DL,[1500h]
MOV SI,2000h
MOV BP,2100h
MOV BX,2200h
MOV SI,2000h
XOR CX,CX
LOC2: MOV AL,[SI]
RCR AL,01h
JNB LOC1
INC CH
MOV AL,[SI]
MOV [BP],AL
INC BP
INC SI
DEC DL
JNZ LOC2
JMP STOP
LOC1: INC CL
MOV AL,[SI]
MOV [BX],AL
INC BX
INC SI
DEC DL
JNZ LOC2
STOP: HLT
MOV

GCD of two numbers:



XOR AX,AX
MOV AL,[1500h]
MOV BL,[1501h]
loc3: CMP AL,BL
JNC loc1
XCHG AL,BL
MOV AH,00h
loc1: DIV BL
XOR AH,00h
JZ loc2
MOV AL,AH
SUB AH,AH
JMP loc3
loc2: MOV [1504h],BL
HLT

FIBONACCI SERIES (x86 kit)





MOV CX,[1400]
MOV DX,1500h
MOV AX,0000h
MOV BX,0001h
LOC1: MOV [DX],AX
INC DX
INC DX
ADD AX,BX
XCHG AX,BX
DEC CX
JNZ LOC1
HLT

Occurance of numbers (x86 kit)

Occurance of numbers



MOV CX,[1500h]
MOV AX,[1502h]
MOV DX,0000h
MOV BX,1504h
LOC2: CMP AX,[BX]
JNZ LOC1
INC DX
LOC1: INC BX
INC BX
DEC CX
JNZ LOC2
MOV [1600h],DX
HLT

Program to prove sqrt(x)+sqrt(x)=sqrt(x+y)

Program to prove sqrt(x)+sqrt(x)=sqrt(x+y)


MOV DX,0000h
MOV BX,1500h
CALL A
MOV [1700h],CL
INC BX
CALL A
MOV [1800h],AL
ADD AL,[1700h]
MOV [1900h],AL
MOV AL,[1500h]
ADD AL,[BX]
INC BX
MOV [BX],AL
CALL A
MOV [2000h], CL
CMP CL,[1900h]
JZ B
INC DX
B:
MOV [2100h],DX
HLT
A:
MOV CL,01h
c:
MOV AL,[BX]
DIV CL
MOV AH,00h
CMP AL,CL
JZ d
JC d
INC CL
JMP c
d:
RET

Sorting in descending order(x86)


SORTING DESCENDING


MOV CX,[1500h]
DEC CX
loc3: MOV DX,CX
MOV BX,1502h
loc2: MOV AX,[BX]
CMP [BX+02h],AX
JB loc1
XCHG AX,[BX+02h]
MOV [BX],AX
loc1: INC BX
INC BX
DEC DX
JNZ loc2
DEC CX
JNZ loc3
HLT

Even and odd sorting

;PROGRAM TO SEPERATE EVEN AND ODD NUMBERS
;AND SORTING THEM IN ASCENDING ORDER
MOV CL,[1500h]
MOV SI,2000h
MOV BP,2100h
MOV BX,2200h
MOV SI,2000h
LOC2: MOV AL,[SI]
RCR AL,01h
JNB LOC1
INC DH
MOV AL,[SI]
MOV [BP],AL
INC BP
INC SI
DEC CL
JNZ LOC2
JMP LOC3
LOC1: INC AH
MOV AL,[SI]
MOV [BX],AL
INC BX
INC SI
DEC CL
JNZ LOC2
LOC3: MOV CH,DH
MOV DX,2100h
CALL SORT
MOV CH,AH
MOV DX,2200h
CALL SORT
HLT
SORT:
DEC CH
loc6: MOV CL,CH
MOV BX,DX
loc5: MOV AL,[BX]
CMP [BX+01h],AL
JNC loc4
XCHG AL,[BX+01h]
MOV [BX],AL
loc4: INC BX
DEC CL
JNZ loc5
DEC CH

Addition -x86 trainer kit-program


Q: (A+b)x(c+d)



MOV AX,[1500h]
MOV BX,[1501h]
ADD AX,BX
PUSH AX
MOV AX,[1502h]
MOV BX,[1503h]
ADD BX,AX
POP AX
MUL BX
MOV [1504h],AX
HLT

1's complement of a number



MOV AX,[1800h]
NOT AX
MOV [2000h],AX
HLT

;Execution: SW 1800 = AE34 ;
;GO 1000 EXECUTING.....
;SW:2000 6EF5