Advertisement
Guest User

Untitled

a guest
Jul 14th, 2019
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. INCLUDE 'EMU8086.INC'
  2. .MODEL SMALL
  3. .STACK 100H
  4. .DATA
  5.     STRING DB 100 DUP(0)
  6.     ANS DB 0
  7.     NOW DB ?
  8.     TMP DB ?
  9.     COUNTER DB 0  
  10.     INDEX DB 0
  11.     START DB 0
  12.     BestSTART DB 0
  13.     LENGTH DW 0
  14.    
  15. .CODE
  16.     MAIN PROC
  17.    
  18.     MOV AX,@DATA
  19.     MOV DS,AX
  20.     MOV ES,AX
  21.        
  22.     PRINT "ENTER INPUT: "
  23.    
  24.     ;READ_INPUT START
  25.     CLD
  26.     MOV BX,0
  27.     LEA DI,STRING
  28.     MOV AH,1
  29.     INT 21H
  30.     INPUT:
  31.         ;ENTER INPUT CHECK START
  32.         CMP AL,0DH
  33.         JE END_INPUT
  34.         ;ENTER INPUT CHECK END
  35.                
  36.         ;NOT BACKSPACE INPUT CHECK START
  37.         CMP AL,8H    
  38.         JNE STORE_CHAR
  39.         ;NOT BACKSPACE INPUT CHECK END
  40.          
  41.         ;IF BACKSPACE  
  42.         DEC DI
  43.         DEC BX
  44.         JMP READ    
  45.         ;IF BACKSPACE END
  46.        
  47.         STORE_CHAR:
  48.             STOSB
  49.             INC BX
  50.         READ:
  51.             INT 21H
  52.             JMP INPUT    
  53.                
  54.        
  55.     END_INPUT:  
  56.     ;READ_INPUT END
  57.    
  58.     ;LONGEST CONSECUTIVE INCREASING SEQUENCE
  59.     CLD
  60.     LEA SI,STRING
  61.     MOV LENGTH,BX  
  62.     MOV CX,LENGTH
  63.     JCXZ NO_INPUT
  64.                    
  65.     MOV BL,0
  66.     STRING_TRAVERSE:        
  67.         LODSB
  68.         MOV NOW,AL
  69.         MOV TMP,AL
  70.         INC INDEX
  71.        
  72.         ;NO PREVIOUS CHAR CHECK
  73.         CMP BL,0
  74.         JE NEW_SEQ  
  75.         ;NO PREVIOUS CHAR CHECK END
  76.        
  77.         ;NOT GREATER THAN PREVIOUS CHECK
  78.         CMP NOW,BL
  79.         JLE NEW_SEQ
  80.         ;NOT GREATER THAN PREVIOUS CHECK END
  81.        
  82.         ;CONSECUTIVE INCREASING CHECK  
  83.         SUB NOW,BL
  84.         CMP NOW,1
  85.         JNE NEW_SEQ
  86.         ;CONSECUTIVE INCREASING CHECK END
  87.        
  88.         INC COUNTER
  89.         MOV BL,TMP
  90.         JMP END_IF
  91.        
  92.         NEW_SEQ:
  93.             MOV COUNTER,1
  94.             MOV AL,INDEX
  95.             MOV START,AL
  96.             MOV BL,TMP
  97.             JMP END_IF
  98.        
  99.        
  100.         END_IF:
  101.             MOV AL,ANS
  102.             CMP COUNTER,AL
  103.             JLE NO_UPDATE
  104.            
  105.             ;UPDATE MAX
  106.             MOV AL,COUNTER
  107.             MOV ANS,AL
  108.             MOV AL,START
  109.             MOV BestSTART,AL
  110.            
  111.            
  112.         NO_UPDATE:    
  113.     LOOP STRING_TRAVERSE  ;CX REGISTER HAS THE LENGTH. SO LOOP
  114.    
  115.     ;LONGEST CONSECUTIVE INCREASING SEQUENCE END
  116.    
  117.     NO_INPUT:  
  118.    
  119.     PRINTN  
  120.     PRINT "LENGTH OF THE LONGEST CONSECUTIVE INCREASING SEQUENCE: "
  121.     ADD ANS,48
  122.     MOV AH,2
  123.     MOV DL,ANS
  124.     INT 21H
  125.    
  126.     ;PRINT LONGEST CONSECUTIVE INCREASING SEQUENCE
  127.     PRINTN
  128.     PRINT "LONGEST CONSECUTIVE INCREASING SEQUENCE: "
  129.     MOV COUNTER,0
  130.     MOV INDEX,0
  131.     MOV CX,LENGTH
  132.     JCXZ NO_INPUT2
  133.     SUB ANS,48
  134.    
  135.     CLD
  136.     LEA SI,STRING
  137.     MOV AH,2
  138.     STRING_TRAVERSE2:
  139.         LODSB
  140.         MOV NOW,AL
  141.        
  142.         INC INDEX
  143.         ;BEST SEQUENCE NOT START CHECK
  144.         MOV AL,BestSTART
  145.         CMP INDEX,AL
  146.         JL CONTINUE
  147.         ;BEST SEQUENCE NOT START CHECK END
  148.        
  149.         INC COUNTER
  150.         ;BEST SEQUENCE OVER CHECK
  151.         MOV AL,ANS
  152.         CMP COUNTER,AL
  153.         JG CONTINUE
  154.         ;BEST SEQUENCE OVER CHECK END
  155.        
  156.         MOV DL,NOW
  157.         INT 21H
  158.        
  159.         CONTINUE:
  160.     LOOP STRING_TRAVERSE2
  161.     ;PRINT LONGEST CONSECUTIVE INCREASING SEQUENCE END
  162.      
  163.     NO_INPUT2:
  164.    
  165.     MOV AH,4CH
  166.     INT 21H
  167.     MAIN ENDP
  168. END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement