- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验二、汇编语言程序设计实验二、汇编语言程序设计
东南大学
《微机实验及课程设计》
实验报告
实验二、汇编语言程序设计
姓 名: 学 号:
专 业: 实 验 室:516
评定成绩: 审阅教师:
实验目的:
近一步熟悉汇编语言的编辑、宏汇编、链接和运行的基本概念
熟练掌握动态调试程序TD/DEBUG的常用指令和窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器环境
熟悉掌握汇编语言程序的典型数据结构设计、典型程序控制方法,了解DOS/BIOS功能调用的基本方法
实验内容:
基本操作内容:
(1)、掌握进入全屏命令行方式、修改环境的方法
启动开始菜单里的运行选项,键入cmd,即可启动命令行方式,在其属性栏中选择全屏即可进入全屏命令行方式。
(2)、确定源程序的存放目录,构建个人实验环境。
(3)、建立、编辑汇编源程序
选择程序样本,构建典型的汇编程序框架,包括基本的数据段、堆栈段和代码段,编写程序实现如下功能:
必做:
2-1.从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其它字符不变),并按原顺序将这些字符在屏幕上显示出来(参考程序P36),并显示字符串“The total number is XXXXX”。
2-2.从键盘输入一个0~255之间的十进制数,将其转换为16进制数,并在屏幕上显示变换前后的数据(参考程序P38) 。
选作:
2-3、从键盘输入5个十六进制带符号数(范围为-128~+127),请将它们按从大到小排序,并将排序前后的数据显示在屏幕上。
(4)、用汇编工具(MASM/TASM.EXE)汇编源程序产生OBJ目标文件
将所要变异的源程序文件(文件名.asm)放到带汇编工具的文件夹中,在全屏命令行模式下,进入该文件夹,输入tasm 文件名.asm,回车后即可编译产生OBJ目标文件。
(5)、用链接程序(LINK/TLINK.EXE)产生EXE可执行文件
产生OBJ目标文件后,继续输入:tlink 文件名.obj,回车后即可产生EXE可执行文件。
(6)、用调试工具软件(TD.EXE/D)调试执行程序
1在Windows中启动TD
a、 仅启动TD而不载入要调试的程序
双击TD.EXE文件名,Windows就会打开一个DOS窗口并启动TD。启动TD后会显示一个版权对话框,这时按回车键即可关掉该对话框。
b、 启动TD并同时载入要调试的程序
把要调试的可执行文件拖到TD.EXE文件名上,Windows就会打开一个DOS窗口并启动TD,然后TD会把该可执行文件自动载入内存供用户调试。若建立可执行文件时未生成符号名表,TD启动后会显示“Program has no symbol table”的提示窗口,这是按回车键即可关掉该窗口。
2观察CPU寄存器、存储器环境
TD启动后呈现的是一个具有窗口形式的用户界面,称为CPU窗口。
3单步、断点运行,观察中间结果,完成正常执行。
TD功能键F7为跟踪进入(对CALL指令将跟踪进入子程序),F8为单步跟踪(对CALL指令将执行完子程序返回后才停下),F2为在当前光标处设置、清除断点。通过单步、断点运行中观察数据区、各个寄存器值的变化,以验证程序运行是否正确。
4修改当前运行环境,直接编写程序片段,验证指令功能。
a、 修改寄存器(AX、BX、CX、DX、SI、DI、BP、SP),并观察修改段寄存器。
b、 修改存储器,并指定不同存储段。
c、 修改 CS:IP,单步运行制定指令(F7或F8),观察指令运行结果。
d、 将光标放置在TD窗口的代码区右击,可显示代码区的局部菜单,选择相应功能进行操作。
5重点解决段存储结构和数据变量的定义和访问。
访问数据段中具体位置的值时,可将光标放置在数据区,右击产生数据区菜单。
实验原理:
实验源程序(主要部分)和流程图:
2-1:
data segment
input db 100,100 dup(0)
string1 db 0dh,0ah,please input your strings,0dh,0ah,$
string2 db 0dh,0ah,The string you put are,0dh,0ah,$
string3 db 0dh,0ah,Do you want to continue(y/n),0dh,0ah,$
string4 db 0dh,0ah,The total mumber is ,0dh,0ah,$
data ends
stacks segment stack
db 256 dup(0)
stacks ends
文档评论(0)