微机原理与接口技术实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理与接口技术实验报告
实验一、认识tddebug集成操作软件
一.实验内容
(一)实验题目:数据传输实验
1.编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏
幕上。

2.修正此程序,使用字符串传输指令顺利完成。

(二)实验目的:通过对该程序进行调试,查看程序段、数据段、附加段装入内存后
的分配情况。

单步执行数据传送指令后,观察各个寄存器及数据区的内容。

(三)实验步骤:
1.运行tddebug软件,选择edit菜单编写实验程序
件。

3.使用rmrun菜单中的run运行程序,观察运行结果。

4.采用rmrun菜单中的debug调试程序,查阅程序段、数据段、额外段放入内存后
的分配情况。

单步执行数据传送指令后,观察各寄存器及数据区的内容。

过程如下:1)按f7单步执行,在代码区中有一个三角,表示正在执行的指令。

每一条指令的执行一
定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。

2)检查内存数据区的内容,关键是找出用户程序的数据段和附加段:
方法1:在cpu窗口按tab键并使内存数据表明区沦为活动区,按ctrl+g键,?
输入:“ds或es寄存器的值:偏移地址”,即可显示用户指定的数据区方法2:选
择菜单view|dump,弹出内存数据显示窗口。

3)查阅继续执行结果:按alt+f5,转换至用户窗口。

5.修改数据区中的数据,实地考察、调试程序的正确性。

二.分析设计思想,绘制实验原理图、流程图。

汇编语言程序的研发过程例如图1.1右图,这个过程主要存有编辑、编程、链接几个
步骤形成。

三.程序清单及相关注释。

ddatasegment
msrdb\lenequ$-msr
ddataendsexdasegmentmsddblendup(?)
;定义源数据段
;定义额外数据段
1
exdaends
;定义堆栈段
mystacksegmentstackdw20dup(?)mystackends
codesegment
;定义代码段
assumecs:code,ds:ddata,es:exdastart:movax,ddata
movds,axmovax,exdamovmovmovmovmov
es,axsi,offsetmsrdi,offsetmsdcx,lenbx,0
;装载数据段寄存器
;装载附加数据段寄存器
next:moval,msr[bx];已经开始传输数据moves:msd[bx],al inclooppush
bxnextes
;将附加段寄存器指向的段值赋给数据段寄存器
popdsmovdx,offsetmsd
movah,9
int21hmovah,4chint21h
;显示字符串;返回dos状态
codeendsendstart
四.实验结果并分析。

五.斩获体会及实验中碰到的问题和化解方法。

在这次试验中主要是掌握tddebug的开发环境,了解汇编语言的基本程序。

由于刚
2
刚接触汇编语言和开发环境,各项知识都显的比较薄弱,遇到了很多操作上的基本问题。

比如使用快捷键进行界面操作不太熟练等。

由于代码段相对比较长,很多地方还需在
老师的指导下才能看懂,直接将代码程序打出来会出现很多由于不理解粗心等造成的失误
使之不能编译成功。

后来尝试将程序代码复制并另存为asm格式之后就可以直接编译方便
了很多灵活了很多。

今后还需在理论课堂上多下功夫,进一步对汇编深入学习。

实验二、i/o程序设计
一.实验内容:i/o程序设计(一)实验内容:
1.编程由键盘输入任一一个字符,将该字符的ascii码值表明在屏幕上。

2.从键盘输入两个1位十进制数,计算二者之和,并将结果显示在屏幕上。

3.编程由键盘输入任一一位数,将该数以二进制数形式表明在屏幕上,基准:
5=00000101b
(二)实验步骤:
1.图画出来实验流程图。

2.运行tddebug软件,选择edit菜单编写实验程序
4.采用rmrun菜单中的run运转程序,观测运转结果。

5.使用rmrun菜单中的debug调试程序。

单步执行指令,观察各寄存器及数据区的
内容。

6.更改数据区中的数据,考察程序的正确性。

二.分析设计思想。

设计思路:首先将该数以十六进制数形式分解,然后将每一位分别转换为ascii码送
屏幕显示。

其中0h~9h之间的数加30h,即可得0h~9h的ascii码,而ah~fh的ascii码,则需再加7h,参见表5-1。

参考程序流程如图2-1所示。

示例程序参见参考程序清单。

三.data
程序清单及流程segment
mesdb'showaashex:',0ah,0dh,'$'
sddb'a'datacode
endssegment
movax,datamovds,axmovmov
dx,offsetmes;表明提示信息ah,09h
si,offsetsdal,ds:[si]
3
assumecs:code,ds:datastart:
int21hmovmov
andal,0f0h;取高4位
movcl,4shral,clcmpal,0ah;是否是a以上的数jbc2addal,07hc2:addal,30h movmovintmovandcmpjb
21h
al,ds:[si]al,0fh;取低4位al,0ahc3
;显示字符
dl,alah,02h
addal,07hc3:addal,30h
movmovintmovint
dl,alah,02h21h
ah,4ch21h
;显示字符
;返回dos
codeendsendstart
四.
实验结果。

五.收获体会。

在实验中,强化了对理论知识的掌控,由于堂上的科学知识太多平时无法较好的认知,在具有
体的实践中更加巩固了我对理论知识的认识,增强了汇编语言的编程语感。

汇编语言
是底层的硬件语言,和c语言有类似的地方,也有不一样的地方,所以在实际编程的过程
中写给代码段测试结果,加深对理论知识的灵活掌握,为今后逐步增加难度的编程序学
4
习中打好一定的基础。

实验三、循环程序设计
一.实验内容
1.谋某数据区内负数的个数
2.试编程统计数据区中正数、零和负数的个数。

3.编程求无符号数字节序列中最大
值和最小值。

4.从键盘输入一字符串,搜寻该字符串中与否存有字符“a”,若存有恳请输入其在
串成中的边线。

二.分析设计思想
1.求某数据区内负数的个数为统计数据区内负数的个数,需逐个判别区内的每一个
数据,然后将所有数据中凡是符号位为1的数据个数累加起来,即得到区内包含负数的个数。

参见程序清单.
2.先行编程统计数据区中正数、零和负数的个数。

3.编程谋并无符号数字节序列中
最大值和最小值
实验中可使用bh和bl作为暂存现行最大值和最小值,且在初始时将bh和bl初始化
为首字节的内容,循环依次比较每个字节的内容,求得最大值(存于bh中)和最小值
(存于bl中),送屏幕显示。

三.程序清单及有关注释
;确定数据区numb中负数的个数(存放于bl中)
5。

相关文档
最新文档