汇编程序设计实验报告_第1页
汇编程序设计实验报告_第2页
汇编程序设计实验报告_第3页
汇编程序设计实验报告_第4页
汇编程序设计实验报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、实验一、认识tddcbug集成操作软件0实验二、i/o程序设计4实验三、代码转换程序设计8实验四、循环程序设计实验报告11实验一、认识tddebug集成操作软件实验题目:认识tddebug集成操作软件实验目的:1. 熟悉汇编程序的开发过程。2. 认识tddebug集成操作软件。3. 掌握在tddebug集成环境屮编辑、编译、连接汇编语言程序方法。4. 掌握int21h软件中断来调用dos内部子程序的方法实验要求:pc微机一台实验主要步骤:1. 运行tddebug软件,选择edit菜单编写实验程序2. 使用compile菜单中的compile和link对实验程序进行汇编、连接,生成执行文件。3.

2、 使用rmrun菜单中的run运行程序,观察运行结果。4. 使用rmrun菜单屮的debug调试程序,查看程序段、数据段、附加段装入内存后的分 配情况。单步执行数据传送指令后,观察各寄存器及数据区的内容。过程如下:5. 按f7单步执行,在代码区中有一个三角,表示正在执行的指令。每一条指令的执行一 定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。6. 检查内存数据区的内容,关键是找岀用户程序的数据段和附加段:7. 方法1:在cpu窗口按tab键使内存数据显示区成为活动区,按ctrl+g键,输入:“ds 或es寄存器的值:偏移地址”,即可显示用户指定的数据区& 方法2:选择菜单vi

3、ew| dump,弹出内存数据显示窗口。9. 3) 查看执行结果:按alt+f5,切换到用户窗口。10. 更改数据区中的数据,考察、调试程序的正确性。程序清单:ddata segmentmsrlenddatadbequends” hello, world !$”$ msrexdasegmentmsddblen dup(?)exdaendsmystack segment stackdw20 dup(?)mystack endscode segmentassumestart: movmovmovcs:code,ds:ddata,es:exdaax,ddatads,axax,exdamovmovmo

4、vmovmovnext: movmovinclooppushpopmovmovintmovintcode endsend实验结果:1、编译结果:es,axsloffset msrdi,offset msdcx,lenbx,0al,msrbx;开始传输数据es:msdbx,albxnextesdsdx,offset msdah,921hax,4c00h21hstartfile edit view run breakpoints data options window helpreadyimodule: noname file: d:456789noname.asm 24-1ir=cpu p?nt

5、ium pro3 t i 0#n oname#ncxtax144c1 c=0 1cs:0016>8a870000 next: mov al,msrbxbx 0003|z=0|cs:001a2688870000 mov es:msdbx,alex000a1 s=0 1cs:001f43 inc bx dx00001 o=0 1cs:0020e2f4 loop nextsi00001 p=1 iics:002206 push es di00001 a=0 1cs:0023if pop dsbp00001 i=l iics:0024ba0000 mov dx,offset msdsp00281

6、 d=0 |cs:0027b409 mov ah,9ds14181 iics:0029cd21 int 21h es14191 1cs:002bb8004c mov ax,4c00h ss141a1 iics:002ecd21 int 21hcs141d1 1cs:0030fbstiip00161 ii « i 7.7:vv.7 ? v w v.v.v.v.v:*7.va7.-.7.v.v,7.7 vv.7 w w v.v.v.7.7.7;*7 7; v :vv.v wav* v.v vv.v.7.7.7.7;v*av.wa7? v.v.7.7 vav*7/;.vav.v v*av.

