福建农林大学_汇编实验五_DOS功能调用精要.docxVIP

福建农林大学_汇编实验五_DOS功能调用精要.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
福建农林大学_汇编实验五_DOS功能调用精要

福建农林大学计算机与信息学院实验报告系:计算机专业:计算机科学与技术年级: 2014 姓名学号:实验室号__ 计算机号实验时间:2016-10-29指导教师签字:刘庆连成绩:实验五DOS功能调用1.实验目的(1)学会DOS中关于显示功能调用指令的用法;(2)领会修改显存方法显示字符。2.实验内容1)BUF开始的3个16位二进制数用十六进制数的形式显示出来。(1)理解程序(2)输入程序,汇编,运行(在DOS状态下输入:文件名.EXE),观察结果。(3)如果要分行显示,程序要如何修改?DATASEGMENTBUFDW4F59H, 56A8H, 0FF90HDATAENDSCODESEGMENTASSUMECS: CODE, DS: DATASTART:MOVAX, DATAMOVDS, AXMOVSI, 0P:MOVBX, BUF[SI]MOVCH, 4L:MOVCL, 4ROLBX, CLMOVDL, BLANDDL, 0FHCMPDL, 10JBNEXTADDDL, 7NEXT:ADDDL, 30HMOVAH, 2INT21HDECCHJNZLINCSIINCSICMPSI, 4JNAPMOVAH, 4CHINT21HCODE ENDSENDSTART2)直接改变显存内容显示。(1)显存空间分配:内存地址空间中,B8000H-BFFFFH共32KB的空间,为80×25彩色字符模式显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。80×25=2000个字符,每个字符在缓冲区中占2个字节,一个字节存放ASCII码,一个字节存放字符属性(字符颜色、字符背景颜色、闪烁、高亮度)(2)偏移地址计算:如第2行,第40列:(2-1)×160+40×2 这个偏移地址中存放字符的ASCII码,(2-1)×160+40×2+1这个偏移地址中存放字符的属性。第M行,第N列的一般计算公式为:(M-1)×160+N*2 存放ASCII码(M-1)×160+N*2+1 存放属性(3)运行下列程序,在屏幕的第1行,会显示一个字符X。根据上面(1)、(2)点理解程序段。STACKSEGMENTDB128DUP(0)STACKENDSCSEGSEGMENTASSUMECS: CSEG, SS: STACKSTART:MOVAX, STACKMOVSS, AXMOVSP, 128MOVAX, 0B800HMOVES, AXMOVAH, ‘X’S:MOVES: [160*1+40*2], AHMOVAL, 0MOVAH, 4CHINT 21HCSEGENDSENDSTART3)编程显示以下图案。*************************4)编写程序,统计字缓冲区中的20个数据的正数、负数、0的个数,并将统计结果以16进制形式显示出来。4.算法描述及实验步骤题1:(2)按要求输入程序(1.txt)-汇编-链接-运行(在DOS状态下输入:文件名.1.EXE)-观察结果。(3)要实现3个数据换行输出,在代码中增加,如下代码数据段:MSG DB 0DH,0AH,$代码段:INCSI 和CMPSI, 4之间,即INCSILEA DX,MSGMOV AH,9INT 21HCMPSI, 4题2:按要求输入代码,编译,链接,执行exe.可以看到程序首先通过MOV AX,0B800HMOV ES,AX在内存开辟了附加段,段首地址为B800H并通过MOV ES:[160*1+40*2],AH以便于向B80F0H(位于B8000H~BFFFFH彩色字符模式显示缓冲区)执行MOV AH,X写入字符‘X’,以达到直接改变显存内容显示。题3:分析说明:应用多重循环。将循环次数先送入BX,再将其送入CX,调用2号功能,进行*输出,循环2号功能,然后调用9号功能进行换行,BX自减两次,判断BX是否小于等于1,如果不是进行大循环,知道结束为止。输入代码如下题4:按要求完成指定功能代码5.调试过程实验过程按部就班,没有出现重大的错误6. 实验结果题1分析:实现了BUF中三个数据的换行输出题目2分析:输出指定的X,与预期一致。题3运行结果分析:实现了题目的输出指定的*图形题4运行结果分析:有图可知正、负、0 的个数与设定的BUF DB 0,-1,2,4,3,-4,5,6,-7,0的正、负、0的个数即5个正数、3个负数,2个数为0,相一致,结果正确!7. 总结通过此次实验,能够运用,在DOS中关于显示功能调用指令的用法,领会了修改显存方法显示字符的实现形式,进一步熟悉了子程序的调用。附录:题1代码(换行输出)DATASEGMENTBUFDW4F59H, 56A8H, 0FF90HMSG DB 0DH,0AH,$DATAENDSC

您可能关注的文档

文档评论(0)

shuwkb + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档