Sie sind auf Seite 1von 9

8086

2nd Largest no.in an array using 8086


ASSUME CS:CODE,DS:DATA
DATA SEGMENT
ARR DB 01H,10H,20H,25H,30H,90H,15H,35H,89H,12H
LEN EQU ($-ARR)
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX

MOV CL,LEN-1
LEA SI,ARR
MOV BX,SI
MOV AL,[SI]
REPEAT:
INC SI
CMP AL,[SI]
JNC NOCHANGE
MOV AL,[SI]
MOV BX,SI
NOCHANGE:LOOP REPEAT
MOV SI,BX
MOV BYTE PTR[SI],0000H

MOV CL,LEN-1
LEA SI,ARR
MOV BX,SI
MOV AL,[SI]
REPEAT1:
INC SI
CMP AL,[SI]
JNC NOCHANGE1
MOV AL,[SI]
NOCHANGE1:LOOP REPEAT1

INT 03
CODE ENDS
END START
count number of zeros in a 16-bit string 8086
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
A DB "1010101010111111"
L DB 16H
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
LEA SI,A
MOV CL,L
MOV AX,0
MOV BX,0
AGAIN:
MOV AX,[SI]
SUB AX,30H
CMP AL,00
JNE BACK
INC BL
BACK:
MOV AX,0000
INC SI
LOOP AGAIN
INT 03
CODE ENDS
END START

No of odd and even byte type data in 8086


ASSUME CS:CODE,DS:DATA
DATA SEGMENT
ARR DB 01H,10H,20H,25H,30H,90H,15H,35H,89H,12H
LEN EQU ($-ARR)
ODD DB (?)
EVE DB (?)
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV CL,LEN
LEA SI,ARR
MOV AL,[SI]
MOV BX,00H
MOV DX,00H
REPEAT:
RCR AL,1
JNC EVEN1
INC BL
JMP LP
EVEN1:
INC DL
LP:
INC SI
MOV AL,[SI]
LOOP REPEAT

MOV ODD,BL
MOV EVE,DL
INT 03
CODE ENDS
END START

Largest number in array 8086


ASSUME CS:CODE,DS:DATA
DATA SEGMENT
ARR DB 01H,10H,20H,25H,30H,90H,15H,35H,89H,12H
LEN EQU ($-ARR)
LARGE DB (?)
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV CL,LEN-1
LEA SI,ARR
MOV AL,[SI]
REPEAT:
INC SI
CMP AL,[SI]
JNC NOCHANGE
MOV AL,[SI]
NOCHANGE:LOOP REPEAT

MOV LARGE,AL
INT 03
CODE ENDS
END START
Avg of 10 numbers in array
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
ARR DB 01H,2H,3H,4H,5H,6H,7H,8H,9H,0AH
LEN EQU ($-ARR)
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV CL,10
MOV BX,00H
MOV AX,00H
LEA SI,ARR
REPEAT:
MOV AL,[SI]
INC SI
ADD BX,AX
LOOP REPEAT
MOV AX,BX
MOV BL,10
DIV BL
INT 03
CODE ENDS
END START

8 bit binary data to gray code


ASSUME CS:CODE,DS:DATA
DATA SEGMENT
A DB 2H
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
XOR AX,AX
MOV AL,A
MOV BL,AL
SHR AL,01
XOR BL,AL
INT 03
CODE ENDS
END START

Sum of digits of a given number using 8086


assume cs:code,ds:data
data segment
a db "123"
l db 3h
data ends
code segment
start:mov ax,data
mov ds,ax
lea si,a
mov cl,l
mov ax,0
again: add ax,[si]
sub ax,30h
inc si
loop again
int 03

Armstrong number
assume cs:code,ds:data
data segment
a db "371"
b dw 371
l db 3h
data ends
code segment
start:mov ax,data
mov ds,ax
mov cx,3h
lea si,a
again: MOV BL,[si]
sub bl,30h
mov ax,1h
mov di,3h
l1: mul bl
dec di
jnz l1
add dx,ax
inc si
loop again
cmp b,dx
jnz l3
inc cx
l3:int 03
code ends
end start

logical operations by 8086


ASSUME CS:CODE,DS:DATA
DATA SEGMENT
A DB 10H
B DB 20H
C DB 30H
D DB 40H
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV AL,A
MOV BL,B
MOV CL,C
MOV DL,D
AND AL,BL
OR BL,CL
XOR CL,DL
NOT DL
INT 03
CODE ENDS
END START

Fibonacci using 8086


assume cs:code,ds:data
data segment
res db (?)
var db 0AH
data ends
code segment
START:mov AX,data
mov DS,AX
LEA SI,res
mov CL,var
mov AX,00H
mov BX,01H
L1:ADD AX,BX
DAA;
mov [SI],AX
mov AX,BX
mov BX,[SI]
INC SI
LOOP L1
INT 03
code ends
END START

Sqrt of perfect square


ASSUME CS:CODE,DS:DATA
DATA SEGMENT
A DB 31H
VAL DB (?)
DATA ENDS
CODE SEGMENT
START:MOV AX,DATA
MOV DS,AX
MOV BL,01H
REPEAT:
XOR AX,AX
MOV AL,A
DIV BL
CMP AL,BL
JE L1
JC EX
INC BL
JMP REPEAT
L1:MOV VAL,AL
EX:INT 03
CODE ENDS
END START

Sort in Ascending order


DATA SEGMENT
STRING1 DB 99H,12H,56H,45H,36H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CH,04H
UP2: MOV CL,04H
LEA SI,STRING1
UP1: MOV AL,[SI]
MOV BL,[SI+1]
CMP AL,BL
JC DOWN
MOV DL,[SI+1]
XCHG [SI],DL
MOV [SI+1],DL
DOWN: INC SI
DEC CL
JNZ UP1
DEC CH
JNZ UP2
INT 3
CODE ENDS
END START

Das könnte Ihnen auch gefallen