Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.42 KB | None | 0 0
  1. 4. 7B05
  2. 5. 1010000011110010
  3. 6. 1111001010100000\
  4. zad.14 adres w trybie rzeczywistym
  5. 1) by otrzymać adres fizyczny mnożę liczbę z CS o 16(czyli w zapisie szesnastkowym dodaje jedno zero): 0xAAAB -> 0xAAAB0
  6. 2) do tego wyżej ^ dodaję (niezmieniony) rejestr IP - 0x0669 (cały czas szesnastkowo!!!!!)
  7. 3) 0xAAAB0+0x0669 = 0xAB119
  8. react-text: 1742 https://pl.wikipedia.org/wiki/Tryb_rzeczywisty
  9.  
  10. zad. 10 - 13
  11. rcl/rcr - przesuwają zawartość danego rejestru odpowiednio w lewo/prawo (ROTATE CARRY LEFT/RIGHT) o wskazana ilość pozycji.
  12. liczba która wylatuje (w prawo albo lewo) leci do flagi carry, a do miejsca które się zwolniło z przeciwnej strony wpada poprzednia zawartośc carry (dlatego podaje to w treści zadania).
  13. np. C=1 ax = 1000 1000 1000 1000 ;
  14. rcr ax,1 => ax = X100 0100 0100 0100
  15. X to jest to zwalniane miejsce. wpada do niego C czyli 1. a potem do C wpada to co wyleciało z prawej strony --- ZERO
  16. UWAGA al i ah są cześcią ax. jeżeli mam AX = 0x1756 to AH = 0x17 a AL = 0x56. jeżeli robię rcl/rcr tylko na AL to AH zostaje bez zmian!!
  17. 10 - AX=0x1756 . AL = 0101 0110, przesuwam o jeden w lewo -> AL=1010 1101 . (ostatnia jedynka oczywiście z carry) === 0xAD
  18. ==> AX = AH:AL = 0x17AD
  19.  
  20. 11 - AX = 0001 0111 0101 0110 (C = 1)
  21. trzy razy w prawo
  22. AX = 1010 0010 1110 1010 C=1
  23.  
  24. 12. popf ustawia flagi zgodnie z wartościa, którą bierze ze stosu. te carry chyba(!) jest najbardziej po prawej, więc weźmie sobie jedynkę z tego FF. czyli CARRY=1 a reszta bez zmian
  25.  
  26. 13. sahf - bierze zawartość flag z ah czyli lewej częsci ax - czyli FF, czyli tak jak wyżej.
  27.  
  28. zad 15-16
  29. 15.
  30. najlepiej na początku rozpisać adres logiczny - początkowy:
  31. 0x004020F0 = 0000 0000 0100 0000 0010 0000 1111 000
  32. interesuje nas pierwsze 10 bitów, drugie 10 bitów, potem 12 bitów:
  33. (0000 0000 01) (00 0000 0010) (0000 1111 000)
  34. pierwsze 10 bitów - numer PDE == 1. otwieramy PDE nr 1. (żeby nie było wątpliwości to zostało już otwarte...)
  35. w otwartym PDE szukamy INDEKSU PTE równego tym drugim dziesięciu bitom, czyli podsumowując: w PDE nr 1 szukamy PTE nr 2
  36. adres bazowy odszukanego PTE to 0x00100. do tego adresu dodaję te ostatnie 12 bitów. 0x00100 + 0x0F0 -> 0x001F0
  37. 16.
  38. w poprzednim dostaliśmy PDE nr 1 już otwarte. tutaj mamy znaleźć adres PDE do otworzenia. które PDE mam otworzyć? pierwsze 10 bitów, tj. 1. czyli otwieram PDE (tablicę stron) 0x01000000
  39.  
  40. w zadaniu 16. znalazłem adres PDE do otworzenia i go otworzyłem. mam takie coś jak w zadaniu 15. gdybym chciał teraz znaleźć ADRES STRONY to znajduje PTE o numerze równym drugim 10 bitom. jeżeli chcę znaleźć adres fizyczny mojego adresu logicznego to do ADRESU STRONY dodaję OSTATNIE 12 BITOW.
  41.  
  42. piszę o tym, ponieważ w zad 16 pyta o adres tablicy stron, ale równie dobrze może zapytać o adres strony - wtedy (tak jak wyżej) jedna operacja więcej. jeżeli o adres fizyczny mojego adresu logicznego - jeszcze jedna operacja więcej
  43.  
  44. /react-text by pogłębić zrozumienie tematu odsyłam do specjalistycznej strony google
  45. np. react-text: 1994 http://students.mimuw.edu.pl/.../PAMIEC/PODTEMAT_7/opis.html
  46.  
  47. 17 i 18. Bit Accessed jest ustawiany, gdy występuje odwołanie do strony, zaś bit dirty gdy występuje modyfikacja/zapis pamięci. Więc odpowiedzi to: 17. 1 i 1, 18. 1 i 0. Jeśli się mylę to poprawicie.
  48.  
  49. podpowiedź: zwracana przez maina wartość jest zawsze w eax
  50.  
  51. 27. a2+3*7-b1-b2+*/
  52.  
  53. 0xFA=11111010=-128+64+32+16+8+2.=-6
  54.  
  55. ZAD 7 DX=-1 | ZAD 8 AX=-1 BX=1 | ZAD 9 BX=0xC557 |
  56. w AL masz -1 czyli 0xFF polecenie ebw rozszerza bit znaku z AL do AH w AH mamy teraz 0xFF wiec AX ma wartość 0xFFFF czyli -1 gdyby AL było dodatnie to w AH mielibyśmy 0x00 a w AX 0x00FF
  57.  
  58. /react-text 23: odp. 4
  59. do ebxa załadowano wskaźnik na x (początek ciągu bajtów). ebx został zwiększony o trzy, czyli wskaźnik został przesunięty o 3 bajty do przodu. z 1 na 2... na 3... na 4.
  60. czyli ebx wskazuje na 4. od al (prawa część ax) ładujemy zawratość pod tym wskaźnikiem. wskazuje na 4 więc do al leci liczba 4.
  61. ponieważ funkcja nazywa się main to znaczy, że jest wykonywana z biblioteką C, gdzie konwencja jest taka, że ax(eax) zawiera zwracaną wartość. cześć lewa ax'a (czyli ah) została wyzerowana. w części prawej ax'a(czyli al) jest ta 4. czyli zwrócona została 4
  62.  
  63. 28: funkcja bierze ze stosu. na stos wrzuciliśmy eax kiedy eax było równe 5. czyli w edxie (zwrocie z funkcji) będzie silnia 5 =120. to że eax przed wywołaniem był zmieniany nie ma znaczenia - liczy się to co zostało ostatnio wrzucone na stos
  64. 29: funkcja bierze z eaxa. więc to co wrzuciliśmy wcześniej na stos się nie liczy. w momencie wywołania silnii w eaxie jest 4 więc będzie silnia z 4
  65.  
  66. wszystkie odpowiedzi poprawcie mnie jeśli jest gdzieś błąd zad 1 a=67 b=-6 | zad 2 cl=3 | zad 3 40978 | zad 4 0x7B05 | zad 5 0xA0F2=1010000011110010 | zad 6 0xF2A0=1111001010100000 | zad 7 DX=-1 | zad 8 AX=-1 BX=1 | zad 9 BX=0xC557 | zad 10 0x17AD | zad 11 0xA2EA= 1010 0010 1110 1010 | zad 12 AX= 0x807F | zad 13 AX=0xFF80 | zad 14 0xAB119 | zad 15 0x001F0 | zad 16 0x01000000 | zad17 A=1 D=1 | zad 18 A=1 D=0 | zad 19 eax=0 ebx=1 |zad 20 eax=7 ebx=0 |zad 21 wierzchołek=1 | zad 22 wierzchołek=0 | zad 23 4 |zad 27 a2+3*7-b1-b2+*/ | zad 28 EAX=5! | zad 29 EAX=4!
  67.  
  68. No to tak rcl przesuwa w lewo i bit przeniesienia laduje na ostatnim bicie, a rcr przesuwa w prawo i bit przebiesienia laduja na najstarszym bicie. 1. 0110 Cf=1 rcl 1101 cf=0. 2. 0110 cf=1 1011 cf=0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement