Вызвано исключение по адресу (msvcp140d.dll)

184
13 июня 2022, 05:40

Программа определяет систему счисления по префиксам если 0x или 0X, то 16 СС, так же с 2 СС. Код одинаковый для 16 СС и для 2 СС, но при переходе на метку hex вылетает исключение. Если перейти на метку bin программа работает без исключений.

#include <iostream>
using namespace std;
int main()
{
    const int number_char_lenth = 10;
    char number_char[number_char_lenth];
    int base = 0;
    fgets(number_char, number_char_lenth, stdin);
    __asm {
        xor esi, esi                    //esi = 0
        mov al, number_char[esi]        //al = первому символу в массиве
        inc esi
        cmp al, '0'                     //если al = 0, то это hex, bin, oct, если нет то 10
        je HexOrOctOrBin
        jmp de                          //10 CC

    HexOrOctOrBin:
        mov al, number_char[esi]
        cmp al, 'X'                     //если al = 'X' или 'x', то это 16 CC
        je hex
        cmp al, 'x'
        je hex
        mov bl, number_char[esi]
        cmp bl, 'B'                     //если al = 'B' или 'b', то это 2 CC
        je bin
        cmp bl, 'b'
        je bin
        jmp oct
    hex: mov base, 16
        jmp end_program
    oct: mov base, 8
        jmp end_program
    bin: mov base, 2
        jmp end_program
    de:
        mov base, 10
    end_program:
    }
    cout << base << endl;
}
Answer 1

Попробуйте исключить использование дополнительного регистра:

HexOrOctOrBin:
    mov bl, number_char[esi]
    cmp bl, 'X'                     //если al = 'X' или 'x', то это 16 CC
    je hex
    cmp bl, 'x'
    je hex
    cmp bl, 'B'                     //если al = 'B' или 'b', то это 2 CC
    je bin
    cmp bl, 'b'
    je bin
    jmp oct
READ ALSO
Структура данных &quot;Пирамида&quot; C++

Структура данных "Пирамида" C++

Реализую структура данных "Пирамида" и некоторые методы к нейВсе работает, но беда в том, что очень медленно

156
Форматированный ввод бинарного файла

Форматированный ввод бинарного файла

Открываю файл в бинарном режиме, но при этом форматированный ввод с помощью >> компилируетсяКакое поведение ожидать от такого кода с т

162
Читает строки из файла через раз [дубликат]

Читает строки из файла через раз [дубликат]

Проблема такая: есть файл, где данные записаны сплошным столбикомСначала имя, потом возраст

160
с++ вывод в виде таблицы

с++ вывод в виде таблицы

Никак не могу понять, почему таблица отображается некорректно

277