北京工业大学 微机原理 实验二 熟悉汇编程序建立及其调试方式 实验报告_第1页
北京工业大学 微机原理 实验二 熟悉汇编程序建立及其调试方式 实验报告_第2页
北京工业大学 微机原理 实验二 熟悉汇编程序建立及其调试方式 实验报告_第3页
北京工业大学 微机原理 实验二 熟悉汇编程序建立及其调试方式 实验报告_第4页
北京工业大学 微机原理 实验二 熟悉汇编程序建立及其调试方式 实验报告_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理实验报告 实验二 熟悉汇编程序建立及其调试方式姓名: 学号: 一、 实验目的1. 熟悉汇编语言源程序的框架结构,学会编制汇编程序。2. 熟悉汇编语言上机操作的过程,学会汇编程序调试方法。二、 实验内容1. 学习编写汇编语言源程序的方法,了解数据存放格式。2. 阅读给出的程序,找出程序中的错误。3. 通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立、汇编、链接、调试、修改和运行等全过程。(一) 修改后的程序:stacksg: segment para stack stack ;不能有冒号 db 256 dup(?) stacksg endsdatasg: segment par

2、a data;不能有冒号block dw 0,-5,8,256,-128,96,100,3,45,6,512 dw 23,56,420,75,0,-1024,-67,39,-2000count equ 20max dw ?datasg endscodesg: segment ;不能有冒号 assume ss:stacksg , cs:codesg assume ds:datasg org 100hbegin mov ds, datasg ;begin: 应改为 mov ax , datasg mov ds, ax lea si ,block mov cx, count dec cx mov a

3、x , sichkmax add si,2;应加冒号chkmax: cmp si , ax jle next mov ax , si dec cx ;删除 next: loop chkmax mov max ,ax mov ah, 4ch int 21hcodesg ends end begin(二) 程序注解stacksg segment para stack stack db 256 dup(?)stacksg ends ;定义堆栈段datasg segment para data ;数据段定义block dw 0,-5,8,256,-128,96,100,3,45,6,512 dw 23

4、,56,420,75,0,-1024,-67,39,-2000 ;定义变量block包含20个字count equ 20 ;count=20max dw ? ;定义字变量max并不赋值datasg endscodesg segment ;代码段定义 assume ss:stacksg , cs:codesg ;说明stacksg是堆栈段 assume ds:datasg ;codesg是代码段,datasg是数据段 org 100hbegin: mov ax, datasg mov ds, ax ;ds指向datasg lea si ,block ;取block的有效地址给si mov cx,

5、 count ;cx=20 dec cx ;cx=cx-1 mov ax , si ;将ds:si里的值送到axchkmax : add si, 2 ;si=si+2 cmp si , ax ;比较ds:si与ax值的大小 jle next ;如果ds:si的值小于ax里的值,则跳转到next mov ax , si ;将ds:si的值送到axnext: loop chkmax ;循环chkmax mov max ,ax ;将ax的值送到变量max mov ah, 4ch ;结束 int 21hcodesg ends end begin(三)程序功能:找出20个数中的最大值并保存。(三) 流程

6、图开始从内存取数si=si+2siax? yax=si ncx减1cx=0? n y保存最大值结束(四) 实验步骤1、建立汇编语言源程序,编译、链接、建立成可执行文件 2、运行debug调试程序,装入别调试程序,用u命令查看调入的程序 3、用r命令查看当前寄存器内容代码段段基址:19e2 数据段段基址:19bfax=0000 bx=0000 cx=0548 dx=0000 sp=0100 bp=0000si=0000 di=0000 ds=19bf es=19bf ss=19e2 cs=19e2 ip=0100 4、用d命令查看并记录下内存中数据存放格式 跳转到g 011d 执行到 mov a

7、h,4c 再执行d命令:d ds:0 29 查看数据段内的存储内容 从这里可以看出存入的20个数字5、用t命令但不运行程序,观察各条指令执行结果,以及对寄存器,标志位,内存单元的影响,若找出程序中的错误,用q命令退出debug环境,修改汇编语言源程序,重复上述步骤,直至整个程序无误。 6、若将lea si,block语句改为lea si,block+2*count-2,并将add si,2改为sub si,2,,重新运行程序观察结果: 和之前的结果一样。7、若重新给出一组数据,可用e命令输入新数据后运行程序,观察并记录运行结果。8、若要求找出数据区中最小数,程序将如何修改,试上机调试。 将jle next改为jge next 实验结果如下: 三、 实验习题与思考1.在装入被调试程序后,如何知道分配给该用户程序的数据段在内存中的位置?答:在debug环境中用r命令2.数据区以什么形式存放用符号数的?答:以补码形式存放有符号数3.修改前、后程序在执行时有何区别(提示:观察数据指针的变化)答:修改前si递增,修改后si递减4.程序执行完毕,结果存放在何处?答:内存max(142d:0028)5.总结一下cs,ip,ss,ds,es被设置的区别?答:cs,ds,ss

温馨提示

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

评论

0/150

提交评论