Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Zadanie 1 - Zamiana kolejności bitów w bajcie
- unsigned char a = 0x80, b = 0x00;
- __asm {
- mov al, a;
- mov bl, b;
- mov cl, 0xFF;
- repeat:
- mov ah, al;
- and ah, 0x01;
- shl bl, 1;
- or bl, ah;
- shr al, 1;
- shr cl, 1;
- jnz repeat;
- mov b, bl;
- };
- printf("0x%02X po odwroceniu to 0x%02X", a, b);
- Zadanie 2 - parzystość liczby jedynek w bajcie
- unsigned char a = 0x03, b;
- __asm {
- mov al, a;
- mov bl, 0x01;
- mov ah, al;
- and ah, 0x01;
- add bl, ah;
- shr al, 1;
- mov ah, al;
- and ah, 0x01;
- add bl, ah;
- shr al, 1;
- mov ah, al;
- and ah, 0x01;
- add bl, ah;
- shr al, 1;
- mov ah, al;
- and ah, 0x01;
- add bl, ah;
- shr al, 1;
- mov ah, al;
- and ah, 0x01;
- add bl, ah;
- shr al, 1;
- mov ah, al;
- and ah, 0x01;
- add bl, ah;
- shr al, 1;
- mov ah, al;
- and ah, 0x01;
- add bl, ah;
- shr al, 1;
- mov ah, al;
- and ah, 0x01;
- add bl, ah;
- and bl, 0x01;
- mov b, bl;
- };
- printf("Ilosc jedynek w 0x%02X parzysta - %d", a, b);
- Zadanie 3 - liczba zer w bajcie
- unsigned char a = 0xFF, licz = 0;
- _asm {
- mov al, a
- mov cl, 0
- mov ah, al
- and ah, 0x01
- add cl, ah
- shr al, 1
- mov ah, al
- and ah, 0x01
- add cl, ah
- shr al, 1
- mov ah, al
- and ah, 0x01
- add cl, ah
- shr al, 1
- mov ah, al
- and ah, 0x01
- add cl, ah
- shr al, 1
- mov ah, al
- and ah, 0x01
- add cl, ah
- shr al, 1
- mov ah, al
- and ah, 0x01
- add cl, ah
- shr al, 1
- mov ah, al
- and ah, 0x01
- add cl, ah
- shr al, 1
- mov ah, al
- and ah, 0x01
- add cl, ah
- shr al, 1
- mov licz, 8
- sub licz, cl
- }
- printf("Ilosc zer w 0x%02X - %d", a, licz);
- Zadanie 4 - if (wejscie == 0x32) to wyjscie = 0, else wyjscie = 1
- unsigned char a = 0x32, b;
- __asm {
- mov bl, 0x00;
- mov al, a;
- 0xCE to 0x32 z minusem
- add al, 0xCE;
- jz skok
- add bl, 0x01;
- skok:
- mov b, bl;
- };
- printf("wyjscie = %d", b);
- Zadanie 5 - if wejscie < z flagą C
- unsigned char a = 0xC0, y;
- __asm {
- mov al, a
- add al, 0x40
- jc els
- mov y, 0
- jmp koniec
- els :
- mov y, 1
- koniec :
- };
- printf("wyjscie = %d", y);
- Zadanie 6 - wejscie 8 - bit, wyjscie 16 - bit.y = a * 20
- unsigned char a = 0x02;
- short int wynik;
- __asm {
- mov al, a;
- mov ah, 0x00;
- mov dx, ax;
- shl dx, 5;
- mov bx, dx;
- mov dx, ax;
- shl dx, 3;
- sub bx, dx;
- mov dx, ax;
- shl dx, 2;
- sub bx, dx;
- mov wynik, bx;
- };
- printf("%d * 20 = %d", a, wynik);
- Zadanie 7 - a i b 8 - bit, y 16 - bit.y = a*b
- unsigned char a = 5, b = 6;
- short int y = 0;
- _asm {
- mov ah, 0
- mov al, a
- mov bl, b
- mov cx, y
- start :
- test bl, 0x01
- jz nie
- add cx, ax
- nie :
- shr bl, 1
- shl ax, 1
- jnz start
- mov y, cx
- }
- printf("%d*%d=%d", a, b, y);
- Zadanie 8 - y = a * 1.125.a jest 16 - bit
- short int a = 1000, wynik = 0;
- __asm {
- mov ax, a;
- mov bx, ax;
- shr bx, 3;
- add ax, bx;
- mov wynik, ax;
- };
- printf("%d * 1.125 = %d", a, wynik);
- Zadanie 9 - unie c = a, b = a
- typedef union {
- unsigned char BYTE;
- struct {
- unsigned char a : 2;
- unsigned char b : 3;
- unsigned char c : 3;
- }bits;
- }un_X;
- un_X x;
- x.BYTE = 3;
- __asm {
- mov al, x.BYTE
- and al, 0x03
- mov bl, al
- shl al, 2
- or bl, al
- shl al, 3
- or bl, al
- mov x.BYTE, bl
- }
- printf("%X \n", x.BYTE);
- printf("%X %X %X", x.bits.a, x.bits.b, x.bits.c);
- Zadanie 10 - unie c = a * b
- typedef union {
- unsigned char BYTE;
- struct {
- unsigned char a : 1;
- unsigned char b : 3;
- unsigned char c : 4;
- }bits;
- }un_Y;
- un_Y y;
- y.bits.a = 0;
- y.bits.b = 6;
- __asm {
- mov al, y.BYTE
- mov bl, al
- mov cl, 0
- and bl, 0x0E
- and al, 0x01
- JZ ELSE10
- mov cl, bl
- shl cl, 3
- ELSE10:
- or cl, al
- or cl, bl
- mov y.BYTE, cl
- }
- printf("%X \n", y.BYTE);
- printf("%X %X %X", y.bits.a, y.bits.b, y.bits.c);
- Zadanie 11 - PUSH i POP inaczej
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement