Нахождение первой цифры целого без знакового числа на ассемблере(в среде Visual Studio) - Assembler
Формулировка задачи:
Дано натуральное число, не превышающее 100.
Нужно найти его первую цифру.
Ввод и вывод реализован на С++
Программа компилируется, но возвращает тоже самое значение, что было введено, то есть n = digit.
Не могу найти ошибки здесь.
#include <iostream> #include <locale> using namespace std; int main() { setlocale(LC_ALL, "RUS"); unsigned short n; unsigned short digit; cout << "Введите n в пределах от 1 до 100:" << endl; cin >> n; while ((n <= 0) || (n > 100)) { cout << "Ошибка! n должно быть в пределах от 1 до 100." << endl; cin >> n; } __asm { mov ax, n; mov bx, 10; newloop: cmp ax, 10;//сравнивание введенного значения с 10 jna divide;//если число больше или равно 10 то перейти к делению на 10 jmp theend;//иначе перейти в конец divide: div bl;//делим число на 10 cbw;//выполняем расширение от al до ax jmp newloop;//переходим в начало цикла theend: mov digit, ax;//заносим результат из ax в переменную цифры } cout << "Первая цифра - " << digit << endl; system("pause"); }
Решение задачи: «Нахождение первой цифры целого без знакового числа на ассемблере(в среде Visual Studio)»
textual
Листинг программы
jae divide
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д