Алгоритм с ветвлениями - Assembler
Формулировка задачи:
помогите пожалуйста с индивидуалкой по ассемблеру
_______________
Вася пытается высунуть голову в форточку размерами a и b см. Приняв условно, что его голова — круглая диаметром d см, определить, сможет ли Вася сделать это. Для прохождения головы в форточку необходим зазор в 1 см с каждой стороны.
_______________
я понимаю что вы подумаете ,типо халявщик,дет что ему решение накатают и тд , но мне оч надо много закрыть долгов , помогите с решением
Решение задачи: «Алгоритм с ветвлениями»
textual
Листинг программы
- LOCALS
- .model small
- .stack 100h
- .data
- msgFit db 'Prolezet', 0Dh, 0Ah, '$'
- msgNoFit db 'Ne prolezet', 0Dh, 0Ah, '$'
- ;размер форточки
- a dw 12
- b dw 33
- ;диаметр головы Василия
- d dw 11
- .code
- main proc
- mov ax, @data
- mov ds, ax
- mov ax, d ;ax - диаметр головы Василия
- add ax, 2 ;к диаметру добавляем необходимый зазор
- ;сравниваем со строрной a
- cmp ax, a
- ja NotFit ;если не пролезет - вывести соответствующее
- ;сообщение
- ;сравниваем со стороной b
- cmp ax, b
- ja NotFit ;если не пролезет - вывести соответствующее
- ;сообщение
- ;в этой строке оказались, если голова пролезет
- ;выводим сообщение
- mov ah, 09h
- lea dx, msgFit
- int 21h
- ;и выходим из программы
- jmp @@Exit
- NotFit:
- ;в этой строке оказались, если голова не пролезет
- ;выводим сообщение
- mov ah, 09h
- lea dx, msgNoFit
- int 21h
- @@Exit:
- ;завершение программы
- mov ax, 4C00h
- int 21h
- main endp
- end main
Объяснение кода листинга программы
- Создаем переменные:
msgFit
- строка 'Prolezet', 0Dh, 0Ah, '$'msgNoFit
- строка 'Ne prolezet', 0Dh, 0Ah, '$'a
- двойное слово (dw) со значением 12b
- двойное слово (dw) со значением 33d
- двойное слово (dw) со значением 11
- Входим в процедуру
main
. - Перемещаем адрес сегмента данных в регистр
ax
и загружаем его в регистр данныхds
. - Помещаем значение переменной
d
в регистрax
. - Добавляем 2 к значению регистра
ax
(диаметр головы Василия) и сохраняем результат. - Сравниваем значение в регистре
ax
с переменнойa
(размер форточки). Если значение вax
больше, переходим к меткеNotFit
. - Сравниваем значение в регистре
ax
с переменнойb
(размер форточки). Если значение вax
больше, переходим к меткеNotFit
. - Если голова пролезает, выводим сообщение
Prolezet
и завершаем программу. - Если голова не пролезает, выводим сообщение
Ne prolezet
. - Завершаем программу, возвращая управление операционной системе.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д