Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // kolos.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <cstdio>
- typedef union {
- unsigned char BYTE;
- struct {
- unsigned char a : 1;
- unsigned char b : 3;
- unsigned char c : 4;
- }bits;
- }un_X;
- int main()
- {
- un_X x;
- x.BYTE = 0xec;
- std::printf("x.BYTE = 0x%X\n", x.BYTE);
- std::printf("x.bits.a = 0x%X\n", x.bits.a);
- std::printf("x.bits.b = 0x%X\n", x.bits.b);
- std::printf("x.bits.c = 0x%X\n", x.bits.c);
- //x.bits.c = x.bits.b ^ x.bits.c ^ x.bits.a;
- // w c++
- /*
- unsigned char a_mask = 0x01;
- unsigned char b_mask = 0x0e;
- unsigned char c_mask = 0xf0;
- unsigned char a = (x.BYTE & a_mask);
- unsigned char b = ((x.BYTE & b_mask) >> 1);
- unsigned char c = ((x.BYTE & c_mask) >> 4);
- unsigned char result = (b ^ c ^ a);
- x.BYTE &= 0x0f;
- x.BYTE |= (result << 4);
- */
- _asm {
- mov dl, x.BYTE
- mov ah, 0x01; a_mask
- mov bh, 0x0e; b_mask
- mov ch, 0xf0; c_mask
- mov al, dl; a
- and al, ah
- mov bl, dl; b
- and bl, bh
- shr bl, 1
- mov cl, dl; c
- and cl, ch
- shr cl, 4
- mov dh, bl; result
- xor dh, cl
- xor dh, al
- ; bits.c = (...)
- and dl, 0x0f
- shl dh, 4
- or dl, dh
- mov x.BYTE, dl
- }
- std::printf("x.BYTE = 0x%X\n", x.BYTE);
- std::printf("x.bits.a = 0x%X\n", x.bits.a);
- std::printf("x.bits.b = 0x%X\n", x.bits.b);
- std::printf("x.bits.c = 0x%X\n", x.bits.c);
- std::getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement