Advertisement
_LEHIH_

Laba 3 KPO Array of integers

Mar 8th, 2023
650
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         org     100h
  2.  
  3.         mov     ah, 09h
  4.         mov     dx, Letter1
  5.         int     21h
  6.  
  7.         mov     ah, 0Ah
  8.         mov     dx, InpBuf
  9.         int     21h
  10.  
  11.         mov     ah, 09h
  12.         mov     dx, EndL
  13.         int     21h
  14.  
  15.         mov     si, InpBuf + 2
  16.         @@:
  17.         mov     ax, [ArrSize];
  18.         mov     bl, 10
  19.         mov     bh, 0
  20.         mul     bx
  21.         mov     bl, [si]
  22.         sub     bl, '0'
  23.         mov     bh, 0
  24.         add     ax, bx
  25.         mov     [ArrSize], ax
  26.         inc     si
  27.         cmp     byte [si], 0Dh
  28.         jne     @B
  29.  
  30.  
  31.         cmp     [ArrSize], 0
  32.         je      @@4
  33.  
  34.         mov     ah, 09h
  35.         mov     dx, Letter2
  36.         int     21h
  37.  
  38.         mov     ah, 0Ah
  39.         mov     dx, InpBuf
  40.         int     21h
  41.  
  42.         mov     ah, 09h
  43.         mov     dx, EndL
  44.         int     21h
  45.  
  46.  
  47.  
  48.         mov     si, InpBuf + 2
  49.         mov     bp, Arr
  50.         mov     ax, 0
  51.  
  52.         @@1:
  53.         cmp     byte [si], '-'
  54.         je      Minus
  55.  
  56.         cmp     byte [si], ' '
  57.         je      Space
  58.  
  59.         mov     bl, 10
  60.         mov     bh, 0
  61.         mul     bx
  62.         mov     bl, [si]
  63.         sub     bl, '0'
  64.         mov     bh, 0
  65.         add     ax, bx
  66.         jmp     step
  67.  
  68.         Space:
  69.         cmp     [Flag], 1
  70.         jne     @F
  71.         mov     bx, -1
  72.         imul    bx
  73.         @@:
  74.         mov     [bp], ax
  75.         mov     ax, 0
  76.         mov     [Flag], 0
  77.         add     bp, 2
  78.         jmp     step
  79.  
  80.         Minus:
  81.         mov     [Flag], 1
  82.  
  83.         step:
  84.         inc     si
  85.         cmp     byte [si], 0Dh
  86.         jne     @@1
  87.         cmp     [Flag], 1
  88.         jne     @F
  89.         mov     bx, -1
  90.         imul    bx
  91.         @@:
  92.         mov     [bp], ax
  93.         mov     ax, 0
  94.         mov     [Flag], 0
  95.         add     bp, 2
  96.  
  97.         mov     si, [ArrSize]
  98.         mov     bp, Arr
  99.  
  100.         @@2:
  101.         cmp     word [bp], 0
  102.         jl      @F
  103.         mov     bx, [bp]
  104.         add     [Sum], bx
  105.         jmp     @@3
  106.         @@:
  107.         inc     [Cnt]
  108.         @@3:
  109.         dec     si
  110.         add     bp, 2
  111.         cmp     si, 0
  112.         jne     @@2
  113.  
  114.         @@4:
  115.         mov     ah, 09h
  116.         mov     dx, Letter3
  117.         int     21h
  118.  
  119.         mov     bp, OutpBuf + 4
  120.         mov     ax, [Cnt]
  121.  
  122.         ConvToDecCnt:
  123.  
  124.         mov     cx, 10
  125.         mov     dx, 0
  126.         div     cx
  127.         mov     [bp], dl
  128.         add     byte [bp], '0'
  129.         dec     bp
  130.  
  131.         cmp     ax, 0
  132.         jne     ConvToDecCnt
  133.  
  134.         mov     dx, bp
  135.         inc     dx
  136.         mov     ah, 09h
  137.         int     21h
  138.  
  139.         mov     ah, 09h
  140.         mov     dx, Letter4
  141.         int     21h
  142.  
  143.         mov     bp, OutpBuf + 4
  144.         mov     ax, [Sum]
  145.  
  146.         ConvToDecSum:
  147.         mov     cx, 10
  148.         mov     dx, 0
  149.         div     cx
  150.         mov     [bp], dl
  151.         add     byte [bp], '0'
  152.         dec     bp
  153.  
  154.         cmp     ax, 0
  155.         jne     ConvToDecSum
  156.  
  157.  
  158.         mov     dx, bp
  159.         inc     dx
  160.         mov     ah, 09h
  161.         int     21h
  162.  
  163.         return:
  164.         mov     ah, 08h
  165.         int     21h
  166.  
  167.         cmp     al, 0
  168.         jne     @F
  169.         mov     ah, 08h
  170.         int     21h
  171.         @@:
  172.         ret
  173.  
  174. Letter1 db      'Enter the size of the array', 0Ah, '$'
  175. Letter2 db      'Enter array', 0Ah, '$'
  176. Letter3 db      'Count of negative numbers = $'
  177. Letter4 db      0Ah, 'Sum of positive numbers = $'
  178. EndL    db      0Ah, '$'
  179. Sum     dw      0
  180. Cnt     dw      0
  181. Flag    db      0
  182. ArrSize dw      0
  183. OutpBuf db      5 dup ?, '$'
  184. InpBuf  db      255, 0, 255 dup ?
  185. Arr     dw      100 dup ?
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement