子程序是由设计者定义的完成某种功能的程序模块。一旦定义了,该子程序可被任意调用。
例
| SENDAT PROC FAR ;子程序定义伪指令语句 |
| PUSH AX ;保护 AX 、 DX 、 SI 寄存器 |
| PUSH DX |
| PUSH SI |
| LEA SI , BUFR ;子程序待输出的数据的首地址 |
| GOON : MOV DX , 03FBH |
| WAIT : IN AL , DX ;读端口 03FBH 读入数据 |
| TEST AL , 20H |
| JZ WAIT |
| MOV AL , [SI] ;将缓冲区 BUFR 按字节装入 |
| MOV DX , 03F 8H |
| OUT DX , AL ;输出至端口 03F 8H |
| INC SI |
| CMP AL , 0AH ;判断输出数据是否为结束 |
| JNE GOON ;不为 0AH 则转至 GOON |
| POP SI ;恢复寄存器 |
| POP DX |
| POP AX |
| RET |
| SENDAT ENDP |