title perror - print error message include asm.inc public perror .data extrn dgroup_segment:word .data? errmsg_buffer db 100 dup(?) .code extn clear_strerror,get_strerror,fwrite,save_most,strcpy_limit ;; perror ; ; entry DS:SI optional message prefix ; uses AX ; perror proc call save_most mov es,dgroup_segment[bp] ; set destination pointer mov di,offset errmsg_buffer lea dx,[di+size errmsg_buffer-4] ; (-4 leaves room for ": " & \n) cmp si,NULL_POINTER je per1 ; if no message prefix call strcpy_limit ; else copy message prefix mov ax,' :' ; and ": " stosw per1: call get_strerror jz per2 ; if no error string call clear_strerror call strcpy_limit per2: mov ax,NEWLINE_CHARS ; append \n stosw mov bx,stderr ; write text to standard error mov ds,dgroup_segment[bp] lea si,errmsg_buffer mov cx,di ; compute message byte count sub cx,si call fwrite ret perror endp end