VEndymionV

Untitled

Dec 6th, 2017
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Zadanie 1:
  2.  
  3. Instrukcje z których można korzystać:
  4. MOV A, B - kopiuje B do A
  5. SHL A, B - przesuwa wszystkie bity A w lewo o ilość bitów zdefiniowaną przez B
  6. SHR A, B - przesuwa wszystkie bity A w prawo o ilość bitów zdefiniowaną przez B
  7. ADD A, B - sumuje A i B, wynik przechowuje w A
  8. JZ etykieta - skok do etykiety jeżeli zero (ZF=1)
  9. JNZ etykieta - skok do etykiety jeżeli nie zero (ZF=0)
  10. POP A - zdejmuje ze szczytu stosu wartość i kopiuje ją do A
  11. PUSH A - umieszcza A na szczycie stosu
  12.  
  13.     C:
  14.     if (we == 0x7E) // 0x7E = 0111 1110
  15.         wy = 0;
  16.     else
  17.         wy = 1;
  18. -------------------------------------------------------------------------
  19.     Assembler:
  20.     mov al, we // Wrzucam we na rejestr al (8 bitowy bo char to zmienna 8 bitowa)
  21.     mov bl, 0 // Wrzucam 0 na rejestr bl
  22.     add al, 0x82 // Zamieniam liczbę 0x7E na liczbę ujemną - neguje oraz dodaje 1: 0x82 = 1000 0010
  23.     jz etykieta1 // Jeżeli zero to skaczę do etykiety1 (liczby są sobie równe)
  24.     add bl, 1 // Wrzucam 1 na rejestr bl gdy liczby nie są sobie równe
  25.     etykieta1:
  26.     mov wy, bl // Zawartość rejestru przerzucam do zmiennej wy (0 lub 1)
  27. =========================================================================
  28. Zadanie 2:
  29.  
  30. Instrukcje z których można korzystać:
  31. MOV
  32. SHL
  33. SHR
  34. ADD
  35. JC etykieta - skok jeśli jest przeniesienie (CF=1)
  36. JNC etykieta - skok jeśli nie ma przeniesienia (CF=0)
  37. CLC - ustawia falgę CF na 0
  38.  
  39.     C:
  40.     unsigned char we, wy;
  41.     if (we < 0xCF)
  42.         wy = 0;
  43.     else
  44.         wy = 1;
  45.        
  46.     //0CFh = 1100 1111
  47.     //31h = 0011 0001
  48. ------------------------------------------------------------------------
  49.     Assembler:
  50.     CLC
  51.     MOV al, 0
  52.     ADD we, 0x31
  53.     JC etykieta
  54.     JMP etykieta2
  55.     etykieta:
  56.     MOV al, 1
  57.     etykieta2:
  58.     MOV wy, al
  59.     // W skrócie: dodaje liczby do siebie i sprawdzam przeniesienie, jak wystąpiło to liczba jest większa
  60. ===========================================================================
  61. Zadanie 3:
  62.  
  63. Instrukcje z których można korzystać:
  64. MOV
  65. SHL
  66. SHR
  67. SUB
  68. JZ
  69. JNZ
  70. POP
  71. PUSH
  72.  
  73.     C:
  74.     unsigned char we;
  75.     unsigned short wy;
  76.     wy = we * 24;
  77.     we * 24 = we(32 - 8)
  78. ------------------------------------------------------------------
  79.     Assembler:
  80.     MOV ax, 0 // zeruje ax
  81.     MOV al, we // al = we
  82.     SHL ax, 5 // ax = we * 32
  83.  
  84.     MOV dx, 0 // zeruje dx
  85.     MOV dl, we // dl = we
  86.     ; Chce pomnożyć przez 24 a mnożę przez 32, muszę teraz od ax odjąć we * 8 (pomnożyłem o 8 za dużo)
  87.     SHL dx, 3 // dl = we * 8
  88.  
  89.     SUB ax, dx // (we * 32) - (we * 8) = we * 24
  90.     MOV wy, ax
  91. ===================================================================
  92. Zadanie 4:
  93.  
  94.     C:
  95.     unsigned short we, wy
  96.     wy = we * 2.625;
  97.     // we * 2.625 = we * (2 + 5/8) = we * (2 + 1/2 + 1/8)
  98. -------------------------------------------------------------------
  99.     Assembler:
  100.     MOV al, nie_umiem
  101.     // Jak ktoś potrafi to proszę podesłać rozwiązanie.
  102. ===================================================================
  103. Zadanie 5:
  104.  
  105. Instrukcje z których można korzystać:
  106. MOV
  107. SHL
  108. SHR
  109. SUB
  110. ADD
  111. AND
  112. SAR
  113.  
  114. SUMA ZER
  115. -------------------------------------------------------------------
  116.     Assembler:
  117.     mov dl, 0
  118.     mov cl, 0
  119.     petla:
  120.     mov bl, 8
  121.     mov al, we
  122.     shr al, cl
  123.     and al, 0x1
  124.     add dl, al
  125.     add cl, 1
  126.     sub bl, cl
  127.     jz koniec
  128.     jmp petla
  129.     koniec:
  130.     mov bl, 8
  131.     sub bl, dl
  132.     mov suma_zer, bl
  133. ====================================================================
  134. SUMA JEDYNEK
  135. --------------------------------------------------------------------
  136.     Assembler:
  137.     mov dl, 0
  138.     mov cl, 0
  139.     petla:
  140.     mov bl, 8
  141.     mov al, we
  142.     shr al, cl
  143.     and al, 0x1
  144.     add dl, al
  145.     add cl, 1
  146.     sub bl, cl
  147.     jz koniec
  148.     jmp petla
  149.     koniec:
  150.     mov suma_jedynek, dl
  151. ====================================================================
  152. Zadanie 6:
  153.  
  154.     C:
  155.     typedef union
  156.     {
  157.         unsigned char BYTE;
  158.         struct
  159.         {
  160.             unsigned char a:2;
  161.             unsigned char b:3;
  162.             unsigned char c:3;
  163.         } bits;
  164.     } un_x;
  165.      
  166.     un_x a = 0x5F;
  167.     a.bits.c = a.bits.a;
  168.     a.bits.b = a.bits.a;
  169. ---------------------------------------------------------------------
  170.     Assembler:
  171.     mov al, byte
  172.     and al, 0x3 ; al=a
  173.     mov bl, al
  174.     shl bl, 2
  175.     mov cl, al
  176.     shl cl, 5
  177.     or cl, bl
  178.     or cl, al
  179.     mov wy, cl
  180. ======================================================================
  181. Zadanie 7:
  182.  
  183.     C:
  184.     typedef union
  185.         {
  186.             unsigned char BYTE;
  187.             struct
  188.             {
  189.                 unsigned char a:2;
  190.                 unsigned char b:3;
  191.                 unsigned char c:3;
  192.             } bits;
  193.         } un_x;
  194.          
  195.         un_x a = 0x5F;
  196.        
  197.         a.bits.c = a.bits.a * a.bits.b;
  198. ----------------------------------------------------------------------
  199.     Assembler:
  200.     mov al, a
  201.     and al, 0x1F
  202.     mov bl, al
  203.     and bl, 1 ; a = ?
  204.     JZ etykieta
  205.     mov bl, al ; b = ?
  206.     and bl, 0x0E
  207.     shl bl, 3
  208.     or al, bl
  209.      
  210.     etykieta:
  211.     mov wy, al
  212. =======================================================================
Add Comment
Please, Sign In to add comment