7、7v.7.?-v.v.7 v v.v.v.vav*7.v; v* v? v v-avv vv v v *.if:=:;:=:=:二:拙:二:拙:穿:=:=:二:穿:=:=:;:二:拙:穿:=:=:;:二:穿:=:=:拙:=:=:二:拙:穿:=:=:刁iiii1408:0000 cd 20 fb 9f 00 9a f0 fe v/ u=h|1408:0008 id f0 32 ob d2 10 of 07 一三2 $ 丁»蛙|1408:0010 28 0e 56 01 16 04 0b 0e (rv©|ss:002a 0000|i 1408:0018 01 01 01 00

8、02 ff ff ff © © © e|ss:0028>0000| alt: f2-bkpt at f3-close f4-back f5-user f6-undo f7-instr f8-rtn f9-to flo-smenu实验二、i/o程序设计实验目的:1. 理解软屮断的调用方法及屮断过程。2. 掌握int21h软件屮断来调用dos系统i/o子程序的方法。3. 掌握将存储在内存单元中的数据在屏幕上显示的方法。4. 掌握从键盘输入信息到内存的方法。实验要求:pc微机一台1. 复习dos功能调用(int21h)中用于字符输入(功能号为01h)、字符输出(功

9、能号 为02h)、字符串输入(功能号为0ah)以及字符串输出(功能号为09h)的调用方法。 参见教材32位微型计算机原理与接口技术89页。2. 阅读示例程序,掌握输入/输ib方法。3. 从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调 试。4. 编程由键盘输入任意一个字符,将该字符的ascii码值显示在屏幕上。实验主要步骤:1. 画出实验流程图。2. 运行tddebug软件,选择edit菜单编写实验程序3. 使用compile菜单中的compile和link对实验程序进行汇编、连接,生成执行文件。4. 使用rmrun菜单中的run运行程序,观察运行结果。5. 使用r

10、mnin菜单中的debug调试程序。单步执行指令,观察各寄存器及数据区的内容。6. 更改数据区中的数据,考察程序的正确性。程序清单:;编程由键盘输入任意一个字符,将该字符的ascii码值显示在屏幕上。data segmentmes db'please input your letter:;0ah,0dh,$sd dbdata endscode segmentassume cs:code,ds:datastart: movmovmovmovintmovintmovandmovshrc2: addmovax,datads,axdx,offset mesah,09h21hah,01h21hb

11、l,alal,0f0hcl,4al,clal,30hdl,alintmovandc3: addmovmovintmovint21hal,blal,0fhal,30hdl,alah,02h21hah,4ch21hcode endsendstart实验结果:1、示例结杲:2、程序结果:实验三、代码转换程序设计实验题目:代码转换程序设计实验目的:1. 掌握运算类指令对各状态标志位的影响及其测试方法2. 掌握运用运算类指令编程及调试的方法3. 掌握子程序设计及调用方法实验要求:pc微机一台1. 复习运算类指令的用法。2. 复习子程序设计及调用方法。3. 阅读示例稈序,常握子稈序的编程方法及相关技巧。4

12、. 从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,用子程序处理方式编写 程序,以便上机调试。实验内容:1. 【示例】将5位十进制数的数字串转换为一个字的二进制数2. 编写程序将内存屮一个字的数转换为十进制数的数字串显示。3将内存中一个字的数转换为十进制数的数字串。十六位二进制数(一个字)的值域为065535,最大可转换为5位十进制数。五位十进 制数可表示为:nd = z)4xl04 + d3 xlo3 + d2 xlo2 + d xlo1 + d()因此,将十六位二进制数转换为5位ascii码表示的十进制数数字串,即采用除10取 余方法,分别求dr并将它们转换为ascii码。以字符串

13、方式显示在屏幕上。实验主要步骤:1. 画出实验流程图。2. 运行tddebug软件,选择edit菜单编写实验程序3. 使用compile菜单屮的compile和link对实验程序进行汇编、连接,生成执行文件。4. 使用rmmn菜单中的run运行程序,观察运行结果。5. 使用rmrun菜单中的debug调试程序。单步执行指令,观察各寄存器及数据区的内容。6. 更改数据区屮的数据,考察程序的正确性。程序清单:ddata segmentmes dbbuf dwdb;将内存中一个字的数转换为十进制数的数字串'the decimal decimal code of 000ch are:$'

14、;000ch5 dup(o)ddata endscode segmentassumecs:code,ds:ddatastart:movax,ddatamovds,axmovsloffset bufmovax,ds:simovbl,0ahaddsi,7movcx,5a:decsidivbladdah,30hmovds:si,ahmovah,0cmpal,0loopnzamovdx,offset mesmovah,09hint21hmovcx,5movsi,offset bufaddsi,2b:movdl,ds:simovah,02hint21hincsiloopbmovah,4chint21hl

15、oopbcodeendsendstart实验结果:1、示例结果:实验四、循环程序设计实验报告实验题目:循环程序设计实验目的:4. 掌握运算类指令对各状态标志位的影响及其测试方法5. 掌握运用运算类指令编程及调试的方法6. 掌握子程序设计及调用方法实验要求:pc微机一台1. 复习比较指令、条件转移指令和循坏指令。2. 阅读示例程序,掌握循环程序的结构、循环控制方法及相关技巧。3. 从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调 试。实验内容:1. 【示例】求某数据区内负数的个数2. 从键盘输入一字符串,搜索该字符串中是否有字符“a”,若有请输出其在串中的位置实验主要

16、步骤:1. 画出实验流程图。2. 运行tddebug软件,选择edit菜单编写实验程序3. 使用compile菜单中的compile和link对实验程序进行汇编、连接,生成执行文 件。4. 使用rmrun菜单中的run运行程序,观察运行结果。5. 使用rmi-un菜单屮的debug调试程序。观察构成分支、循环条件的各标志的变化 情况及相关寄存器内容。6. 更改数据区中的数据,考察程序的正确性。程序清单:;从键盘输入一字符串,搜索该字符串中是否有字符“a”,若有请输出其在串中的位置data segmenta dbb dbc db1 dup('plcasc input your strin

17、g:$*)1 dup(*sorry,there is not “a”!$)1 dup('the place of a is:$)data endscode segmentassume cs:code,ds:datastart:movax,datamovds,axmovdx,0;初始化ds:dxmovah,09h;在屏幕上输出提示int21hmovdx,0;调用21h的oah号功能等待输入字符串movah,0ahint21hmovcx,80;逐个检查字符movsi,0s:moval,ds:siincsicmpal;$*jenonecmpal,ajefindloopsnone:movdl,0ah;换行处理movah,02hint21hleaax,bmovdx,ax;输出提示没有找到movah,09hint21hover:movax,4c00hint21h

温馨提示

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

评论

0/150

提交评论