Сравнить два числа и вывести большее в debug на ассемблере - Assembler

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

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

я не как не пойму как это сделать

Решение задачи: «Сравнить два числа и вывести большее в debug на ассемблере»

textual
Листинг программы
mov ax, 900  `подготавливаем функцию вывода строки на экран, AH = 09h
mov dx, 200  `в регистр dx вносим адрес выводимой строки "Вариант №4……"
int 21             `вызываем прерывание DOS для выполнения функции вывода строки на экран
mov dx, 244  `в регистр dx вносим адрес строки "Введите число Х="
int 21             `вызываем прерывание DOS для выполнения функции вывода строки на экран
mov ax, 100   `подготавливаем функцию ввода символа с клавиатуры, AH = 01h
int 21              `вызываем прерывание DOS для выполнения функции
mov cx, ax      `сохраним (скопируем) значение регистра AX (AL = код введённого числа X) в
                        ` регистре CX  для последующего использования (сравнения)
mov ax, 900    `опять готовим функцию вывода на экран, AH = 09h
mov dx, 257    `адрес строки "Введите число Y ="
int 21               `вызываем прерывание DOS для выполнения функции вывода строки на экран
mov ax, 100    `готовим функцию ввода символа, AH = 01h
int 21               `выполняем эту функцию: программа ожидает ввода символа с клавиатуры
mov bx, ax      `копируем значение регистра ax (AL = код числа Y) в регистр bx
mov ax, 900    `установим заранее функцию вывода на экран, AH = 09h
cmp cx, bx      `сравниваем значения регистров CX и BX, в которые мы сохранили числа X и Y
JG ds:133         `если число Х (т.е.его 16–ричный код) больше числа Y (...), то переходим к  
                        ` адресу 133, где запрограммирован вывод соответствующей строки на экран
JL ds:13A         `если число Х (т.е.его 16–ричный код) меньше числа Y (...), то переходим к  
                        ` адресу 13A, где запрограммирован вывод соответствующей строки на экран
mov dx, 288    `в dx вносим адрес строки о равенстве чисел X и Y (переходы jg и jl не совершились)
int 21               `прерывание DOS, вывод строки на экран
int 20               `завершение программы
mov dx, 26a    `в dx вносим адрес строки "X > Y" (сюда перейдёт по команде jg)
int 21               `прерывание DOS, вывод строки на экран
int 20               `завершение программы
mov dx, 279    `в dx вносим адрес строки "X < Y" (сюда перейдёт по команде jl)
int 21               `прерывание DOS, вывод строки на экран 
int 20

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

  1. mov ax, 900 — Подготавливаем функцию вывода на экран, AH = 09h
  2. mov dx, 200 — В регистр DX вносим адрес выводимой строки Вариант №4……
  3. int 21 — Вызываем прерывание DOS для выполнения функции вывода строки на экран
  4. mov dx, 244 — В регистр DX вносим адрес строки Введите число Х=
  5. int 21 — Вызываем прерывание DOS для выполнения функции вывода строки на экран
  6. mov ax, 100 — Подготавливаем функцию ввода символа с клавиатуры, AH = 01h
  7. int 21 — Выполняем эту функцию: программа ожидает ввода символа с клавиатуры
  8. mov cx, ax — Сохраним (скопируем) значение регистра AX (AL = код введённого числа X) в регистре CX для последующего использования (сравнения)
  9. mov ax, 900 — Опять готовим функцию вывода на экран, AH = 09h
  10. mov dx, 257 — Адрес строки Введите число Y =
  11. int 21 — Вызываем прерывание DOS для выполнения функции вывода строки на экран
  12. mov ax, 100 — Готовим функцию ввода символа, AH = 01h
  13. int 21 — Выполняем эту функцию: программа ожидает ввода символа с клавиатуры
  14. mov bx, ax — Копируем значение регистра ax (AL = код числа Y) в регистр bx
  15. mov ax, 900 — Устанавливаем заранее функцию вывода на экран, AH = 09h
  16. cmp cx, bx — Сравниваем значения регистров CX и BX, в которые мы сохранили числа X и Y
  17. JG ds:133 — Если число Х (т.е.его 16–ричный код) больше числа Y (...), то переходим к адресу 133, где запрограммирован вывод соответствующей строки на экран
  18. JL ds:13A — Если число Х (т.е.его 16–ричный код) меньше числа Y (...), то переходим к адресу 13A, где запрограммирован вывод соответствующей строки на экран
  19. mov dx, 288 — В DX вносим адрес строки о равенстве чисел X и Y (переходы jg и jl не совершились)
  20. int 21 — Прерывание DOS, вывод строки на экран
  21. int 20 — Завершение программы
  22. mov dx, 26a — В DX вносим адрес строки X > Y (сюда перейдёт по команде jg)
  23. int 21 — Прерывание DOS, вывод строки на экран
  24. int 20 — Завершение программы
  25. mov dx, 279 — В DX вносим адрес строки X < Y (сюда перейдёт по команде jl)
  26. int 21 — Прерывание DOS, вывод строки на экран
  27. int 20 — Завершение программы

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


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

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

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