📄 error.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:illegal BIOS command!','$'
err8 db 'panic:address mark not found!','$'
err9 db 'panic:write protect error!','$'
err10 db 'panic:sector not found!','$'
err11 db 'panic:media has been changed!','$'
err12 db 'panic:DMA overrun!','$'
err13 db 'panic:DMA boundary error!','$'
err14 db 'panic:media not found!','$'
err15 db 'panic:CRC error!','$'
err16 db 'panic:NEC error!','$'
err17 db 'panic:seek error!','$'
err18 db 'panic:time out occurred!','$'
err19 db 'panic:error magic number on file system!','$'
err20 db 'panic:unknown error type!','$'
err21 db 'panic:batch terminal signature [#] not found!','$'
err22 db 'panic:configuration file is NULL!','$'
err23 db 'panic:syntax error in configuration!','$'
err24 db 'panic:require parameter missing!','$'
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 err24
erra12 dw offset err11
dw 0
erra14 dw offset err12
erra15 dw offset err13
dw 0
dw 0
erra18 dw offset err14
dw 3 dup (0)
erra22 dw offset err15
dw 15 dup (0)
erra38 dw offset err16
dw 31 dup (0)
erra70 dw offset err17
dw 29 dup (0)
erra100 dw offset err21
dw 4 dup (0)
erra105 dw offset err22
erra106 dw offset err23
dw 18 dup (0)
erra125 dw offset err19
dw 8 dup (0)
erra134 dw offset err18
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 + -