汇编语言程序设计_第1页
汇编语言程序设计_第2页
汇编语言程序设计_第3页
汇编语言程序设计_第4页
汇编语言程序设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业实验目的与内容目的:1)进一步熟悉汇编语言程序的编辑、宏汇编、链接、运行基本概念;2)熟练掌握动态调试程序TD/DEBUG 的常用命令或窗口功能,学会用TD/DEBUG 调试程序,修改数据和寄存器等环境;3)熟悉掌握汇编语言程序的典型数据结构设计、典型程序流控制方法,了解DOS/BIOS 功能调用的基本方法。内容:(1)编写程序实现如下功能: 从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其他字符不变)并按原顺序将这些字符在屏幕

2、上显示出来。 从键盘输入在065535 之间的十进制数,将其转换为16 进制数并在屏幕中显示出来,要求判断输入字符串是否为在065535 之间的十进制数。(2)复习TD 各种操作,并用DEBUG 调试程序,学会基本命令操作,并通过单步、设置断点等方法观察中间结果,完成正常运行。命令行方式下直接键入debug myfile.exe 回车(myfile 为待调试可执行程序),进入调试方式(显示-),键入H 回车显示全部命令、格式和功能。常用命令有:U(反汇编)、A(汇编输入指令程序)、R(寄存器显示/修改)、I(端口输入)、O(端口输出)、D(显示数据)、E(修改数据)。除资源修改管理功能外,重点

3、应用T(单步)、Tn(执行n 步)、P(过程/指令)、G(从当前CS:IP执行到断点)或G=1 2(从1 执行到2 断点)调试实验程序。程序流程图:1.2. 三. 方案实现与测试1)实验一的基本实验内容和要求 编写代码完成功能要求,文件格式为.asm 文件(如文件名为add.asm),将文件放入带汇编工具的文件夹中,即含有汇编工具(MASM/TASM.EXE)和链接工具(LINK/TLINK.EXE)的文件夹。 全屏启动命令行模式,进入上述文件夹输入: tasm add.asm 或 masm add 回车后编译产生add.obj 文件再输入: tlink add.obj 或 link add

4、回车后链接产生add.exe 文件如果程序有错误,编译时会产生错误提示,指出错误的位置和错误类型及错误码,改正错误后再重新编译链接。 启动TD 并载入add.exe,在代码段可以看到程序指令,部分符号已被实际地址或数值替换表示。直接运行:运用TD功能键F9,运行结果如下图所示由图可以看出,在数据区13B3:0000到13B3:0005分别存放的是data1,data2两个加数和data3和的数据,且运行结果正确,在运行结束之后,寄存器器中的值恢复到随机值。单步运行:使用TD功能键F7,当单步运行完mov cx,0002这条指令后,程序的运行结果如下图所示断点运行,比如在指令mov si+000

5、4,al zhetiao 指令上设置断点后,程序的运行结果为:直接在代码区添加代码,如在指令mov si,00000 后添加指令mov ax,100.程序结果2)汇编语言程序设计实验内容(1)从键盘输入任意字符串后,存入自定义存储单元,判断处理后将小写字母转换为大写字母(其他字符不变)并按原顺序将这些字符在屏幕上显示出来。主要算法:disp proc nearxor cx,cx;给CX中的数据进行清零mov cl,input1;将输入的字符数付给,循环次数mov si,2;input开始为实际输入的ASCII码again:mov dl,inputsicmp dl,61h;判断是否为小写字母jb

6、 nextcmp dl,7ahja nextsub dl,20h;将小写字母转换为大写字母next: mov ah,02h;显示字符int 21hinc si;SI指向下一个字符loop againretdisp endp调试程序:使用单步运行的方法,输入字符串“123abc”,程序运行到调用子程序,单步运行指令mov cl,0001后,发现此时CX中的数值变为6,符合我刚才输入的字符总数。程序第一次执行指令cmp dl,61,可以发现CF=1,此时程序跳转到显示字符程序段,符合我刚才输入的第一个字符1的情况。当CX=0003时,此时程序判断输入的字符a是否为小写字母,单步运行指令sub dl

7、,20h后,小写字母a被转换为A,程序运行结果正确。当子程序运行结束之后,回到主程序,当运行结果提示“Do you want to continue (y/n)”,此时如输入y,重复程序操作,如输入n,程序结束。最终程序运行结果如下图所示:(2)从键盘输入在065535 之间的十进制数,将其转换为16 进制数并在屏幕中显示出来,要求判断输入字符串是否为在065535 之间的十进制数。 主要算法:change proc nearclcxor ax,axxor bx,bxxor dx,dxmov cl,input1mov si,2again:mov bl,inputsicmp bl,30hjb e

8、rror1cmp bl,39hja error1sub bl,30hdec clcmp cl,0jz overmov ax,1push cxloop2:mul tenloop loop2pop cxmul bxadd output,axjc errorinc sijmp againover: add output,bxjnc over1error1: mov right,0over1:retchange endp调试程序:使用单步运行的方法,输入字符串“123”,当程序运行到调用运行数值转换子程序,单步运行指令mov bl,inputsi,在调试程序段显示为mov bl,si+0001。这里和上个字符串实验运行指令mov dl inputsi在调试程序段显示为何不同?经检查发现,在本程序的数据段中,input的值为0001.单步运行指令mov cl 0002,发现CX中的数值变为3,符合输入字符串的个数。程序第一次运行指令cmp bl 30h,开始为我输入的第一个字符是不是0-9,判断好之后,运行指令sub bl,30h。将ASCII码转换为数字。程序将字符串都转换为数字之后,再将其转换为十六进制数并将其输出。当我输入的字符串不是0-65535中的数字时,此时程序运行结果会提示“The number you input is not from 0-6

温馨提示

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

评论

0/150

提交评论