Professional Documents
Culture Documents
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
MOV ODD,BL
MOV EVE,DL
INT 03
CODE ENDS
END START
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
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