Сравнить два числа и вывести большее в 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
Объяснение кода листинга программы
- 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 — Выполняем эту функцию: программа ожидает ввода символа с клавиатуры
- 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 — Завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д