Advertisement
Guest User

Untitled

a guest
Jan 15th, 2019
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Заполнить массив байт фиксированной длины с клавиатуры числами от 0 до 9.
  2. ;Найти максимум в массиве.
  3. ;Вывести полученное число на экран.
  4.  
  5. model small
  6. .386
  7. .stack 100h
  8. .data
  9.     strLength db 10,13, 'Enter length Array: $'
  10.     strInput db 10,13, 'Input Array: $'
  11.     strOutput db 10,13, 'OutPutArray: $',10,13
  12.     strError db 10,13, 'Error$'
  13.     strMax db 10,13, 'Max element: $'
  14.     ArrayDigit db 100 dup(0)
  15.     buffer db 11 dup(0)
  16.     len db ?
  17.     error db 0
  18.     max db ?
  19.     iMax dw ?
  20.    
  21. .code
  22.     checkDigit proc
  23.         mov error, 0
  24.  
  25.         mov ah, 01h
  26.         int 21h
  27.        
  28.         cmp al, '0'
  29.         jb @error
  30.  
  31.         cmp al, '9'
  32.         ja @error
  33.  
  34.         jmp @fexit
  35.  
  36.         @error:
  37.             mov error, 1
  38.            
  39.             mov ah, 9h
  40.             mov dx, OFFSET strError
  41.             int 21h        
  42.        
  43.         @fexit:
  44.             ret
  45.     checkDigit endp
  46.  
  47.     inputArray proc
  48.         mov cl, len
  49.         mov si, 0
  50.  
  51.         mov ah, 9h
  52.         mov dx, OFFSET strInput
  53.         int 21h
  54.  
  55.         @input:
  56.             call checkDigit
  57.            
  58.             cmp error, 1
  59.             je @errorInput
  60.  
  61.             mov ArrayDigit[si], al
  62.             inc si
  63.  
  64.             loop @input
  65.            
  66.         @errorInput:
  67.             ret                                
  68.  
  69.     inputArray endp
  70.  
  71.     outputArray proc
  72.         mov cl, len
  73.         mov si, 0
  74.        
  75.         mov ah, 09h
  76.         mov dx, OFFSET strOutput
  77.         int 21h
  78.  
  79.         @OUTPUT:
  80.             mov ah, 02h
  81.             mov dl, ArrayDigit[si]
  82.             int 21h
  83.  
  84.             mov dl, ' '
  85.             int 21h
  86.  
  87.             inc si
  88.             loop @output
  89.  
  90.         ret
  91.     outputArray endp
  92.  
  93.  
  94.     findMax proc
  95.         dec len
  96.         mov cl, len
  97.         xor si, si
  98.         mov al, ArrayDigit[si]
  99.         mov bx, si     
  100.        
  101.         mov si, 0
  102.  
  103.         @loop:
  104.             cmp ArrayDigit[si], al
  105.             jbe @endLoop           
  106.            
  107.             mov bx, si
  108.             mov al, ArrayDigit[si]
  109.  
  110.             @endLoop:
  111.            
  112.                 inc si
  113.                 loop @loop
  114.                                    
  115.         inc len
  116.         mov imax, bx
  117.         mov max, al
  118.        
  119.         ret
  120.     findMax endp
  121.        
  122.  
  123.     Main:
  124.         mov ax, @data
  125.         mov ds, ax
  126.        
  127.         mov ah, 9h
  128.         mov dx, OFFSET strLength
  129.         int 21h
  130.  
  131.         call checkDigit
  132.        
  133.         cmp error, 1
  134.         je @exit
  135.  
  136.         sub al, '0'
  137.  
  138.         mov len, al
  139.  
  140.         call inputArray
  141.        
  142.         cmp error, 1
  143.         je @exit
  144.  
  145.         call outputArray                               
  146.  
  147.         call findMax
  148.  
  149.         mov ah, 9h
  150.         mov dx, OFFSET strMax
  151.         int 21h
  152.  
  153.         mov dl, max    
  154.         mov ah, 02h
  155.         int 21h
  156.        
  157.         @exit:
  158.             mov ah, 4Ch
  159.             int 21h
  160.     end Main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement