3c7 PUBLIC outvoice CSEG SEGMENT PUBLIC '_CODE' ASSUME CS:CSEG,DS:CSEG write_dsp PROC mov ah,al mov al,0f0h wd10: in al,dx or al,al js wd10 mov al,ah out dx,al ret write_dsp ENDP out_stk STRUC dw ? ; one word ret addx dw ? count dw ? buf_off dw ? buf_seg dw ? out_stk ENDS outvoice PROC NEAR push bp mov bp,sp push ax push cx push dx push es mov ax,[bp+buf_seg] mov dx,[bp+buf_off] mov es,ax mov si,dx mov cx,[bp+count] lopi: mov dx,22Ch mov al,10h ;Direct transfer call write_dsp mov dx,22Ch mov al,es:byte ptr[si] call write_dsp inc si loop lopi pop es pop dx pop cx pop ax pop bp ret outvoice ENDP CSEG ENDS END . 0