1、汇编语言程序设计实验报告三(子程序设计实验)一、实验目的1、 掌握主程序与子程序之间的调用关系及其调用方法。2、 掌握子程序调用过程中近程调用与远程调用的区别。3、 熟练掌握码型变换的程序。二、实验内容1、 从键盘输入二位非压缩 BCD 数,存入 AX 寄存器中,编程实现将其转换为二进制数,并在屏幕上显示。要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。数据可循环输入,遇00结束。三、实验准备1、 预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。2、 熟悉键盘输入和字符显示的程序段的编制。四、实验步骤1、 编辑、汇编源程序,生成可执行文件。2、 执行程序,检查输入、输出
2、结果,看是否正确。如不正确,用 DEBUG 检查,修改源程序,再汇编、运行,直到程序正确为止。3、 用 DEBUG 的 T 命令或 P 命令跟踪程序的执行,观察在远程和近程调用过程中,堆栈的变化情况。五、实验报告要求1、 分析近程调用和远程调用的主要区别。用 DEBUG 命令观察执行过程有何不同。2、 分析实验结果及所遇到的问题的解决方法。六、程序流程图开始 TRAN程序标准序 开始读入十进制数据放 AX 中 AX AX AND 0F0FH是 00? Y BL ALN调用转换子程序 结束 AL 左移 3 位回车、换行 BL 左移 1 位于 AL AL+BL主程序流程图 AL AL+AHRET转
3、换子程序 TRAN 流程图七、程序清单STA SEGMENT STACK STACKDB 100 DUP(0)STA ENDSGSAG SEGMENT PARA CODEASSUME CS:CSAGMAIN PROC FARSTRAT: PUSH DSSUB AX,AXPUSH AXREV: MOV AH,1INT 21HMOV BL,ALINT 21HMOV AH,ALMOV AL,BLCMP AX,3030HJE ENDTRANCALL NEAR PTR TRANCALL FAR PTR CONMOV AL,0DHCALL FAR PTR DISPMOV AL,0AHCALL FAR PT
4、R DISPMOV AL,0AH CALL FAR PTR DISP JMP REVENDTRAN: RETMAIN ENDPTRAN PROC NEARAND AX,0F0FHMOV BL,ALMOV BL,ALMOV CL,3SHL AL,CLMOV CL,1SHL BL,CLADD AL,BLADD AL,AHRET TRAN ENDPCSAG ENDSCSBG SEGMENT PARACODEASSUME CS:CSBGCON PROC FARPUSH AXMOV CL,4SHR AL,CLADD AL,30HCMP AL,39HJBE CON2ADD AL,7CON2: PUSH AXMOV AL,0DHCALL FAR PTR DISPMOV AL,OAHCALL FAR PTR DISPPOP AXCALL FAR PTR DISPPOP AXAND AL,0FHADD AL,30HCMP AL,39HJBE CON1ADD AL,7CON1: CALL FAR PTR DISPRETCON EDNPDISP PROC FARPUSH BXMOV BX,0MOV AH,14INT 10HPOP BXRETDISP ENDPCSBG ENDSEND START