Алгоритм с ветвлениями - Assembler

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

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

помогите пожалуйста с индивидуалкой по ассемблеру _______________ Вася пытается высунуть голову в форточку размерами a и b см. Приняв условно, что его голова — круглая диаметром d см, определить, сможет ли Вася сделать это. Для прохождения головы в форточку необходим зазор в 1 см с каждой стороны. _______________ я понимаю что вы подумаете ,типо халявщик,дет что ему решение накатают и тд , но мне оч надо много закрыть долгов , помогите с решением

Решение задачи: «Алгоритм с ветвлениями»

textual
Листинг программы
  1. LOCALS
  2.  
  3. .model small
  4.  
  5. .stack 100h
  6.  
  7. .data
  8.         msgFit          db      'Prolezet', 0Dh, 0Ah, '$'
  9.         msgNoFit        db      'Ne prolezet', 0Dh, 0Ah, '$'
  10.         ;размер форточки
  11.         a       dw      12
  12.         b       dw      33
  13.         ;диаметр головы Василия
  14.         d       dw      11
  15.  
  16.  
  17. .code
  18.  
  19. main    proc
  20.         mov     ax,     @data
  21.         mov     ds,     ax
  22.  
  23.         mov     ax,     d       ;ax - диаметр головы Василия
  24.         add     ax,     2       диаметру добавляем необходимый зазор
  25.  
  26.         ;сравниваем со строрной a
  27.         cmp     ax,     a
  28.         ja      NotFit          ;если не пролезет - вывести соответствующее
  29.                                 ;сообщение
  30.  
  31.         ;сравниваем со стороной b
  32.         cmp     ax,     b
  33.         ja      NotFit          ;если не пролезет - вывести соответствующее
  34.                                 ;сообщение
  35.         этой строке оказались, если голова пролезет
  36.         ;выводим сообщение
  37.         mov     ah,     09h
  38.         lea     dx,     msgFit
  39.         int     21h
  40.         выходим из программы
  41.         jmp     @@Exit
  42.  
  43. NotFit:
  44.         этой строке оказались, если голова не пролезет
  45.         ;выводим сообщение
  46.         mov     ah,     09h
  47.         lea     dx,     msgNoFit
  48.         int     21h
  49.  
  50. @@Exit:
  51.         ;завершение программы
  52.         mov     ax,     4C00h
  53.         int     21h
  54. main    endp
  55.  
  56. end     main

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

  1. Создаем переменные:
    • msgFit - строка 'Prolezet', 0Dh, 0Ah, '$'
    • msgNoFit - строка 'Ne prolezet', 0Dh, 0Ah, '$'
    • a - двойное слово (dw) со значением 12
    • b - двойное слово (dw) со значением 33
    • d - двойное слово (dw) со значением 11
  2. Входим в процедуру main.
  3. Перемещаем адрес сегмента данных в регистр ax и загружаем его в регистр данных ds.
  4. Помещаем значение переменной d в регистр ax.
  5. Добавляем 2 к значению регистра ax (диаметр головы Василия) и сохраняем результат.
  6. Сравниваем значение в регистре ax с переменной a (размер форточки). Если значение в ax больше, переходим к метке NotFit.
  7. Сравниваем значение в регистре ax с переменной b (размер форточки). Если значение в ax больше, переходим к метке NotFit.
  8. Если голова пролезает, выводим сообщение Prolezet и завершаем программу.
  9. Если голова не пролезает, выводим сообщение Ne prolezet.
  10. Завершаем программу, возвращая управление операционной системе.

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


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

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

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут