实验报告──学年第学期实验课程汇编语言学生姓名123实验项目子程序设计学院计算机科学技术实验性质专业选修课班级学号实验地点同组人数1第组实验日期第周星期第节成绩4环境参数Dosbox-、实验内容实验仪器设备及材料操作方法与实验步骤实验数据记录及处理实验结果分析及讨论一、实验目的:。。二、,采用堆栈方法传递这个二进制数,并用一个主程序验证它。源代码:DATASEGMENTDATAENDSSTACKSEGMENTSTACKDB256DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART: MOVAX,DATA MOVDS,AX MOVAX,STACK MOVSS,AX MOVDX,10100B;对应十六进制为:1234H PUSHDX ;入栈 CALLDISP ;调用子程序 ADDSP,2 ;平衡堆栈 MOVAX,4C00H INT21HDISP PROC PUSHBP MOVBP,SP ;用bp指示数据地址 PUSHF PUSHAX PUSHBX PUSHCX PUSHDX ;以上保护现场 MOVBL,2 ;字节控制循环两次 MOVCL,4 ;移动4位LOP: MOVDL,SS:[BP+5] SHRDL,CL CMPDL,0AH JC J1 ADD DL,7HJ1:ADDDL,30H MOV AH,2 INT 21H MOVDL,SS:[BP+5] AND DL,00001111B CMP DL,0AH JC J2 ADD DL,7HJ2:ADD DL,30H MOV AH,2 INT 21H DECBP DEC BL JNZ LOP POPDX POPCX POPBX POPAX POPF POPBP ;恢复现场 RETDISP ENDPCODEENDS ENDSTART流程图:编译连接 MS-DOS下运行:本实验是如何利用DEBUG进行调试的: ,使用t命令执行,主要检查地址是否取对,尤其再用堆栈传递参数时,取参数时的偏移地址增量。说明用堆栈传送参数的过程及其具体方法:1、将数据存入dx中,在调用子程序前压入栈顶。PUSHDX2、调用子程序,先将bp压入栈顶,再将sp值赋给bp。PUSHBPMOVBP,SP3、计算参数的偏移地址,取出数据并存入dl中。MOVDL,SS:[BP+5](0~100),编制一个子程序统计0~59分,60~69分,70~79分,80~89分,90~100分的人数,并分别存放到scoreE,scoreD,scoreC,scoreB,scoreA单元中,编写一~个主程序与之配合使用。源代码:DATASEGMENTscoredb70,86,99,45,60,98,99,99,99,99,99,99,99,99,99,99,99,99,99;全班成绩数组countdw19;总人数gradeNdb0,0,0,0,0;对应成绩等级为ABCDEDATAENDSSTACKSEGMENTSTACKdb256dup(?)STACKE
汇编实验七子程序设计 来自淘豆网www.taodocs.com转载请标明出处.