Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2019
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; 13. ˇingsninio re˛imo pertraukimo (int 1) apdorojimo procedura, atpa˛istanti komanda INC r/m. Ši
  2. ; procedura turi patikrinti, ar pertraukimas ivyko prieš vykdant komandos INC pirmaji varianta, jei taip,
  3. ; i ekrana išvesti perspejima, ir visa informacija apie komanda: adresa, koda, mnemonika, operandus.
  4. ; Pvz.: I ekrana išvedama informacija galetu atrodyti taip:
  5. ; Zingsninio rezimo pertraukimas! 0000:0128  FEC0  inc al ; al= 01
  6.  
  7.  
  8. .model small
  9. .stack 100h
  10. .data
  11.     senasIP dw ?
  12.     senasCS dw ?
  13.    
  14.     regAX dw ?
  15.     regBX dw ?
  16.     regCX dw ?
  17.     regDX dw ?
  18.     regSP dw ?
  19.     regBP dw ?
  20.     regSI dw ?
  21.     regDI dw ?
  22.    
  23.     baitas1 db ?
  24.     baitas2 db ?
  25.     baitas3 db ?
  26.     baitas4 db ?
  27.     baitas5 db ?
  28.     baitas6 db ?      
  29.    
  30.     pranesimas db "Zingsninio rezimo pertraukimas: $"
  31.     introMessage db "Si programa tikrina ar pertraukimas ivyko pries vykdant komandos INC pirmaji varianta", 10, 13, "$"
  32.                                                    
  33. .code
  34.     mov ax, @data
  35.     mov ds, ax
  36.    
  37.     mov ah, 9
  38.     mov dx, offset introMessage         ;Paraso apie programa
  39.     int 21h                                                
  40.    
  41.     mov ax, 0
  42.     mov es, ax
  43.    
  44.     mov ax, es:[4]                      ;IP yra es 00004
  45.     mov bx, es:[6]                      ;CS yra es 00006
  46.    
  47.     mov senasIP, ax
  48.     mov senasCS, bx                     ;Issisaugom reiksmes
  49.    
  50.     mov ax, cs
  51.     mov bx, offset pertraukimas         ;Ikeliam koda, kuri vykdys jei ivyks pertraukimas
  52.    
  53.     mov es:[4], bx                      ;Grazinam CS reiksme i vektoriu lentele
  54.     mov es:[6], ax                      ;Grazinam IP reiksme i vektoriu lentele
  55.    
  56.     ;Zingsninis rezimas
  57.     pushf                               ;Idedame SF i steka
  58.     pop ax                              ;Issiimame ji kaip registra
  59.     or ax, 100h                         ;Pakeiciame TF i 1
  60.     push ax                             ;Graziname registra i steka
  61.     popf                                ;Ideta ax registra issiimame is steko kaip SF
  62.    
  63.     ;Tester
  64.     INC cs
  65.     INC es
  66.     INC ss
  67.     INC ds
  68.     INC ax
  69.     INC al
  70.     INC ah
  71.     INC bx
  72.     INC bl
  73.     INC bh
  74.     INC cx
  75.     INC cl
  76.     INC ch
  77.     INC dx
  78.     INC dl
  79.     INC dh
  80.     INC sp
  81.     INC bp
  82.     INC si
  83.     INC di
  84.     INC cs
  85.    
  86.     ;Zingsninis rezimas off
  87.     pushf                               ;Isidedame SF i steka
  88.     pop  ax                             ;Issiimame ji kaip registra
  89.     and  ax, 0FEFFh                     ;Pakeiciame TF i 1, skaiciai turi prasidet 0
  90.     push ax                             ;Graziname registra i steka
  91.     popf                                ;Ideta ax registra issimame is steko kaip SF
  92.    
  93.     ;Atstatome CS ir IP
  94.     mov ax, senasIP                     ;Pasiimame sena IP reiksme
  95.     mov bx, senasCS                     ;Pasiimame sena CS reiskme
  96.     mov es:[4], ax                      ;Graziname IP
  97.     mov es:[6], bx                      ;Graziname CS
  98.    
  99.     ;Programos uzdarymas
  100.     terminate:
  101.     mov ah, 4Ch    
  102.     int 21h
  103.    
  104.     pertraukimas:
  105.     ;Issisaugom registru reiksmes
  106.     mov regAX, ax              
  107.     mov regBX, bx
  108.     mov regCX, cx
  109.     mov regDX, dx
  110.     mov regSP, sp
  111.     mov regBP, bp
  112.     mov regSI, si
  113.     mov regDI, di
  114.    
  115.     pop si ;pasiimam IP reiksme (kvieciant pertraukima ji buvo i steka padeta paskutine)
  116.     pop di ;pasiimam CS reiksme
  117.     push di ;padedam CS reiksme
  118.     push si ;vel padedam atgal - nagrinejama komanda esancia CS:IP (naudosime DI:SI)
  119.    
  120.    
  121.     ;Pasiimam 8 bitus
  122.     mov al, cs:[si]
  123.     mov baitas, al
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement