.386
STACK SEGMENT USE16
DB 200 DUP(0)
STACK ENDS
DATA SEGMENT USE16
PROG DB 'MOV AX,DATA',0DH,0AH,'MOV DS,AX',0DH,0AH
DB 'MOV AX,0',0DH,0AH
DB 'MOV BX,2',0DH,0AH,'LEA SI,MMOV',0DH,0AH
DB 'ADD AX,BX',0DH,0AH,'MOV MOMOV[SI],AX',0DH,0AH,1AH
NUM DW 0
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
;
MOV BX,0
MOV CX,0
;
BEGAIN:
CMP PROG[BX],1AH
JE EXIT
CMP PROG[BX],'M'
JNE NEXT
CMP PROG[BX+1],'O'
JNE NEXT
CMP PROG[BX+2],'V'
JNE NEXT
INC CX
ADD BX,3
JMP BEGAIN
NEXT: INC BX
JMP BEGAIN
;
MOV NUM,CX
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
STACK SEGMENT USE16
DB 200 DUP(0)
STACK ENDS
DATA SEGMENT USE16
PROG DB 'MOV AX,DATA',0DH,0AH,'MOV DS,AX',0DH,0AH
DB 'MOV AX,0',0DH,0AH
DB 'MOV BX,2',0DH,0AH,'LEA SI,MMOV',0DH,0AH
DB 'ADD AX,BX',0DH,0AH,'MOV MOMOV[SI],AX',0DH,0AH,1AH
NUM DW 0
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
;
MOV BX,0
MOV CX,0
;
BEGAIN:
CMP PROG[BX],1AH
JE EXIT
CMP PROG[BX],'M'
JNE NEXT
CMP PROG[BX+1],'O'
JNE NEXT
CMP PROG[BX+2],'V'
JNE NEXT
INC CX
ADD BX,3
JMP BEGAIN
NEXT: INC BX
JMP BEGAIN
;
MOV NUM,CX
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START