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

下载本文档

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

文档简介

实验一、认识Tddebug集成操作软件2实验二、I/O程序设计6实验三、代码转换程序设计10实验四、循环程序设计实验报告13 实验一、认识Tddebug集成操作软件 实验题目:认识Tddebug集成操作软件实验目的:1. 熟悉汇编程序的开发过程。2. 认识Tddebug集成操作软件。3. 掌握在Tddebug集成环境中编辑、编译、连接汇编语言程序方法。4. 掌握INT 21H软件中断来调用DOS内部子程序的方法实验要求:PC微机一台实验主要步骤:1. 运行Tddebug软件,选择Edit菜单编写实验程序2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。3. 使用Rmrun菜单中的Run运行程序,观察运行结果。4. 使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。单步执行数据传送指令后,观察各寄存器及数据区的内容。过程如下:5. 按F7单步执行,在代码区中有一个三角,表示正在执行的指令。每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。6. 检查内存数据区的内容,关键是找出用户程序的数据段和附加段:7. 方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区8. 方法2:选择菜单View| Dump,弹出内存数据显示窗口。9. 3) 查看执行结果:按Alt+F5,切换到用户窗口。10. 更改数据区中的数据,考察、调试程序的正确性。程序清单: DDATA SEGMENT MSR DB HELLO,WORLD!$ LEN EQU $- MSR DDATA ENDS EXDA SEGMENT MSD DB LEN DUP(?) EXDA ENDS MYSTACK SEGMENT STACK DW 20 DUP(?) MYSTACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DDATA,ES:EXDA START: MOV AX,DDATA MOV DS,AX MOV AX,EXDA MOV ES,AX MOV SI,OFFSET MSR MOV DI,OFFSET MSD MOV CX,LEN MOV BX,0 NEXT: MOV AL,MSRBX ;开始传输数据 MOV ES:MSDBX,AL INC BX LOOP NEXT PUSH ES POP DS MOV DX,OFFSET MSD MOV AH,9 INT 21H MOV AX,4C00H INT 21H CODE ENDS END START实验结果:1、 编译结果:2、 单步执行结果: File Edit View Run Breakpoints Data Options Window Help READYModule: noname File: d:456789noname.asm241 CPU P?ntium Prods:0003 = 4C3 #noname#next ax 144C c=0 cs:00168A870000 NEXT: MOV AL,MSRBX bx 0003 z=0 cs:001A 2688870000 MOV ES:MSDBX,AL cx 000A s=0 cs:001F 43 INC BX dx 0000 o=0 cs:0020 E2F4 LOOP NEXT si 0000 p=1 cs:0022 06 PUSH ES di 0000 a=0 cs:0023 1F POP DS bp 0000 i=1 cs:0024 BA0000 MOV DX,OFFSET MSD sp 0028 d=0 cs:0027 B409 MOV AH,9 ds 1418 cs:0029 CD21 INT 21H es 1419 cs:002B B8004C MOV AX,4C00H ss 141A cs:002E CD21 INT 21H cs 141D cs:0030 FB sti ip 0016 1408:0000 CD 20 FB 9F 00 9A F0 FE 1408:0008 1D F0 32 0B D2 10 0F 07 2 1408:0010 28 0E 56 01 16 04 0B 0E (V ss:002A 0000 1408:0018 01 01 01 00 02 FF FF FF ss:00280000 2 Alt: F2-Bkpt at F3-Close F4-Back F5-User F6-Undo F7-Instr F8-Rtn F9-To F10-SMenu 实验二、I/O程序设计 实验题目:I/O程序设计实验目的:1. 理解软中断的调用方法及中断过程。2. 掌握INT 21H软件中断来调用DOS系统I/O子程序的方法。3. 掌握将存储在内存单元中的数据在屏幕上显示的方法。4. 掌握从键盘输入信息到内存的方法。实验要求:PC微机一台1. 复习DOS功能调用(INT 21H)中用于字符输入(功能号为01H)、字符输出(功能号为02H)、字符串输入(功能号为0AH)以及字符串输出(功能号为09H)的调用方法。参见教材32位微型计算机原理与接口技术89页。2. 阅读示例程序,掌握输入/输出方法。3. 从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调试。4. 编程由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。实验主要步骤:1. 画出实验流程图。2. 运行Tddebug软件,选择Edit菜单编写实验程序3. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。4. 使用Rmrun菜单中的Run运行程序,观察运行结果。5. 使用Rmrun菜单中的Debug调试程序。单步执行指令,观察各寄存器及数据区的内容。6. 更改数据区中的数据,考察程序的正确性。程序清单:;编程由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。 DATA SEGMENT MES DB please input your letter:,0AH,0DH,$ SD DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES MOV AH,09H INT 21H MOV AH,01H INT 21H MOV BL,AL AND AL,0F0H MOV CL,4 SHR AL,CL C2: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AL,BL AND AL,0FH C3: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START实验结果:1、 示例结果:2、程序结果:实验三、代码转换程序设计实验题目:代码转换程序设计实验目的:1. 掌握运算类指令对各状态标志位的影响及其测试方法2. 掌握运用运算类指令编程及调试的方法3. 掌握子程序设计及调用方法实验要求:PC微机一台1. 复习运算类指令的用法。2. 复习子程序设计及调用方法。3. 阅读示例程序,掌握子程序的编程方法及相关技巧。4. 从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,用子程序处理方式编写程序,以便上机调试。实验内容:1 【示例】将5位十进制数的数字串转换为一个字的二进制数2 编写程序将内存中一个字的数转换为十进制数的数字串显示。3 将内存中一个字的数转换为十进制数的数字串。十六位二进制数(一个字)的值域为065535,最大可转换为5位十进制数。五位十进制数可表示为: 因此,将十六位二进制数转换为5位ASCII码表示的十进制数数字串,即采用除10取余方法,分别求,并将它们转换为ASCII码。以字符串方式显示在屏幕上。实验主要步骤:1. 画出实验流程图。2. 运行Tddebug软件,选择Edit菜单编写实验程序3. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。4. 使用Rmrun菜单中的Run运行程序,观察运行结果。5. 使用Rmrun菜单中的Debug调试程序。单步执行指令,观察各寄存器及数据区的内容。6. 更改数据区中的数据,考察程序的正确性。程序清单:;将内存中一个字的数转换为十进制数的数字串 DDATA SEGMENT MES DB the decimal decimal code of 000CH are:$ BUF DW 000CH DB 5 DUP(0) DDATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX MOV SI,OFFSET BUF MOV AX,DS:SI MOV BL,0AH ADD SI,7 MOV CX,5 A: DEC SI DIV BL ADD AH,30H MOV DS:SI,AH MOV AH,0 CMP AL,0 LOOPNZ A MOV DX,OFFSET MES MOV AH,09H INT 21H MOV CX,5 MOV SI,OFFSET BUF ADD SI,2 B: MOV DL,DS:SI MOV AH,02H INT 21H INC SI LOOP B MOV AH,4CH INT 21H LOOP B CODE ENDS END START实验结果:1、 示例结果:2、 程序结果:实验四、循环程序设计实验报告实验题目:循环程序设计实验目的:4. 掌握运算类指令对各状态标志位的影响及其测试方法5. 掌握运用运算类指令编程及调试的方法6. 掌握子程序设计及调用方法实验要求:PC微机一台1复习比较指令、条件转移指令和循环指令。2阅读示例程序,掌握循环程序的结构、循环控制方法及相关技巧。3从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调试。实验内容:1 【示例】求某数据区内负数的个数2 从键盘输入一字符串,搜索该字符串中是否有字符“A”,若有请输出其在串中的位置实验主要步骤:1. 画出实验流程图。2. 运行Tddebug软件,选择Edit菜单编写实验程序3. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。4. 使用Rmrun菜单中的Run运行程序,观察运行结果。5. 使用Rmrun菜单中的Debug调试程序。观察构成分支、循环条件的各标志的变化情况及相关寄存器内容。6. 更改数据区中的数据,考察程序的正确性。程序清单:;从键盘输入一字符串,搜索该字符串中是否有字符“A”,若有请输出其在串中的位置 DATA SEGMENT A DB 1 DUP(please input your string:$) B DB 1 DUP(sorry,there is not A!$) C DB 1 DUP(the place of A is:$) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,0 ;初始化ds:dx MOV AH,09H ;在屏幕上输出提示 INT 21H MOV DX,0 ;调用21h的0ah号功能等待输入字符串 MOV AH,0AH INT 21H MOV CX,80 ;逐个检查字符 MOV SI,0 S: MOV AL,DS:SI INC SI CMP AL,$ JE NONE CMP AL,A JE FIND LOOP S NONE: MOV DL,0AH ;换行处理 MOV AH,02H INT 21H LEA AX,B MOV DX,AX ;输出提示没有找到 MOV AH,09H INT 21H OVER: MOV AX,4C00H INT 21H FIND: MOV DL,0AH ;换行处理 MOV AH,02H INT

温馨提示

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

评论

0/150

提交评论