Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Zadanie 9: Napisz kod w asemblerze odpowiadający poniższemu fragmentowi kodu w C.
- // UNIA UNIA
- typedef union {
- unsigned char BYTE;
- struct {
- unsigned char a : 2;
- unsigned char b : 3;
- unsigned char c : 3;
- unsigned char d : 1;
- }bits;
- }un_X;
- un_X x;
- x.BYTE = 0xAF; // 175(dec)
- ///UNIE
- //x.bits.c = x.bits.a
- //x.bits.b = x.bits.a
- bitset<8> wynik(x.BYTE);
- cout << wynik<<endl;
- unsigned char wynik2;
- _asm {
- mov al, x.BYTE // przypisuje cala sekwencje do al
- and al,3 // uzyskuje ostatnie 3 bity z al
- mov bl,al // przypisuje ostatnie bity z al do bl
- shl bl,5 // przesuwam w lewo o 5 miejsc
- mov cl,al //przypisuje ostatnie 3 bity z al do cl
- shl cl,2 //
- or al,bl
- or al,cl
- mov wynik2,al
- }
- bitset<8> eldo(wynik2);
- cout << eldo<< endl;
- printf("BYTE: %d\n x.bits.a: %d\n x.bits.b: %d\n x.bits.c: %d\n", x.BYTE, x.bits.a, x.bits.b, x.bits.c);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement