Определить, является ли треугольник из отрезков с длинами A, B и C прямоугольным или равносторонним - Assembler

Узнай цену своей работы

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

Заданы три положительных числа A, B и C (A>=B> =C). Определить, является ли треугольник из отрезков с длинами A, B и C прямоугольным или равносторонним. Вывести «прямоугольный", "-равносторонний», в остальных случаях вывести -" Нет".
вот попытался написать прогу второе условие где прямоугольный не выполняется
include mac.lib
.model small   
.stack 100h
.data
input_a db 10,13, 'a= $', 0
input_b db 10,13, 'b= $', 0
input_c db 10,13, 'c= $', 0
oute1 db 10,13, 'not$'
oute2 db 10,13, 'ravnostoronyi$'
oute3 db 10,13, 'pramougolnyi$'
a dw ?
b dw ?
c dw ?
.code
start: 
mov ax, @data
mov ds, ax
message input_a
key_$2bin
mov a, AX
message input_b
key_$2bin
mov b, AX
message input_c
key_$2bin
mov c, AX
mov AX, a
cmp  ax, c
JE   out3 ;a=b
JG    out1  ;a>m
mov AX, b
cmp  ax, c
JL    out1  ;a>m
JE   out3 ;b=c
message oute2
jmp exsit  
out1:
message oute1 
out3:
message oute3
exsit :
mov ax, 4c00h
int 21h
end  start

Решение задачи: «Определить, является ли треугольник из отрезков с длинами A, B и C прямоугольным или равносторонним»

textual
Листинг программы
org 100h
jmp  start
 
mess   db  13,10,'Input A: $'
out1   db  13,10,'<---Ravnobedr!$'
out2   db  13,10,'<---Pramougol!$'
out3   db  13,10,'<---Error!$'
abc    db  3 dup(0)
 
start:
    mov   cx,3           ; цикл в 3 символа
    mov   di,abc         ; куда сохранять
input:                   ;
    mov   ah,9           ;
    mov   dx,mess        ;
    int   21h            ;
    mov   ah,1           ; ввод с эхом
    int   21h            ;
    stosb                ; сохраняем символ
    inc   byte[mess+8]   ; сл.буква в имени (A,B,C)
    loop  input          ;
;---------------------------------------------------
    mov   si,abc         ; берём значения в регистры
    lodsw                ; bl = A
    xchg  ax,bx          ; bh = B
    lodsb                ; al = C
;---------------------------------------------------;
    cmp   bl,bh          ; A = B ?
    jnz   @1             ; нет
    cmp   bh,al          ; B > C ?
    jbe   @1             ; нет
    mov   dx,out2        ; адрес "прямоугольный"
    jmp   print          ; выводи мессагу на экран!
@1:
    cmp   bl,bh          ; A > B ?
    jbe   @2             ; нет
    cmp   bh,al          ; B = C ?
    jnz   @2             ; нет
    mov   dx,out2        ; адрес "прямоугольный"
    jmp   print          ; выводи мессагу на экран!
@2:
    cmp   bl,bh          ; A = B ?
    jnz   @3             ;
    cmp   bh,al          ; B = C ?
    jnz   @3
    mov   dx,out1        ; адрес "равнобедренный"
    jmp   print          ; выводи мессагу на экран!
@3:
    mov   dx,out3        ; ошибка!
print:                   ;
    mov   ah,9           ; выводим мессагу на экран!
    int   21h            ;
;-----------------------------------------------------;
    xor   ax,ax          ;
    int   16h            ;
    ret                  ; выход..

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы