汇编第7章 子程序设计.ppt
文本预览下载声明
本章主要教学内容 1.子程序调用与返回指令。 2.子程序设计的基本过程和设计方法。 7.1 概述 7.2 子程序调用和返回指令 7.3 子程序的定义、调用和返回 7.4 子程序的参数传递方法 7.5 子程序的嵌套与递归 7.6 子程序设计举例 本章小结 本章主要介绍了子程序的概念、定义格式、特性;子程序的调用和返回指令;子程序的设计、参数传递方法、嵌套和递归等内容,并给出了一些较为综合的子程序示例。 把可以多次调用、能完成特定操作功能的程序段编写成独立的程序模块称为子程序。调用这些子程序的程序称为主程序。子程序设计方法可以节省编程的工作量和节省存储空间。一个子程序应具备重复性、通用性、可浮动性、可递归和可重入性。 主程序调用子程序要通过调用指令来实现;子程序执行完了要返回主程序,这个功能由返回指令实现。 一个完整的子程序,应包括子程序调用方法说明、保护现场和恢复现场、子程序定义等部分。子程序调用方法说明包括子程序名、子程序功能、占用寄存器、入口参数、输出参数、子程序调用示例等内容。 (2)输出子程序 子程序名:SUBOUT 功 能:从标准输出设备(一般为屏幕)输出一个字符 入口参数:输出的字符的ASCII码送寄存器AL 出口参数:在屏幕上显示单个字符 程序清单: SUBOUT PROC PUSH DX MOV DL,AL MOV AH,2 INT 21H POP DX RET SUBOUT ENDP 输入输出子程序应用举例 【例7-11】在CRT上连续输出字符0~9 子程序名:CRT0~9 功 能:在CRT上连续输出字符0~9 入口参数:寄存器BL中不断累加得到的字符 出口参数:在CRT上连续输出字符0~9 CRT0~9 PROC NEAR/FAR BEGIN:PUSH DS MOV AX,0 PUSH AX MOV BL,OFFH PUSH BX MOV CX,10 GOON:MOV DL,20H CALL SUBOUT POP BX MOV AL,BL INC AL DAA AND AL,0FH MOV BL,AL PUSH BX OR AL,30H CALL SUBOUT LOOP GOON POP DS RET CRT0~9 ENDP 使BL为-1 输出空格字符 BL增1 DAA调整 屏蔽高4位 变为ASCII码 输出字符 CX-1=0? N Y 结束 开始 7.6.2 代码转换子程序 1.十六进制数的ASCII码转换成二进制数 转换规律:数字字符0~9进行转换时,对ASCII码的高4位清0就可以 了;而A~F进行转换时,要减37H(a~f则减57H)。 【例7-12】将四位十六进制数(ASCII码)转换为十六位二进制数 子程序名:HEX16IN。 功 能:从输入设备输入四位16进制数,将其转换为16位2进 制数。 入口参数:从输入设备得到ASCII码表示的16进制数的各位,有 效数字为0-9和A-F。 出口参数:一个16位2进制数存放在DX寄存器中 JL HEX3 CMP AL,0FH JG HEX3 HEX2:CBW MOV CL,4 SAL DX,CL ADD DX,AX DEC BL JNZ HEX1 HEX3:POP AX POP CX RET HEX16IN ENDP HEX16IN PROC NEAR/FAR PUSH CX PUSH AX PUSH BX MOV DX,0 MOV BL,4 HEX1:CALL SUBI
显示全部