Advertisement
Guest User

Untitled

a guest
Jan 14th, 2019
125
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.     strError db 10,13, 'Error $'
  12.     lenArray db ?
  13.     count db 0
  14.     Array db 10 dup(?)
  15.     Summa db 0
  16.     error db ?
  17. .code
  18.     digit proc
  19.         mov error, 0
  20.         mov ah, 01h
  21.         int 21h
  22.  
  23.         sub al, '0'
  24.        
  25.         cmp al, 9
  26.         ja @errorf
  27.  
  28.         ret
  29.        
  30.         @errorf:
  31.             mov ah, 09h
  32.             mov dx, OFFSET strError
  33.             int 21h
  34.  
  35.             mov error, 1
  36.             ret        
  37.     digit endp
  38.  
  39.     inputArr proc
  40.         mov ah, 9h
  41.         mov dx, OFFSET strInput
  42.         int 21h
  43.  
  44.         mov cl, lenArray
  45.         mov si, 0
  46.        
  47.         @input:
  48.             call digit
  49.  
  50.             cmp error, 1
  51.             je @exitf
  52.  
  53.             mov Array[si], al
  54.             inc si
  55.  
  56.             loop @input
  57.  
  58.         @exitf:
  59.             ret
  60.            
  61.  
  62.     inputArr endp
  63.  
  64.     Sum proc                
  65.         movzx cx, lenArray
  66.         mov si, 0
  67.  
  68.         @sum:
  69.             mov al, array[si]
  70.             add summa, al
  71.             inc si
  72.  
  73.             loop @sum
  74.  
  75.         ret
  76.     sum endp
  77.  
  78.     outputsumma proc
  79.         mov ah, 02h
  80.         cmp summa, 9
  81.         ja @func           
  82.  
  83.         jmp @eexit
  84.  
  85.         @func:
  86.             add count, 1
  87.             sub summa, 10
  88.  
  89.             cmp summa, 9
  90.             ja @func               
  91.        
  92.             mov dl, count
  93.             add dl, '0'
  94.             int 21h
  95.  
  96.         @eexit:
  97.             mov dl, summa
  98.             add dl, '0'
  99.             int 21h
  100.             ret
  101.     outputsumma endp
  102.  
  103.     main:
  104.         mov ax, @data
  105.         mov ds, ax
  106.  
  107.         mov ah, 09h
  108.         mov dx, OFFSET strLength
  109.         int 21h
  110.  
  111.         call digit
  112.        
  113.         cmp error, 1                            
  114.         je @exit
  115.        
  116.         mov lenArray, al
  117.  
  118.             call inputArr
  119.  
  120.         cmp error, 1
  121.         je @exit
  122.    
  123.         call Sum
  124.  
  125.  
  126.         mov ah, 09h
  127.         mov dx, OFFSET strSumma
  128.         int 21h    
  129.  
  130.         call outputsumma
  131.  
  132.        
  133.         @exit:
  134.             mov ah, 4Ch
  135.             int 21h
  136.     end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement