📄 chapter8.htm
字号:
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">ASSUME CS:CODE1</font></p>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MAIN PROC FAR</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">START:PUSH DS</font></p>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">XOR AX,AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AX,0</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV DS,AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV BX,200H;80H*4=200H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AX,[BX]</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AX,[BX+2]</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH AX
;保存原向量</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AX,OFFSET INTSUB</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV [BX],AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AX,SEG INTSUB</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV [BX+2],AX
;设置新向量</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INT 80H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">POP AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV [BX+2],AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">POP AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV [BX],AX
;恢复原向量</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">RET</font></p>
</blockquote>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MAIN ENDP</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">CODE1 ENDS</font></p>
<p align="left"> </p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">CODE2 SEGMENT</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">ASSUME CS:CODE2</font></p>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INTSUB PROC FAR</font></p>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH DX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AH,02</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV DL,41H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INT 21H ;display ‘A’</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">POP DX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">POP AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">IRET</font></p>
</blockquote>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INTSUN ENDP</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">CODE2 ENDS</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF"> END START</font></p>
</blockquote>
</blockquote>
<blockquote>
<h4 align="left"><font face="宋体" size="5" color="#FFFFFF">2、使用25H和35H的DOS功能调用</font></h4>
</blockquote>
<div align="center"><center>
<table border="1" width="70%">
<tr>
<td width="19%" align="center" bgcolor="#3F8F36"><big><big>功能号</big></big></td>
<td width="31%" align="center" bgcolor="#3F8F36"><big><big>功能</big></big></td>
<td width="25%" align="center" bgcolor="#3F8F36"><big><big>入口参数</big></big></td>
<td width="25%" align="center" bgcolor="#3F8F36"><big><big>出口参数</big></big></td>
</tr>
<tr>
<td width="19%" align="center" bgcolor="#3F8F36"><big><big>25H</big></big></td>
<td width="31%" bgcolor="#3F8F36"><big><big>设置中断向量</big></big></td>
<td width="25%" bgcolor="#3F8F36"><big><big>(AL)=中断类型号</big></big><p><big><big>(DS:DX)=中断向量</big></big></td>
<td width="25%" bgcolor="#3F8F36"> </td>
</tr>
<tr>
<td width="19%" align="center" bgcolor="#3F8F36"><big><big>35H</big></big></td>
<td width="31%" bgcolor="#3F8F36"><big><big>取中断向量</big></big></td>
<td width="25%" bgcolor="#3F8F36"><big><big>(AL)=中断类型号</big></big></td>
<td width="25%" bgcolor="#3F8F36"><big><big>(ES:BX)=中断向量</big></big></td>
</tr>
</table>
</center></div>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">例如:</font></p>
</blockquote>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">CODE1 SEGMENT</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">ASSUME CS:CODE1</font></p>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MAIN PROC FAR</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">START:PUSH DS</font></p>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">XOR AX,AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AL,80H
;中断类型号</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AH,35H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INT 21H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH ES</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH BX
;保存原向量</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AX,SEG INTSUB</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV DS,AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV DX,OFFSET INTSUB</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AL,80H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AH,25H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INT 21H
;设置新向量</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INT 80H
;执行中断</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">POP DX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">POP DS</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AL,80H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AH,25H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INT 21H
;恢复原向量</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">RET</font></p>
</blockquote>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MAIN ENDP</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">CODE1 ENDS</font></p>
<p align="left"> </p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">CODE2 SEGMENT</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">ASSUME CS:CODE2</font></p>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INTSUB PROC FAR</font></p>
<blockquote>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">PUSH DX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV AH,02</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">MOV DL,41H</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INT 21H ;display ‘A’</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">POP DX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">POP AX</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">IRET</font></p>
</blockquote>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">INTSUN ENDP</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">CODE2 ENDS</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">END START</font></p>
</blockquote>
</blockquote>
</blockquote>
<h3 align="left"><font face="宋体" size="5" color="#FFFFFF">六、中断处理子程序的典型结构</font></h3>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">1、保护现场;</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">2、开中断STI,允许级别高的中断进入;</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">3、程序功能;</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">4、恢复现场;</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFFFF">5、中断返回IRET。</font></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -