Advertisement
Sylv3rWolf

Untitled

Sep 11th, 2015
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. jmp start
  2.     db  a   ; rezerwacja a
  3.     db  00  ; adres 00
  4.     db  10  ; adres 10
  5.  
  6.  
  7. ; ===== Hardware Timer =======
  8.     org a        ;przejscie do zapisywania w komorce o adresie a
  9.     nop      
  10.     nop
  11.     nop
  12.     nop
  13.     nop
  14.     iret
  15. ; ============================
  16.  
  17. ; ===== Keyboard Handler =====
  18.     org 10  ; przejscie do zapisywania w 10
  19.     cmp dl,0    ; dl==0, jeśli tak to obliczenia, jeśli nie wczytanie liczb
  20.     jz end      ; jesli ==0 to obliczenia
  21.     CLI     ;
  22.     push    al  ; AL na stos
  23.     pushf       ;
  24.    
  25.     in  08  ; keypad
  26.  
  27. out 01
  28. out 05
  29.  
  30.     sub al,30   ; na równe obliczenia -30 do każdej wczytanej liczby
  31.     add cl,1    ; alokacja pamięci, adresowanie od [06] do [08]
  32.     mov [cl],al ; wrzucanie liczby do alokacji pamięci
  33.     nop     ;
  34.     nop
  35.     nop
  36.     nop
  37.     nop
  38.  
  39.     popf        ;  
  40.     pop al  ; AL ze stosu
  41.     dec dl      ; dekrementacja DL, aż do 0 i koniec pętli
  42.     STI     ;
  43.     iret        ; powrot z przerwania
  44. ; ============================
  45.  
  46. start:
  47.  
  48.     mov     al, 24
  49.     out 01  ;światła
  50.  
  51.     mov al, 10
  52.     out 05  ;karuzela
  53.  
  54.     mov dl,3    ; 3 liczby do wczytania
  55.     mov cl,05   ; od [05] początek zapisywania liczb
  56.     in 00
  57.     cmp al,33   ; porowuje czy wcisniety klawisz to 3
  58.     jz start1   ; jesli wcisnieta 3 to leci do start1
  59.     call    c0  ; jesli nie to konczy program
  60.  
  61.  
  62. ; ===== Idle Loop ============
  63. start1:         ;oczekiwanie na dane z keypada
  64.  
  65.     STI     ; Set (I) flag
  66.     out 08  ;
  67. idle:
  68.     nop     ;
  69.     nop
  70.     nop
  71.     jmp idle    ;pętla nieskończoności, dopóki kliknięcie na keypad
  72. ; ============================
  73.  
  74. end:
  75.     mov al, [06]
  76.     add al, 2
  77.     mov bl, [07]
  78.     inc bl
  79.     mov cl, [08]
  80.  
  81. call 68
  82.  
  83. org 68
  84.  
  85.  
  86.     push    al
  87.     pop dl
  88.     mul al, dl
  89.     mul al, dl
  90.  
  91. out 01
  92. out 05
  93.  
  94.     push    bl
  95.     pop dl
  96.     mul bl, dl
  97.     mul bl, dl
  98.     add al, bl
  99.  
  100. out 01
  101. out 05
  102.  
  103.     push    al
  104.     mov al, [06]
  105.     add al, 8                  ;(a+8)
  106.     mul al, 3                  ;(a+8)*3
  107.     mul al, 2                  ;(2*(a+8)*3)
  108.     add al, cl             ;(c+2*(a+8)*3)
  109.  
  110. out 01
  111. out 05
  112.  
  113.     mov dl, [07]
  114.     div dl, 4
  115.     mul al, dl             ;(c+2*(a+8)*3)*b/4
  116.  
  117.     pop bl
  118.     sub bl, al          ;(2+a)^3+(1+b)^3-(c+2*(a+8)*3)*b/4
  119.     push    bl
  120.    
  121.     pop al
  122.         sub     al, 6    
  123.         add     al, ef      ;-17
  124.  
  125.     push    al
  126.     pop bl      ;wynik działania w BL!
  127.  
  128.     call    c0
  129.  
  130.  
  131. end1:
  132. org c0
  133.  
  134. ;-----DEFINITYWNY KONIEC PROGRAMU----------------------------------------------------------
  135.  
  136.  
  137.     mov al, 90
  138.     out 01
  139.    
  140.     mov al, f9
  141.     add al, 6
  142.  
  143.     out 05
  144.  
  145.     end
  146.  
  147.  
  148.  
  149. ; ============================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement