⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 error.asm

📁 一个朋友写的操作系统源码
💻 ASM
字号:

sseg segment stack

     db 128 dup (0)

sseg ends


dseg segment para 'errormes'

     err1  db 'panic:function number invalid!','$'
     err2  db 'panic:no file!','$'
     err3  db 'panic:no path!','$'
     err4  db 'panic:too many file!','$'
     err5  db 'panic:access denied!','$'
     err6  db 'panic:invalid file hander!','$'
     err7  db 'panic:bmp format error!','$'
     err8  db 'panic:width should be 320!','$'
     err9  db 'panic:height should be 200!','$'
     err10 db 'panic:not a 256 color!','$'
     err11 db 'panic:bmp file is too complex','$'
     err20 db 'panic:unknow error detected!','$'

     erra1  dw offset err1
     erra2  dw offset err2
     erra3  dw offset err3
     erra4  dw offset err4
     erra5  dw offset err5
     erra6  dw offset err6
     erra7  dw offset err7
     erra8  dw offset err8
     erra9  dw offset err9
     erra10 dw offset err10
     erra11 dw offset err11
            dw 8 dup (0)
     erra20 dw offset err20

dseg ends


cseg segment para public 'code'

     public panic

     assume cs:cseg,ds:dseg,ss:sseg

     panic proc near

     push ds
     push es
     push bp
     mov bp,sp

     mov ax,dseg   ; load private segment
     mov ds,ax
     mov ax,8[bp]  ; fetch error code
     cmp ax,1
     jae continue  ; if error code valid
     mov dx,offset err20  ; this is a unknown error type
     mov ah,9
     int 21h
     mov ah,4ch
     int 21h       ; we can't continue
continue:
     cmp ax,87h    ; this is the highest error number we can handle
     jb continue2
     mov dx,offset err20
     mov ah,9
     int 21h
     mov ah,4ch
     int 21h
continue2:
     mov bx,2
     mul bx        ; 2*ax
     mov bx,offset erra1
     add bx,ax
     dec bx
     dec bx
     mov dx,[bx]   ; load appropriate error code address
     mov ah,9
     int 21h
     mov ah,4ch
     int 21h       ; this procedure never return

     panic endp

cseg ends

end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -