TASM Вычислить сумму или разность чисел - Assembler
Формулировка задачи:
Здравствуйте!
Буду безумно благодарна)
Задание:
Ввести два целых числа. Вычислить сумму этих чисел, если первое число меньше второго, в противном случае – их разность. У меня возникли проблемы с тем, как проверить, какое число большее, а какое меньшее. Понимаю, что нужно использовать cmp, но пока не представляю, как его сюда вписать. У меня пока что получилось ввести два числа и вычислить их сумму.data segment a dw ? ;место в памяти для введенного числа b dw ? str1 db 'Sum is $' ;сообщение, предваряющее вывод суммы data ends stack1 segment stack dw 32 dup (?) stack1 ends code segment assume ss:stack1, ds:data, cs:code extrn read:near, writer:near start: mov ax, data mov ds, ax call read ;вводим первое число, оно попадает в ах mov a, ax ;сохраняем его в переменной а call read ;вводим второе число, оно попадает в ах add ax, a ;находим сумму, результат помещается в ах mov bx, ax ;сохраним значение суммы в bx mov ah, 9 ;выводим строку-сообщение lea dx, str1 int 21h mov ax, bx ;восстанавливаем в ах значение суммы call writer ;и выводим сумму чисел на экран mov ah, 4ch mov al, 0 int 21h code ends end start
Решение задачи: «TASM Вычислить сумму или разность чисел»
textual
Листинг программы
call read ;вводим первое число, оно попадает в ах mov [a],ax ;сохраняем его в переменной а call read ;вводим второе число, оно попадает в ах cmp [a],ax ;сравниваем их jb @add ;переход, если первое меньше второго! sub [a],ax ;иначе: вычитание, jmp @prn ; ..и уходим на вывод результата @add: add ax, [a] ;находим сумму, результат помещается в ах @prn: push ax ;запомним результат.. mov ah, 9 ;выводим строку-сообщение lea dx, str1 int 21h pop ax ;восстанавливаем в ах значение суммы call writer ; ..и выводим сумму чисел на экран
Объяснение кода листинга программы
- Вводим первое число, оно попадает в AX.
- Сохраняем его в переменной A.
- Вводим второе число, оно попадает в AX.
- Сравниваем их.
- Если первое меньше второго, то переходим к шагу 6.
- Вычитаем второе число из первого и результат сохраняем в переменной A.
- Переходим к шагу 10.
- Если первое больше или равно второму, то переходим к шагу 9.
- Складываем второе число с первым и результат сохраняем в переменной A.
- Запоминаем результат.
- Выводим строку-сообщение.
- Задаем адрес строки-сообщения в регистре DX.
- Выводим строку-сообщение на экран с помощью команды INT 21h.
- Восстанавливаем в AX значение суммы.
- Выводим сумму чисел на экран с помощью функции writer.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д