Среди трёх чисел вывести среднее - Assembler

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

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

2. Среди трёх чисел вывести среднее. Пока что над этими задачами пыхчу но безуспешно если кто знает решение напишите желательно с пояснением.

Решение задачи: «Среди трёх чисел вывести среднее»

textual
Листинг программы
.model small
 
.stack 100h
 
.data
        a       db      5
        b       db      7
        c       db      3
        Max     db      ?
        Min     db      ?
        Middle  db      ?
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        ;минимум
        mov     al,     [a]
        cmp     al,     [b]
        jbe     @@Min1
        mov     al,     [b]
@@Min1:
        cmp     al,     [c]
        jbe     @@Min2
        mov     al,     [c]
@@Min2:
        mov     [Min],  al
 
        ;максимум
        mov     al,     [a]
        cmp     al,     [b]
        jae     @@Max1
        mov     al,     [b]
@@Max1:
        cmp     al,     [c]
        jae     @@Max2
        mov     al,     [c]
@@Max2:
        mov     [Max],  al
 
        ;среднее равно Middle=(a+b+c-Min-Max)
        mov     al,     [a]
        add     al,     [b]
        add     al,     [c]
        sub     al,     [Min]
        sub     al,     [Max]
        mov     [Middle],       al
 
        ;вывод результата
        ; - преобразование числа в символ
        mov     al,     [Middle]
        add     al,     '0'
        ; - вывод символа результата вычисления
        mov     ah,     02h
        mov     dl,     al
        int     21h
 
        ;ожидание нажатия любой клавиши
        mov     ah,     08h
        int     21h
        or      al,     al
        jnz     @@Skip          ;если нажата функциональная клавиша,
        mov     ah,     08h     ;то считать расширенный символ
        int     21h             ;очистив тем самым буфер клавиатуры
@@Skip:
        ;конец программы
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

Объяснение кода листинга программы

  1. Объявление переменных: — a, b, c - значения 5, 7, 3 соответственно — Max, Min, Middle - флаги, инициализированные как ? (проверяется как 0)
  2. Нахождение минимума из трех чисел (переменные a, b, c) и сохранение его в переменной Min.
  3. Нахождение максимума из трех чисел (переменные a, b, c) и сохранение его в переменной Max.
  4. Нахождение среднего значения (сумма a, b, c минус минимальное и максимальное значения), сохранение его в переменной Middle.
  5. Преобразование числа в символ (добавление '0' для преобразования в двузначное число) и вывод символа результата вычисления.
  6. Ожидание нажатия любой клавиши (функциональные клавиши не считаются).
  7. Если нажата функциональная клавиша, то считывается расширенный символ.
  8. Конец программы.

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


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

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

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