福建农林大学计算机与信息学院报告

福建农林大学计算机与信息学院报告

ID:32480464

大小:671.54 KB

页数:13页

时间:2019-02-07

福建农林大学计算机与信息学院报告_第1页
福建农林大学计算机与信息学院报告_第2页
福建农林大学计算机与信息学院报告_第3页
福建农林大学计算机与信息学院报告_第4页
福建农林大学计算机与信息学院报告_第5页
资源描述:

《福建农林大学计算机与信息学院报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、福建农林大学计算机与信息学院实验报告系:计算机专业:计算机科学与技术专业年级:2013姓名:陈仁金学号:3136010098实验室号__田C513计算机号3136010098实验时间:指导教师签字:刘庆连成绩:实验四子程序设计1.实验目的(1)学习子程序的编写,主子程序的调用;(2)不同模块间程序的调用和调试。2.实验内容1)数据段中的3个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,对CALL语句和RET语句观察SP,IP的变化,并用D命令查看栈顶的内容。DATASEGMENTMAGDB‘ABC’DATAENDSCODESEGMENTASSUM

2、ECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,0MOVCX,3LL:MOVDL,MAG[SI]CALLMADDINCSILOOPLLMOVAH,4CHINT21HMADDPROCMOVAH,02H//单个字符显示INT21HRETMADDENDPCODEENDSENDSTART可知IP一直指向下一条指令的地址,而在调用子函数的过程中,SP一直指向FFFE,当回到主函数的时候SP的值又变回0000.2)阅读S31.ASM和S32.ASM两个模块中的程序,并分别汇编,然后连接成一个可执行文件S31.EXE。具体步骤如下:MASMS

3、31.ASM(分别汇编)MASMS32.ASMLINKS31S32(将两个文件连接成为一个文件名为S31)S31.EXE(运行)3)编程:利用主程序调用子程序,比较BUF1和BUF2缓冲区中不相等的字符,并将不相等的字符显示出来。(也可以将找到的不相等字符逐个显示,用INT21H的02功能调用)4)编程:子程序搜索指定字符缓冲区中是否有N,如果有用Y替代。调用子程序将BUF1,BUF2,BUF3中的N全部用Y替代。附源程序:NAMES31.ASM不同模块间的段间调用。从键盘输入2位非压缩BCD数,存入AX寄存器中。为了将其转换为二进制数,编写一个子程序TRAN。显示子程序

4、DISP完成将16进制数转换为对应的ASCII码并显示该字符,显示子程序在另一模块S32中。输入数据为00时结束。EXTRNDISP:FARCODESEGMENTPARA‘CODE’ASSUMECS:CODESTART:MOVAH,01HINT21HMOVBL,ALINT21HMOVAH,ALMOVAL,BLCMPAX,3030HJEEXITCALLNEARPTRTRANCALLFARPTRdispJMPSTARTEXIT:MOVAH,4CHINT21HTRANPROCNEAR;将输入的ASCII码转换成2进制数ANDAX,0F0FH;将ASCII码转换成非压缩BCD码,

5、;高位在AL中MOVBL,AHMOVCL,10DMULCLADDAL,BLRETTRANENDPCODEENDSENDSTARTNAMES32.ASMPUBLICDISPCODE1SEGMENTPARA‘CODE’ASSUMECS:CODE1DISPPROCFARMOVBL,ALMOVBH,00MOVCH,4ROLL:MOVCL,4ROLBX,CLMOVDL,BLANDDL,0FHCMPDL,9JBENEXT1ADDDL,07HNEXT1:ADDDL,30HMOVAH,02HINT21HDECCHJNZROLLRETDISPENDPCODE1ENDSEND5)编一个子程序

6、:输入一个字符,显示出来。6)编一个子程序:输入一个字符串,显示出来。4.算法描述及实验步骤第一题(1)编写源程序,用记事本输入程序,并存储为源程序(2)对源程序进行汇编、连接(3)在debug提示符下输入g,运行程序(4)运行t命令,单步执行程序(5)用d命令查看栈顶的内容第二题(1)编写两段源程序,用记事本输入程序,并存储为源程序,分别为s31和s32(2)分别对源程序进行汇编(3)连接时,输入:links31+s32,生成一个文件名为s31的.exe文件(4)在debug下,用g命令运行s31.exe文件第三题DATASEGMENTBUF1DB'HUIFEHJSHE

7、GDC'LEN1=$-BUF1BUF2DB'HUISWHJSAWQDC'BUFDBLEN1DUP(?);不相同的字符存在BUF开始的缓冲区DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADI,BUF1LEASI,BUF2MOVCX,LEN1LEABX,BUFCALLKLLMOVBYTEPTR[BX],'$';在要显示的字符串末尾加‘$’,显示字符串bufLEADX,BUFCALLPRINTMOVAH,4CHINT21HKLLPROC;比较2个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。