StoneHaos

mysist7

May 11th, 2021
771
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. include io.asm
  2.  
  3. sstack segment stack
  4.     db 128 dup(?)
  5. sstack ends
  6.  
  7. sdata segment
  8.     n db 0
  9.     m db 0
  10.     max dw 0
  11.     matrix dw 100 dup(?)
  12.  
  13.     inputn db "Input n>", "$"
  14.     inputm db "Input m>", "$"
  15.     inpute db "Input matrix:", 0ah, "$"
  16.     maxout db "Max Sum>", "$"
  17.     errormsg db "Error", "$"
  18. sdata ends
  19.  
  20. scode segment
  21. .386
  22.     assume cs:scode, ds:sdata, ss:sstack
  23. jmp start
  24.  
  25. ; Максимальный элемент
  26. max_element:
  27.     push bp
  28.     push bx
  29.     mov bp,sp
  30.     mov ax,[bp+6]
  31.     mov bx,[bp+8]
  32.     cmp ax,bx
  33.     ja __end_max_element
  34.     mov ax,bx
  35.     __end_max_element:
  36.     pop bx
  37.     pop bp
  38.     ret 4
  39.  
  40. ; Сумма элементов
  41. sum_elements:
  42.     push bp
  43.     push bx
  44.     push cx
  45.     mov bp,sp
  46.     mov ax,[bp+8]
  47.     mov bx,[bp+10]
  48.     sub bx,ax
  49.     shr bx,1
  50.     mov cx,bx
  51.     xchg ax,bx
  52.     mov ax,0
  53.     cycle_sum_elements:
  54.         add ax,[bx]
  55.         inc bx
  56.         inc bx
  57.         loop cycle_sum_elements
  58.     pop cx
  59.     pop bx
  60.     pop bp
  61.     ret 4
  62.  
  63. start:
  64.     push sdata
  65.     pop ds
  66.  
  67.     mov dx,offset inputn
  68.     outstr
  69.     inint ax
  70.     cmp ax,10
  71.     ja error
  72.     mov [n],al
  73.  
  74.     mov dx,offset inputm
  75.     outstr
  76.     inint ax
  77.     cmp ax,10
  78.     ja error
  79.     mov [m],al
  80.  
  81.     mov dx,offset inpute
  82.     outstr
  83.     xor ax,ax
  84.     mov al,[n]
  85.     xor bx,bx
  86.     mov bl,[m]
  87.     mul bl
  88.  
  89.     mov cx,ax
  90.     mov bx,offset matrix
  91.  
  92.     ; Ввод матрицы
  93.     cycle1:
  94.         inint ax
  95.         mov [bx],ax
  96.         inc bx
  97.         inc bx
  98.         loop cycle1
  99.  
  100.     ; Вывод матрицы
  101.     newline
  102.     mov bx,offset matrix
  103.     xor cx,cx
  104.     mov cl,[n]
  105.     cycle2:
  106.         push cx
  107.         xor cx,cx
  108.         mov cl,[m]
  109.         cycle2_1:
  110.             outword [bx]
  111.             outch " "
  112.             inc bx
  113.             inc bx
  114.             loop cycle2_1
  115.         newline
  116.         pop cx
  117.         loop cycle2
  118.  
  119.  
  120.     ; Подсчёт
  121.     newline
  122.     mov bx,offset matrix
  123.     xor cx,cx
  124.     mov cl,[n]
  125.     cycle3:
  126.         xor ax,ax
  127.         mov al,[m]
  128.         shl ax,1
  129.         mov di,ax
  130.         mov dx,bx
  131.         add dx,di
  132.         push dx
  133.         push bx
  134.         call sum_elements
  135.         outword ax
  136.         newline
  137.         push [max]
  138.         push ax
  139.         call max_element
  140.         mov [max],ax
  141.         add bx,di
  142.         loop cycle3
  143.  
  144.     newline
  145.     mov dx,offset maxout
  146.     outstr
  147.     outword [max]
  148.     jmp finishprog
  149.  
  150. error:
  151.     mov dx,offset errormsg
  152.     outstr
  153.  
  154. finishprog:
  155.     finish
  156.  
  157. scode ends
  158. end start
RAW Paste Data