нужно значение из регистра edx перенести в массив символов. Не знаю как исправить конфликт операндов.
int main() {
char buffer[5];
int number = 255;
int divider = 10;
__asm {
mov edx, 0
mov eax, number
mov ebx, divider
div ebx
add ebx, 48
mov buffer[0], edx
}
cout << buffer << endl;
}
Сделайте проще:
int main()
{
int b;
int number = 255;
int divider = 10;
__asm {
mov edx, 0
mov eax, number
mov ebx, divider
div ebx
mov b, edx
}
cout << b << endl;
}
Благо cout сам сумеет int вывести, ему не надо в строку его превращать...
Здесь вы в однобайтовую ячейку пытаетесь положить значение из четырехбайтового регистра, из-за этого возникает конфликт размера операнда:
mov buffer[0], edx
Вам нужен только младший байт из регистра edx, т.е. регистр dl:
mov buffer[0], dl
Также у вас ошибка в логике программы: нужно добавлять 48 (код символа '0') не к ebx, а к edx (или к dl).
Сборка персонального компьютера от Artline: умный выбор для современных пользователей