汇编语言实验五.docx_第1页
汇编语言实验五.docx_第2页
汇编语言实验五.docx_第3页
汇编语言实验五.docx_第4页
汇编语言实验五.docx_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息科学技术学院实验报告(首页) 课程名称汇编语言班级16软件工程1班实验名称编写、调试具有多个段的程序教导教师姓名学号日期 2018.04.06一、实验目的 掌握在汇编代码中正确使用多个段二、实验设备与环境计算机DOS操作系统或 Windows 操作系统MASM.EXE, LINK.EXE, DEBUG.COM 或宏汇编集成环境3、 实验内容、程序清单及运行结果(1) 实验内容:程序清单:Assume cs:code,ds:data,ss:stackData segmentDw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987hData endsStack segmentDw 0,0,0,0,0,0,0,0Stack endsCode segmentStart:mov ax,stackMov ss,axMov sp,16Mov ax,dataMov ds,axPush ds:0Push ds:2Pop ds:2Pop ds:0Mov ax,4c00hInt 21hCode endsEnd start运行结果:Data段的内容CPU执行程序,程序返回前,data段即ds段中的数据为0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h。(红色标记处)CPU执行程序,程序返回前,cs=0774h、ss=0773h、ds=0772h。(绿色标记处)设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1。(2) 实验内容:程序清单:Assume cs:code,ds:data,ss:stackData segmentDw 0123h,0456hData endsStack segmentDw 0,0Stack endsCode segmentStart:mov ax,stackMov ss,axMov sp,16Mov ax,dataMov ds,axPush ds:0Push ds:2Pop ds:2Pop ds:0Mov ax,4c00hInt 21hCode endsEnd start运行结果:Data段的内容CPU执行程序,程序返回前,data段即ds段中的数据为0123h,0456h,0,0,0,0,0,0。(红色标记处)CPU执行程序,程序返回前,cs=0772h、ss=0771h、ds=0770h。(绿色标记处)设程序加载后,code段的段地址为X,则data段的段地址为X-2,stack段的段地址为X-1。对于如下定义的段:name segmentname ends如果段中的数据占N个字节,则程序加载后,该段实际占有的空间为 (N/16+1)*16(3) 实验内容:程序清单:Assume cs:code,ds:data,ss:stackCode segmentStart:mov ax,stackMov ss,axMov sp,16Mov ax,dataMov ds,axPush ds:0Push ds:2Pop ds:2Pop ds:0Mov ax,4c00hInt 21hCode endsData segmentDw 0123h,0456hData endsStack segmentDw 0,0Stack endsEnd start运行结果:Data段的内容CPU执行程序,程序返回前,data段即ds段中的数据为0123h,0456h,0,0,0,0,0,0。(红色标记处)CPU执行程序,程序返回前,cs=0772h、ss=0776h、ds=0775h。(绿色标记处)设程序加载后,code段的段地址为X,则data段的段地址为X+3,stack段的段地址为X+4。(4) 实验内容:结果:第(3)个程序能够执行,(1)、(2)将无法执行,因为当去掉“start”后,程序将不知道第一句执行语句的入口,默认从程序的开头执行程序,而(1)、(2)程序的开头是数据段,故而导致执行出错。(5) 实验内容:程序清单:assume cs:codea segmentdb 1,2,3,4,5,6,7,8a endsb segmentdb 1,2,3,4,5,6,7,8b endsc segmentdb 0,0,0,0,0,0,0,0c endscode segment start:mov ax,cmov es,axmov ax,amov ds,axmov cx,8mov ax,0mov bx,0again1:mov al,ds:bxmov es:bx,alinc bxloop again1/第一个循环,将a段的数据填入c段mov ax,bmov ds,axmov bx,0mov cx,8again2:mov al,ds:bxadd es:bx,alinc bxloop again2/第二个循环,将b段的数据依次和c段数据相加,结果 存入cmov ax,4c00hint 21hcode endsend start运行结果:第一次循环后,c段的内容第二次循环后,c段的内容,可以看到,和预期效果相符。(6) 实验内容: 程序清单:assume cs:codea segmentdw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffha endsb segmentdw 0,0,0,0,0,0,0,0b endscode segment start:mov ax,bmov ss,axmov sp,10h;设置b段为栈段mov ax,amov ds,axmov cx,8mov ax,0mov bx,0again:push ds:bx;压入栈,即压入b段inc bxinc bxloop againmov ax,4c00hint 21hcode endsend start运行结果:循环运行后的结果,0774:0为b段,结果和预期相符。4、 实验心得1、 程序默认以16字节为边界对齐,所以不足16字节的部分

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论