Программа определяет систему счисления по префиксам если 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;
}
Попробуйте исключить использование дополнительного регистра:
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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Реализую структура данных "Пирамида" и некоторые методы к нейВсе работает, но беда в том, что очень медленно
Открываю файл в бинарном режиме, но при этом форматированный ввод с помощью >> компилируетсяКакое поведение ожидать от такого кода с т
Проблема такая: есть файл, где данные записаны сплошным столбикомСначала имя, потом возраст