10e4 TITLE int_vec.ASM ;===== Programmet visar interruptvektorn f”r inmatat interrupt ;===== INCLUDE SCREEN.MAC INCLUDE KEYB.MAC ;--------------------------------------------------------------------- CSEG SEGMENT ASSUME CS:CSEG,DS:CSEG ORG 100H Start: jmp Begin par_flag db 0 ;-------------------------------------------------------------------- main PROC NEAR call Param_Read jcxz get_going jmp Quit get_going: Print '** Shows the vector for an arbitrary INT number (Hex) **' cmp par_flag,1 jz no_endmsg Print ' exits **' no_endmsg: cr_lf cr_lf again: cmp par_flag,1 jz cont print 'Interrupt number: ' Hex4_In cmp dx,0h ;Avsluta om '0' jne cont jmp Quit cont: mov ah,35h ;Get vector mov al,dl int 21h push bx ;Spara offset och adress push es ;p† stacken cmp par_flag,1 jz no_tab tab 30 no_tab: print 'Current interrupt vector: ' pop es ;H„mta offset- och adress pop bx mov dx,es ;Skriv ut Offset... Wr_Word Wr_Char ':' mov dx,bx ;och adress f”r vektorn Wr_Word cmp par_flag,1 jz Quit cr_lf jmp again ;Ny inmatning Quit: cr_lf ret main ENDP ;--------------------------------------------------------------------------- Param_Read PROC NEAR xor cx,cx ;;Nollst„ll error-flag cmp byte ptr ds:[80h],0 jnz par_exist jmp ready par_exist: mov par_flag,1 mov di,081h Skip_spaces: ;;Skippa inledande blanksteg Inc di cmp byte ptr[di],020h jz Skip_Spaces xor bx,bx ;;Nollst„ll tecken_r„knare xor dx,dx ;;Nollst„ll DX-register Next_Char: mov al,[di] cmp al,0dh ;; avslutar inmatning jz Ready cmp al,020h ;;Till†t space i slutet av str„ngen jnz no_spc jmp chk_end no_spc: cmp al,'0' ;;Error if lower than '0' jl Error cmp al,'9' jle Save ;;Save if Lower or Equal '9' and al,0dfh ;;gemener -> VERSALER cmp al,'A' ;;Error if lower than 'A' jl Error cmp al,'F' jle Save ;;Save if lower or equal 'F' Error: Print 'Wrong input format, Aborted' mov cx,0ffffh jmp Ready Save: inc bx cmp bx,05h jz Ready sub al,30h ;;ASCII -> HEX cmp al,0ah ;;V„rdet j„mf med 10 dec jc Siffra ;; Hopp om 0-9 sub al,07h ;;eljest minska med 7 Siffra: cbw ;;Byte -> Word push cx ;;Spara error-flagga mov cl,04h ;;F”rbered shift 4 ggr sal dx,cl ;;Skifta 4 ggr pop cx add dx,ax ;;Spara i DX inc di jmp Next_Char ready: ret chk_end: more_spc: inc di cmp byte ptr[di],020h jz more_spc cmp byte ptr[di],0dh jnz Error jmp ready Param_Read ENDP ;----------------------------------------------------------------------- Begin: call main ret ;----------------------------------------------------------------------- CSEG ENDS END Start ;======================================================================= . 0