Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- INCLUDE 'EMU8086.INC'
- .MODEL SMALL
- .STACK 100H
- .DATA
- STRING DB 100 DUP(0)
- ANS DB 0
- NOW DB ?
- TMP DB ?
- COUNTER DB 0
- INDEX DB 0
- START DB 0
- BestSTART DB 0
- LENGTH DW 0
- .CODE
- MAIN PROC
- MOV AX,@DATA
- MOV DS,AX
- MOV ES,AX
- PRINT "ENTER INPUT: "
- ;READ_INPUT START
- CLD
- MOV BX,0
- LEA DI,STRING
- MOV AH,1
- INT 21H
- INPUT:
- ;ENTER INPUT CHECK START
- CMP AL,0DH
- JE END_INPUT
- ;ENTER INPUT CHECK END
- ;NOT BACKSPACE INPUT CHECK START
- CMP AL,8H
- JNE STORE_CHAR
- ;NOT BACKSPACE INPUT CHECK END
- ;IF BACKSPACE
- DEC DI
- DEC BX
- JMP READ
- ;IF BACKSPACE END
- STORE_CHAR:
- STOSB
- INC BX
- READ:
- INT 21H
- JMP INPUT
- END_INPUT:
- ;READ_INPUT END
- ;LONGEST CONSECUTIVE INCREASING SEQUENCE
- CLD
- LEA SI,STRING
- MOV LENGTH,BX
- MOV CX,LENGTH
- JCXZ NO_INPUT
- MOV BL,0
- STRING_TRAVERSE:
- LODSB
- MOV NOW,AL
- MOV TMP,AL
- INC INDEX
- ;NO PREVIOUS CHAR CHECK
- CMP BL,0
- JE NEW_SEQ
- ;NO PREVIOUS CHAR CHECK END
- ;NOT GREATER THAN PREVIOUS CHECK
- CMP NOW,BL
- JLE NEW_SEQ
- ;NOT GREATER THAN PREVIOUS CHECK END
- ;CONSECUTIVE INCREASING CHECK
- SUB NOW,BL
- CMP NOW,1
- JNE NEW_SEQ
- ;CONSECUTIVE INCREASING CHECK END
- INC COUNTER
- MOV BL,TMP
- JMP END_IF
- NEW_SEQ:
- MOV COUNTER,1
- MOV AL,INDEX
- MOV START,AL
- MOV BL,TMP
- JMP END_IF
- END_IF:
- MOV AL,ANS
- CMP COUNTER,AL
- JLE NO_UPDATE
- ;UPDATE MAX
- MOV AL,COUNTER
- MOV ANS,AL
- MOV AL,START
- MOV BestSTART,AL
- NO_UPDATE:
- LOOP STRING_TRAVERSE ;CX REGISTER HAS THE LENGTH. SO LOOP
- ;LONGEST CONSECUTIVE INCREASING SEQUENCE END
- NO_INPUT:
- PRINTN
- PRINT "LENGTH OF THE LONGEST CONSECUTIVE INCREASING SEQUENCE: "
- ADD ANS,48
- MOV AH,2
- MOV DL,ANS
- INT 21H
- ;PRINT LONGEST CONSECUTIVE INCREASING SEQUENCE
- PRINTN
- PRINT "LONGEST CONSECUTIVE INCREASING SEQUENCE: "
- MOV COUNTER,0
- MOV INDEX,0
- MOV CX,LENGTH
- JCXZ NO_INPUT2
- SUB ANS,48
- CLD
- LEA SI,STRING
- MOV AH,2
- STRING_TRAVERSE2:
- LODSB
- MOV NOW,AL
- INC INDEX
- ;BEST SEQUENCE NOT START CHECK
- MOV AL,BestSTART
- CMP INDEX,AL
- JL CONTINUE
- ;BEST SEQUENCE NOT START CHECK END
- INC COUNTER
- ;BEST SEQUENCE OVER CHECK
- MOV AL,ANS
- CMP COUNTER,AL
- JG CONTINUE
- ;BEST SEQUENCE OVER CHECK END
- MOV DL,NOW
- INT 21H
- CONTINUE:
- LOOP STRING_TRAVERSE2
- ;PRINT LONGEST CONSECUTIVE INCREASING SEQUENCE END
- NO_INPUT2:
- MOV AH,4CH
- INT 21H
- MAIN ENDP
- END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement