Advertisement
Guest User

Untitled

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