Другие языки программирования и технологии

Лабораторная работа по Ассемблеру (TASM), помогите пожалуйста)

Не думал, что когда-нибудь и я задам тут вопрос, но вот. . Пришел ассемблер :D Делфи, Паскаль, PHP - давались легко, но с ним. . Вообще не дружу)
Буду крайне благодарен, если кто-нибудь поможет не просто решить, а немного разъяснить основные моменты)

Для заданного массива Х (I), где I=1,2,...10, вычислить:

у (x) = ax, если 0 < x <= 5
у (x) = ах + а, если 5 < x <= 10
у (x) = 0, если x > 10

Я и сам, в своё время, пытаюсь разобраться по учебникам, но может найдется умелец, который с ним на "ты" :)

(Есть еще и вторая, но с ней, надеюсь, сам смогу разобраться. "Даны два массива А (I) и В (I). Найти max(A(I)), max(B(D)), min(A(D), min(B(I)). Задачу нахождения max и min оформить в виде подпрограмм. I=1,2,...5.")
Не совсем корректное условие задания или приведено не полностью.
Не понятно как задаётся массив и какая разрядность его элементов.
Судя по функции, X - неотрицательное число, даже натуральное, т. к. при X = 0 функция не определена.
Также не указано, что такое а, и как оно задаётся в программе.

model small

data segment
XArray db 3,7,10,4,1,5,12,8,23,9
Len equ $ - XArray
a db 6
Xtxt db 13,10,'X = $'
Ytxt db '  Y = $'
data ends

      assume cs:code, ds:data, ss:stseg
code segment
start:
      mov ax,data
      mov ds,ax
      mov si,1
      mov cx,Len
MainLoop:
      lea dx,Xtxt
      mov ah,9
      int 21h
      mov al,XArray[si-1]
      call PrintInt
      xor dl,dl
      cmp al,10
      ja PrintY
      mul a
      mov dl,al
      cmp byte ptr XArray[si-1],5
      jbe PrintY
      add dl,a
PrintY:
      push dx
      lea dx,Ytxt
      mov ah,9
      int 21h
      pop ax
      call PrintInt
      inc si
      loop MainLoop
     
      xor ah,ah
      int 16h
      mov ah,4Ch
      int 21h
     
PrintInt proc
      push ax
      push cx
      push bx
      xor cx,cx
      mov bl,10
DivLoop:
      xor ah,ah
      div bl
      add ah,'0'
      push ax
      inc cx
      test al,al
      jnz DivLoop
PrintLoop:
      pop ax
      xchg al,ah
      int 29h
      loop PrintLoop
      pop bx
      pop cx
      pop ax
      ret
PrintInt endp
code ends

stseg segment
      dw 64
stseg segment

      end start
Сергей Смыков
Сергей Смыков
51 590
Лучший ответ
Александр Гусев Большое спасибо! Очень выручили! :) Осталось разобраться и добавить комментарии ^_^