.sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text .define _signal .extern _signal, cerror NSIG=16 _signal: mov bx,sp mov cx,4(bx) mov bx,2(bx) cmp bx,NSIG jae 1f shl bx,1 mov dx,dvect(bx) cmp cx,1 jbe 2f mov dvect(bx),cx mov bx,sp mov 4(bx),enter mov bx,dx int 0xb0 mov dx,bx mov bx,sp mov 4(bx),cx jb 3f jmp 4f 2: int 0xb0 jb 3f mov dvect(bx),cx 4: cmp ax,1 jbe 5f mov ax,dx 5: ret 1: mov ax,22 3: jmp cerror enter: push bx push cx push dx push di push si mov bx,sp mov di,10(bx) mov 10(bx),ax push di shl di,1 call dvect(di) add sp,2 pop si pop di pop dx pop cx pop bx pop ax popf ret .sect .bss dvect: .space 2*NSIG .sect .text