Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; 13. ˇingsninio re˛imo pertraukimo (int 1) apdorojimo procedura, atpa˛istanti komanda INC r/m. i
- ; procedura turi patikrinti, ar pertraukimas ivyko prie vykdant komandos INC pirmaji varianta, jei taip,
- ; i ekrana ivesti perspejima, ir visa informacija apie komanda: adresa, koda, mnemonika, operandus.
- ; Pvz.: I ekrana ivedama informacija galetu atrodyti taip:
- ; Zingsninio rezimo pertraukimas! 0000:0128 FEC0 inc al ; al= 01
- .model small
- .stack 100h
- .data
- senasIP dw ?
- senasCS dw ?
- regAX dw ?
- regBX dw ?
- regCX dw ?
- regDX dw ?
- regSP dw ?
- regBP dw ?
- regSI dw ?
- regDI dw ?
- baitas1 db ?
- baitas2 db ?
- baitas3 db ?
- baitas4 db ?
- baitas5 db ?
- baitas6 db ?
- pranesimas db "Zingsninio rezimo pertraukimas: $"
- introMessage db "Si programa tikrina ar pertraukimas ivyko pries vykdant komandos INC pirmaji varianta", 10, 13, "$"
- .code
- mov ax, @data
- mov ds, ax
- mov ah, 9
- mov dx, offset introMessage ;Paraso apie programa
- int 21h
- mov ax, 0
- mov es, ax
- mov ax, es:[4] ;IP yra es 00004
- mov bx, es:[6] ;CS yra es 00006
- mov senasIP, ax
- mov senasCS, bx ;Issisaugom reiksmes
- mov ax, cs
- mov bx, offset pertraukimas ;Ikeliam koda, kuri vykdys jei ivyks pertraukimas
- mov es:[4], bx ;Grazinam CS reiksme i vektoriu lentele
- mov es:[6], ax ;Grazinam IP reiksme i vektoriu lentele
- ;Zingsninis rezimas
- pushf ;Idedame SF i steka
- pop ax ;Issiimame ji kaip registra
- or ax, 100h ;Pakeiciame TF i 1
- push ax ;Graziname registra i steka
- popf ;Ideta ax registra issiimame is steko kaip SF
- ;Tester
- INC cs
- INC es
- INC ss
- INC ds
- INC ax
- INC al
- INC ah
- INC bx
- INC bl
- INC bh
- INC cx
- INC cl
- INC ch
- INC dx
- INC dl
- INC dh
- INC sp
- INC bp
- INC si
- INC di
- INC cs
- ;Zingsninis rezimas off
- pushf ;Isidedame SF i steka
- pop ax ;Issiimame ji kaip registra
- and ax, 0FEFFh ;Pakeiciame TF i 1, skaiciai turi prasidet 0
- push ax ;Graziname registra i steka
- popf ;Ideta ax registra issimame is steko kaip SF
- ;Atstatome CS ir IP
- mov ax, senasIP ;Pasiimame sena IP reiksme
- mov bx, senasCS ;Pasiimame sena CS reiskme
- mov es:[4], ax ;Graziname IP
- mov es:[6], bx ;Graziname CS
- ;Programos uzdarymas
- terminate:
- mov ah, 4Ch
- int 21h
- pertraukimas:
- ;Issisaugom registru reiksmes
- mov regAX, ax
- mov regBX, bx
- mov regCX, cx
- mov regDX, dx
- mov regSP, sp
- mov regBP, bp
- mov regSI, si
- mov regDI, di
- pop si ;pasiimam IP reiksme (kvieciant pertraukima ji buvo i steka padeta paskutine)
- pop di ;pasiimam CS reiksme
- push di ;padedam CS reiksme
- push si ;vel padedam atgal - nagrinejama komanda esancia CS:IP (naudosime DI:SI)
- ;Pasiimam 8 bitus
- mov al, cs:[si]
- mov baitas, al
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement