解答
CODE SEGMENT ASSUME DS:CODE,CS:CODE,ES:CODE,SS:CODE .186 ORG 100h START: mov ax,3508h int 21h ;割り込みベクタ取得 mov VECT8_SEG,es mov VECT8_OFF,bx ;割り込みベクタ保管 push cs pop ds ;DS <= CS mov dx,offset VECT8 mov ax,2508h int 21h ;割り込みベクタ設定 MAIN: mov ah,6 mov dl,0ffh int 21h ;入力 cmp al,0dh jz QUIT ;リターンキーだったら終了 cmp COUNT,18 jnz MAIN mov ah,6 mov dl,'*' int 21h mov COUNT,0 jmp short MAIN QUIT: mov ax,2508h mov dx,VECT8_OFF mov ds,VECT8_SEG int 21h ;割り込みベクタを戻す mov ax,4c00h int 21h ;終了 ;------------------------------------- VECT8: cli ;割り込み禁止 push ax ;レジスタ保管 inc cs:COUNT mov al,20h out 20h,al ;割り込みコントローラーに終わりを告げる pop ax ; sti ;割り込みを許可する iret ;終了 VECT8_SEG dw ? VECT8_OFF dw ? COUNT db 0 ENDS END START ; 一部のコンパイラでは、 ;CODE ENDS ; END START ;と記述しなければいけないようです