Нахождение первой цифры целого без знакового числа на ассемблере(в среде Visual Studio) - Assembler

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

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

Дано натуральное число, не превышающее 100. Нужно найти его первую цифру. Ввод и вывод реализован на С++
#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");
}
Программа компилируется, но возвращает тоже самое значение, что было введено, то есть n = digit. Не могу найти ошибки здесь.

Решение задачи: «Нахождение первой цифры целого без знакового числа на ассемблере(в среде Visual Studio)»

textual
Листинг программы
jae divide

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


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

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

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