Advertisement
Guest User

Untitled

a guest
Jan 14th, 2019
134
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.     Array db 10 dup(?)
  14.     Summa dw 0
  15.     error db ?
  16. .code
  17.     digit proc
  18.         mov error, 0
  19.         mov ah, 01h
  20.         int 21h
  21.  
  22.         cmp al, '0'
  23.         jb @errorf
  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.     outPutArr proc
  65.         mov ah, 9h
  66.         mov dx, OFFSET strOutPut
  67.         int 21h
  68.  
  69.         mov cl, lenArray
  70.         mov si, 0
  71.         mov ah, 2h     
  72.  
  73.         @output:
  74.             mov dl, Array[si]
  75.             int 21h
  76.  
  77.             mov dl, ' '
  78.             int 21h
  79.            
  80.             inc si
  81.             loop @output
  82.        
  83.         ret                
  84.     outPutArr endp
  85.  
  86.     Sum proc
  87.         mov cl, lenArray
  88.         mov si, 0
  89.  
  90.         @sum:
  91.             mov al, Array[si]
  92.             sub al, '0'
  93.             add summa, al
  94.            
  95.  
  96.             loop @sum
  97.  
  98.         ret
  99.     sum endp
  100.  
  101.     main:
  102.         mov ax, @data
  103.         mov ds, ax
  104.  
  105.         mov ah, 09h
  106.         mov dx, OFFSET strLength
  107.         int 21h
  108.  
  109.         call digit
  110.        
  111.         cmp error, 1                            
  112.         je @exit
  113.        
  114.         sub al, '0'
  115.         mov lenArray, al
  116.  
  117.             call inputArr
  118.  
  119.         cmp error, 1
  120.         je @exit
  121.  
  122.         call outputArr
  123.    
  124.         call Sum
  125.  
  126.         mov ah, 09h
  127.         mov dx, OFFSET strSumma
  128.         int 21h    
  129.  
  130.         mov ah, 09h
  131.         mov dx, OFFSET summa
  132.         int 21h
  133.        
  134.         @exit:
  135.             mov ah, 4Ch
  136.             int 21h
  137.     end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement