Вернуть 1, если числа являются сторонами треугольника Пифагора, иначе вернуть 0 - Assembler

Формулировка задачи:

Для всех заданий входные данные передаются в подпрограмму через стек, а результат возвращается через регистр AL. Для массивов входными данными являются адрес массива и число элементов в нем

Код к задаче: «Вернуть 1, если числа являются сторонами треугольника Пифагора, иначе вернуть 0 - Assembler»

textual
      1 0000                 model   tiny,c
      2 0000                 .code
      3                  org     100h
      4 0100  B8 0145r           begin:  lea     ax,dwMas
      5 0103  BB 0003                mov     bx,3
      6                      call    check,ax,bx
1     7 0106  53                 PUSH    BX
1     8 0107  50                 PUSH    AX
1     9 0108  E8 0008                CALL    CHECK
1    10 010B  83 C4 04               ADD     SP,00004h
     11 010E  0C 30              or      al,'0'
     12 0110  CD 29              int     29h
     13 0112  C3                 ret
     14 0113                 check   proc,a:word,b:word
     15                  uses    bx,cx,dx,si
1    16 0113  55                 PUSH    BP
1    17 0114  8B EC              MOV     BP,SP
1    18 0116  53                 PUSH    BX
1    19 0117  51                 PUSH    CX
1    20 0118  52                 PUSH    DX
1    21 0119  56                 PUSH    SI
1    22 011A  8B 76 04               mov     si,a
     23 011D  8B 4E 06               mov     cx,b
     24 0120  AD             @01:    lodsw
     25 0121  33 D2              xor     dx,dx
     26 0123  F7 E0              mul     ax
     27 0125  50                 push    ax
     28 0126  E2 F8              loop    @01
     29 0128  58                 pop     ax
     30 0129  5B                 pop     bx
     31 012A  59                 pop     cx
     32 012B  3B C3              cmp     ax,bx
     33 012D  77 01              ja      @02
     34 012F  93                 xchg    ax,bx
     35 0130  3B C1          @02:    cmp     ax,cx
     36 0132  77 01              ja      @03
     37 0134  91                 xchg    ax,cx
     38 0135  2B C3          @03:    sub     ax,bx
     39 0137  2B C1              sub     ax,cx
     40 0139  74 03              jz      @04
     41 013B  B8 FFFF                mov     ax,-1
     42 013E  40             @04:    inc     ax
1    43 013F  5E                 POP     SI
1    44 0140  5A                 POP     DX
1    45 0141  59                 POP     CX
1    46 0142  5B                 POP     BX
1    47 0143  5D                 POP     BP
1    48 0144  C3                 RET     00000h
     49 0145                 check   endp
     50 0145  0003 0005 0004         dwMas   dw      3,5,4
     51                      end     begin

6   голосов, оценка 3.667 из 5


СОХРАНИТЬ ССЫЛКУ