VEndymionV

Untitled

Jan 24th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Zadanie 1:
  2.  
  3.     C:
  4.     if (we == 0x7E) // 0x7E = 0111 1110
  5.         wy = 0;
  6.     else
  7.         wy = 1;
  8. -------------------------------------------------------------------------
  9.     Assembler:
  10.     mov al, we // Wrzucam we na rejestr al (8 bitowy bo char to zmienna 8 bitowa)
  11.     mov bl, 0 // Wrzucam 0 na rejestr bl
  12.     add al, 0x82 // Zamieniam liczbę 0x7E na liczbę ujemną - neguje oraz dodaje 1: 0x82 = 1000 0010
  13.     jz etykieta1 // Jeżeli zero to skaczę do etykiety1 (liczby są sobie równe)
  14.     add bl, 1 // Wrzucam 1 na rejestr bl gdy liczby nie są sobie równe
  15.     etykieta1:
  16.     mov wy, bl // Zawartość rejestru przerzucam do zmiennej wy (0 lub 1)
  17. =========================================================================
  18. Zadanie 2:
  19.  
  20.     C:
  21.     unsigned char we, wy;
  22.     if (we < 0xCF) // 0xCF = 1100 1111
  23.         wy = 0;
  24.     else
  25.         wy = 1;
  26.        
  27.     //0xCFh = 1100 1111
  28.     //0x31h = 0011 0001
  29. ------------------------------------------------------------------------
  30.     Assembler:
  31.     CLC
  32.     MOV al, 0
  33.     ADD we, 0x31 // 0x31 = 0011 0001
  34.     JC etykieta
  35.     JMP etykieta2
  36.     etykieta:
  37.     MOV al, 1
  38.     etykieta2:
  39.     MOV wy, al
  40.     // W skrócie: dodaje liczby do siebie i sprawdzam przeniesienie, jak wystąpiło to liczba jest większa
  41. ===========================================================================
  42. Zadanie 3:
  43.  
  44.     C:
  45.     unsigned char we;
  46.     unsigned short wy;
  47.     wy = we * 24;
  48.     we * 24 = we(32 - 8)
  49. ------------------------------------------------------------------
  50.     Assembler:
  51.     MOV ax, 0 // zeruje ax
  52.     MOV al, we // al = we
  53.     SHL ax, 5 // ax = we * 32
  54.  
  55.     MOV dx, 0 // zeruje dx
  56.     MOV dl, we // dl = we
  57.     ; Chce pomnożyć przez 24 a mnożę przez 32, muszę teraz od ax odjąć we * 8 (pomnożyłem o 8 za dużo)
  58.     SHL dx, 3 // dl = we * 8
  59.  
  60.     SUB ax, dx // (we * 32) - (we * 8) = we * 24
  61.     MOV wy, ax
  62. ===================================================================
  63. Zadanie 4:
  64.  
  65.     C:
  66.     unsigned short we, wy
  67.     wy = we * 2.625;
  68.     // we * 2.625 = we * (2 + 5/8) = we * (2 + 1/2 + 1/8)
  69. -------------------------------------------------------------------
  70.     Assembler:
  71.     // Zerowanie:
  72.     mov ah, 0
  73.     mov bh, 0
  74.     mov ch, 0
  75.     mov al, we
  76.     shl ax, 4 // we * 16
  77.     mov bl, we
  78.     shl bx, 2 // we * 4
  79.     mov cl, we
  80.     add ax, bx
  81.     add ax, cx // ax = we * 21
  82.     shr ax, 3 // (we * 21) / 8 = we * 21/8 = we * 2 5/8 = we * 2.625
  83.     mov wy, ax
  84. ===================================================================
  85. Zadanie 5:
  86.  
  87. SUMA ZER
  88. -------------------------------------------------------------------
  89.     Assembler:
  90.     mov dl, 0
  91.     mov cl, 0
  92.     petla:
  93.     mov bl, 8
  94.     mov al, we
  95.     shr al, cl
  96.     and al, 0x1
  97.     add dl, al
  98.     add cl, 1
  99.     sub bl, cl
  100.     jz koniec
  101.     jmp petla
  102.     koniec:
  103.     mov bl, 8
  104.     sub bl, dl
  105.     mov suma_zer, bl
  106. ====================================================================
  107. SUMA JEDYNEK
  108. --------------------------------------------------------------------
  109.     Assembler:
  110.     mov dl, 0
  111.     mov cl, 0
  112.     petla:
  113.     mov bl, 8
  114.     mov al, we
  115.     shr al, cl
  116.     and al, 0x1
  117.     add dl, al
  118.     add cl, 1
  119.     sub bl, cl
  120.     jz koniec
  121.     jmp petla
  122.     koniec:
  123.     mov suma_jedynek, dl
  124. ====================================================================
  125. Zadanie 6:
  126.  
  127.     C:
  128.     unsigned char wy;
  129.     typedef union{
  130.         unsigned char byte;
  131.         struct{
  132.             unsigned char a:2;
  133.             unsigned char b:3;
  134.             unsigned char c:3;
  135.         }bits;
  136.     }un_x;
  137.     un_x a;
  138.     /////               ////   
  139.     //a.bits.c = a.bits.a;//
  140.     //a.bits.b = a.bits.a;//
  141.     ////                ////
  142. ---------------------------------------------------------------------
  143.     Assembler:
  144.     mov al, a
  145.     and al, 0x3
  146.     mov bl, al
  147.     shl bl, 2
  148.     mov cl, al
  149.     shl cl, 5
  150.     or cl, bl
  151.     or cl, al
  152.     mov wy, cl
  153. ======================================================================
  154. Zadanie 7:
  155.  
  156.     C:
  157.     unsigned char wy;
  158.     typedef union{
  159.         unsigned char byte;
  160.         struct{
  161.             unsigned char a:1;
  162.             unsigned char b:3;
  163.             unsigned char c:4;
  164.         }bits;
  165.     }un_x;
  166.         un_x a;
  167.         a.byte=0xFF;
  168.        
  169.         //a.bits.c = a.bits.a * a.bits.b;//
  170.        
  171. ----------------------------------------------------------------------
  172.     Assembler:
  173.     mov al, a
  174.     and al, 0x0F
  175.     mov bl, al
  176.     and bl, 0x1
  177.     jz etykieta1
  178.     mov bl, al
  179.     and bl, 0x0E
  180.     shl bl, 3
  181.     or al, bl
  182.     etykieta1:
  183.     mov wy, al
  184. =======================================================================
  185. Mnożenie:
  186.     MOV AX, 0
  187.     MOV BX, 0
  188.     MOV DX, 0
  189.     MOV AL, a
  190.     MOV BL, b
  191.     P1:
  192.     TEST BL, 0x01
  193.     JZ P2
  194.     ADD DX, AX
  195.     P2:
  196.     SHL AX, 1
  197.     SHR BX, 1
  198.     JNZ P1
  199.     MOV wynik, DX
Add Comment
Please, Sign In to add comment