Загрузка данных


#include <cstdint>
#include <iostream>
#include <string>
using namespace std;

string hexNumber(int32_t n) {
    const char* digits = "0123456789ABCDEF";
    uint32_t x = n < 0 ? 0u - uint32_t(n) : uint32_t(n);
    string s;

    do {
        s = digits[x % 16] + s;
        x /= 16;
    } while (x);

    return (n < 0 ? "-0x" : "0x") + s;
}

int main() {
    int32_t A, C, D, E;
    int b;

    cout << "A B C: ";
    cin >> A >> b >> C;
    if (!cin || b < 1 || b > 255) return 1;
    uint8_t B = b;

    int32_t q = A, remainder;
    int32_t divisor = B;
    D = C;

    asm volatile(
        "cdq\n\t"
        "idivl %[b]\n\t"
        "subl %%eax, %[d]"
        : "+a"(q), "=&d"(remainder), [d] "+r"(D)
        : [b] "r"(divisor)
        : "cc"
    );

    E = B;
    asm volatile(
        "imull %%eax, %%eax\n\t"
        "subl %[a], %%eax\n\t"
        "addl %[c], %%eax"
        : "+a"(E)
        : [a] "r"(A), [c] "r"(C)
        : "cc"
    );

    cout << "A = " << A << " = " << hexNumber(A) << '\n';
    cout << "B = " << b << " = " << hexNumber(b) << '\n';
    cout << "C = " << C << " = " << hexNumber(C) << '\n';
    cout << "D = " << D << " = " << hexNumber(D) << '\n';
    cout << "E = " << E << " = " << hexNumber(E) << '\n';
}