📄 chapter4.htm
字号:
face="宋体" size="5" color="#FF0000">MOV DI,CX</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV BX,0</font></p>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFF00">LOOP2:MOV AX,TABLE[BX]</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFF00">CMP AX,TABLE[BX+2]</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFF00">JBE GOON</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFF00">XCHG AX,TABLE[BX+2]</font></p>
<p align="left"><font face="宋体" size="5" color="#FFFF00">MOV TABLE[BX],AX</font></p>
</blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFF00">GOON:ADD BX,2</font></p>
<blockquote>
<p align="left"><font face="宋体" size="5" color="#FFFF00">LOOP LOOP2</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV CX,DI</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">LOOP LOOP1</font></p>
</blockquote>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">RET</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MAIN ENDP</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CODE ENDS</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">END START</font></p>
</blockquote>
</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">1)定义:同过程的定义。</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">过程名 PROC
NEAR/FAR</font></p>
<blockquote>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">....</font></p>
</blockquote>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">过程名 ENDP</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">2)调用:CALL指令。</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">2、现场的保存和恢复</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">现场:当前寄存器和一些关键变量的值。</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如,在某个子程序中:</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">SUBPRO PROC NEAR</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">PUSH AX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">PUSH BX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">PUSH CX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">PUSH DX</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">....</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">POP DX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">POP CX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">POP BX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">POP AX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">RET</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">SUBPRO ENDP</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">3、子程序的参数传递</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">1)通过寄存器传递参数。</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如:将从键盘输入的0~0FFFFH的十六进制数以有符号的十进制数显示出来。</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CODE SEGMENT</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MAIN PROC FAR</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">ASSUME CS:CODE</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">START:PUSH DS</font></p>
<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">CALL HEXTOBIN</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CALL CRLF</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CALL BINTODEC</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CALL CRLF</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">RET</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MAIN ENDP</font></p>
<p align="left"> </p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">HEXTOBIN PROC
NEAR</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV BX,0</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">NEWCHAR:MOV AH,01</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">INT 21H</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">SUB AL,30H</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">JB EXIT</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CMP AL,10</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">JB DIGIT</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">SUB AL,07</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CMP AL,0AH</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">JB EXIT</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CMP AL,10H</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">JAE EXIT</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">DIGIT:MOV CL,4</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">SHL BX,CL</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV AH,0</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">ADD BX,AX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">JMP NEWCHAR</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">EXIT:RET</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">HEXTOBIN ENDP</font></p>
<p align="left"> </p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">BINTODEC PROC
NEAR</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">AND BX,BX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">JNS POSITIVE</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">NEG BX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV DL,‘-’</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">INT 21H</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">POSITIVE:MOV CX,10000</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CALL DECDIV</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV CX,1000</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CALL DECDIV</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV CX,100</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CALL DECDIV</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV CX,10</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CALL DECDIV</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV CX,1</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CALL DECDIV</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">RET</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">BINTODEC ENDP</font></p>
<p align="left"> </p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">DECDIV PROC NEAR</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV AX,BX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV DX,0</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">DIV CX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV BX,DX</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV DL,AL</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">ADD DL,30H</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">INT 21H</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">RET</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">DECDIV ENDP</font></p>
<p align="left"> </p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CRLF PROC NEAR</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV DL,0AH
;line feed</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">INT 21H</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MOV DL,0DH
;carriage return</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">INT 21H</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">RET</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CRLF ENDP</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CODE ENDS</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">END START</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">2)通过地址表传递参数地址</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">例如:</font></p>
</blockquote>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">DATA SEGMENT</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">ARY DW 100
DUP(?)</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">COUNT DW 100</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">SUM DW ?</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">TABLE DW 3
DUP(?)</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">DATA ENDS</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">CODE SEGMENT</font></p>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">MAIN PROC FAR</font></p>
<blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">ASSUME CS:CODE,DS:DATA,ES:DATA</font></p>
</blockquote>
<p align="left"><font FACE="宋体" size="5" color="#FFFFFF">START:PUSH DS</font></p>
<blockq
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -