Advertisement
EvgeniiKraaaaaaaav

Delete more then ONE

May 25th, 2019
976
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //https://vk.com/evgenykravchenko0
  2.  
  3.                 ___                                        ___                   ___    
  4.                /  /\                  ___                 /  /\                 /  /\    
  5.               /  /:/_                /__/\               /  /:/_               /  /:/_  
  6.              /  /:/ /\               \  \:\             /  /:/ /\             /  /:/ /\  
  7.             /  /:/ /:/_               \  \:\           /  /:/_/::\           /  /:/ /:/_
  8.            /__/:/ /:/ /\          ___  \__\:\         /__/:/__\/\:\         /__/:/ /:/ /\
  9.            \  \:\/:/ /:/         /__/\ |  |:|         \  \:\ /~~/:/         \  \:\/:/ /:/
  10.             \  \::/ /:/          \  \:\|  |:|          \  \:\  /:/           \  \::/ /:/
  11.              \  \:\/:/            \  \:\__|:|           \  \:\/:/             \  \:\/:/  
  12.               \  \::/              \__\::::/             \  \::/               \  \::/  
  13.                \__\/                   ~~~~               \__\/                 \__\/    
  14.                             ___                                            
  15.                            /__/\                ___                 ___    
  16.                            \  \:\              /  /\               /  /\    
  17.                             \  \:\            /  /:/              /  /:/    
  18.                         _____\__\:\          /__/::\             /__/::\    
  19.                        /__/::::::::\         \__\/\:\__          \__\/\:\__
  20.                        \  \:\~~\~~\/            \  \:\/\            \  \:\/\
  21.                         \  \:\  ~~~              \__\::/             \__\::/
  22.                          \  \:\                  /__/:/              /__/:/
  23.                           \  \:\                 \__\/               \__\/  
  24.                            \__\/                      
  25.  
  26. ;##  DATA SEGMENT  ##
  27. DATASEG Segment
  28.     enter_str       db  'Enter string:$'
  29.     invite          db  '> $'
  30.     error_max       db  'more then one maximum letters$'
  31.     error_bln       db  'blank string$'
  32.     error_one       db  'one letter$'
  33.     string          db  255, ?, 255 dup(?)
  34.     letters         db  26 dup(0)
  35. DATASEG Ends
  36. ;##  /DATA SEGMENT  ##
  37.  
  38.  
  39.  
  40.  
  41. ;##  STACK SEGMENT  ##
  42. STACKSEG Segment Stack
  43.     db 100h dup(?)
  44. STACKSEG Ends
  45. ;##  /STACK SEGMENT  ##
  46.  
  47.  
  48.  
  49.  
  50.  
  51. ;##  CODE SEGMENT  ##
  52. CODESEG Segment
  53.     Assume CS:CODESEG, DS:DATASEG, SS:STACKSEG
  54.  
  55. ;##  Procedure`s And Macro`s  ##
  56.  
  57. ;## Vyvod pustoi stroki ##
  58. writeln macro
  59.     push dx
  60.     push ax
  61.     mov ah,2
  62.     mov dl,13
  63.     int 21h
  64.     mov dl,10
  65.     int 21h
  66.     pop ax
  67.     pop dx
  68. endm
  69.  
  70. ;##  Vyvod stroki  ##
  71. write macro string
  72.     push ax
  73.     push dx
  74.     mov ah,09h
  75.     mov dx,offset string
  76.     int 21h
  77.     pop dx
  78.     pop ax
  79. endm
  80.  
  81. ;##  exit prog  ##
  82. exit macro
  83.     mov al,0
  84.     mov ah,4Ch
  85.     int 21h
  86. endm
  87.  
  88. ;##  Clear Screen  ##
  89. clrscr macro
  90.     push ax
  91.     push bx
  92.     push cx
  93.     push dx
  94.     mov ax,0600h
  95.     mov bh,07h
  96.     xor cx,cx
  97.     mov dh,24
  98.     mov dl,80
  99.     int 10h
  100.     mov ah,0fh
  101.     int 10h
  102.     mov dx,0101h
  103.     mov ah,2
  104.     int 10h
  105.     pop dx
  106.     pop cx
  107.     pop bx
  108.     pop ax
  109. endm
  110.  
  111.  
  112. ;##  Readkey  ##
  113. readkey macro registr
  114.     push ax
  115.     mov ah,10h
  116.     int 16h
  117.     mov registr,ax
  118.     pop ax
  119. endm
  120.  
  121.  
  122. error_p_one:
  123.     mov dx,offset error_one
  124.     mov ah,09h
  125.     int 21h
  126.     jmp the_end
  127. error_p_bln:
  128.     mov dx,offset error_bln
  129.     mov ah,09h
  130.     int 21h
  131.     jmp the_end
  132.  
  133. ;##  /Procedure`s And Macro`s  ##
  134.  
  135. ;##  Programm  ##
  136.   start:
  137.     mov ax,DATASEG
  138.     mov ds,ax
  139. ;-------------
  140.     clrscr
  141.     write enter_str
  142.     writeln
  143.     write invite
  144.  
  145.     mov ah,0Ah
  146.     mov dx,offset string
  147.     int 21h
  148.  
  149.     writeln
  150.  
  151.     xor ch,ch
  152.     mov bx,2
  153.     mov cl,string[1]
  154.    
  155.     cmp cx,1
  156.     je error_p_one
  157.    
  158.     cmp cx,0
  159.     je error_p_bln
  160.  
  161.     xor ah,ah
  162. find_repeat_letters:
  163.     mov al,string[bx]
  164.     inc bx
  165.     cmp al,'a'
  166.     jge low_registry
  167.     sbb al,'A'
  168.     inc al
  169.     jmp skip_low_reg
  170.     low_registry:
  171.     sbb al,'a'
  172.     skip_low_reg:
  173.     mov si,ax
  174.     inc letters[si]
  175.     loop find_repeat_letters
  176.    
  177.  
  178. ;find max repeated letter
  179.  
  180.     xor di,di
  181. put_number:
  182.     mov ah,letters[di]
  183.     inc di
  184.     cmp ah,0
  185.     je put_number
  186.  
  187.     dec di
  188.  
  189.     mov bx,1
  190.     mov cx,26
  191. find_max:
  192. ;   cmp bx,di
  193. ;   jne skip_dec
  194. ;       dec cx
  195. ;       inc bx
  196. ;   skip_dec:
  197.     mov al,letters[bx]
  198. ;   cmp al,ah
  199. ;   je error_p_max
  200.     cmp al,ah
  201.     jl skip_mov
  202.         mov ah,al
  203.         mov di,bx
  204.     skip_mov:
  205.     inc bx
  206.     loop find_max
  207.  
  208.  
  209.     mov ah,letters[di]
  210.     mov cx,26
  211.     xor bx,bx
  212. two_or_more_max:
  213.     cmp bx,di
  214.     jne skip_dec
  215.         dec cx
  216.         inc bx
  217.     skip_dec:
  218.     mov al,letters[bx]
  219.     cmp al,ah
  220.     je error_p_max
  221.     inc bx
  222.     loop two_or_more_max
  223.    
  224.  
  225.     mov dx,di
  226.     xchg dh,dl
  227.    
  228.    
  229.     mov ah,02h
  230.     mov bx,2
  231. ;   xor ch,ch
  232.     mov cl,string[1]
  233.    
  234. print_new_string:
  235.     mov dl,string[bx]
  236.     inc bx
  237.     add dh,'a'
  238.     cmp dl,dh
  239.     je skip_out
  240.     sub dh,'a'
  241.     add dh,'A'
  242.     cmp dl,dh
  243.     je skip_out
  244.         int 21h
  245.     skip_out:
  246.     sub dh,'A'
  247.     loop print_new_string
  248.     jmp the_end
  249.  
  250. error_p_max:
  251.     mov dx,offset error_max
  252.     mov ah,09h
  253.     int 21h
  254.    
  255.  
  256. the_end:   
  257.     readkey ax
  258.     writeln    
  259. quit:
  260.     exit
  261. CODESEG Ends
  262. ;##  /CODE Segment  ##
  263. End start
  264. ;##  /Programm  ##
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement