资源描述:
《汇编实验报告5》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、四川大学计算机学院、软件学院实验报告学号:姓名:_专业:计算机科学与技术_班级:6第15周课程名称汇编语言程序设计课程设计实验课时2验目实项子程序与输入输出程序设计实验时间2013.12.20实验目的掌握子程序设计方法,常用系统调用的使用方法,能够设计字符串处理相关的程序。在masm编译器中写下代码用,debug进行调试记录相关数据,xp操作系统实验内容(算法、程序、步骤和方法)一、实验要求:从键盘输入(带回显)一个长度在10字符以内的字符串,并保存在缓冲区;检测并删除字符串中的数字字符,将字符串中所有小写字母改为大写字母;将处理后
2、的字符串在新的一行显示,若字符串为空串则显示‘?’。二、原理分析:用CALL指令调用子程序直接调用CALLPROC_NAME(可以为Near、Far)(SP)-2=>SP(TP)=>(SP)PR0C_NAME偏移量->IP*该程序屮使用段内直接调用间接调川CALL16位寄存器或字内存单元(SP)-2=>SP(1P)=>(SP)(16位寄存器或字A存单7d)=>TP无参数返回RET或RETN((SP))=>IP(SP)+2=〉SP带参数返回RETN或RETXN((SP))=>TP(SP)+2=>SP(SP)+N=〉SP系统调用中断调川
3、INT中断调用类型号(SP)-2=>SP(FR)=>(SP)(SP)-2:〉(SP)(CS)=>(SP)(SP)-2=>(SP)(IP)=>(SP)0=>TP0:>TP(0000:中断类型号*4)=>IP(0000:中断类型兮*4+2)=>CS中断返回TRET((SP))=>CS(SP)+2=>SP((SP))=>1P(SP)+2=>SP((SP))=>FR(SP)+2=>SP三、实验源代码:DATASEGMENTMAXLENDB201NPTLENDB0STR1DB10DUP(0)STR2DB10DUP(0)DATAENDSSTAC
4、KSEGMENTSTACKDW40HDIP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:MOVAX,DATAMOVDS,AXLEADX,MAXLEN;输入字符串MOVAH,OAHINT2111XORCX,CXLEASI.STRl;SI,DI分别指向入,出U参数数据域LEADI,STR2CALLCLRNUM;调用子程序CMP1NPTLEN,0JZLOCALLCHAXGECHJMPOUTPUTLO:MOVBYTEPTR[DT],’?’MOVBYTEPTR[DI+1]
5、,,$,OUTPUT:MOVDL,ODHMOVAH,02HTNT21HMOVDL,OAIIMOVAH,02HINT21HLEADX,STR2MOVAH,09HINT2111MOVAH,4CHINT21HCLRNUMPROCPUSHDTPUSHSIPUSHAXPUSHCXMOVCL,INPTLENLOP:CMPBYTEPTR[SI],3OIIJAELIJMPL2LI:CMPBYTEPTR[ST],39HJAL2DECINPTLENJMPL3L2:MOVAL,[SI]MOVLOT],AtINCDIL3:INCSILOOPLOPPOPCX
6、POPAXPOPSIPOPDIRETCLRNUMENDPCIIANGECIIPROCPUSHCXPUSHDIMOVCL,INPTLENLOP1:CMPBYTEPTR[DI],61HJAEL4JMPL5L4:CMPBYTEPTR[DI],7AHJAL2SUBBYTEPTR[DI],2011L5:INCDILOOIJLOP1MOVBYTEPTRPOP1)1POPCXRETCHANGECHENDPCODEENDSENDBEGIN测试结果:数椐记录和计算结论⑸»)通过此程序可以从键盘输入(带回显)一个长度在10字符以lAj的字符串,并保存在
7、缓冲区;可以检测并删除字符串中的数字字符,将字符串中所有小写字母改为大写字母;同时可以将处理后的字符串在新的一行显示,若字符串为空串则显示‘?’。通过这个实验程序:1、掌握了子程序设计方法,以及常用系统调用的使用方法。,J、2、能够设计字符串处理和关的程序。$3、掌握了使用DEBUG来对系统调用进行调试的过程。导师指老成绩评定:指导教师签名: