《微机原理与接口技术》实验指导书_第1页
《微机原理与接口技术》实验指导书_第2页
《微机原理与接口技术》实验指导书_第3页
《微机原理与接口技术》实验指导书_第4页
《微机原理与接口技术》实验指导书_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

1、微机原理与接口技术实验指导书方义秋 编著计算机实验教学中心2目 录实验要求 3第一部分 微机原理及汇编程序设计 4实验一、认识Tddebug集成操作软件4实验二、I/O程序设计 9实验三、分支程序设计11实验四、循环程序设计13实验五、运算类程序设计15实验六、代码转换程序设计19实验七、宏指令应用24实验八、字符串处理26实验九、数据表格处3理28实验十、子程序及软中断程序设计29第二部分 接口部分实验33实验十一、 PC机内部8259中断应用33实验十二、 PCI总线中断应用39实验十三、8254定时/计数器应用45实验十四、8255并行接口应用53实验十五、交通灯控制58附录一 TD-P

2、IT-B 实验系统的硬件环境 604实验要求实验要求预习实验内容预习实验内容1.明确本次实验目的及任务,了解和掌握实验所需的理论知识及相关接口芯片的工作原理。2.通过阅读示例程序,掌握编程方法及相关技巧。3.对每次实验,选择其中一个项题目自己设计编写程序。实验过程实验过程1.带上理论课教材、实验指导书及准备的实验程序。2.若为接口电路,请关闭电源搭接线路,检查无误后,再开电源。3.调试程序,记录结果。4.实验结束后,请关闭电源,将各实验器材归位,清洁自己的桌面。编写实验报告编写实验报告1.实验题目。2.分析设计思想,绘制实验原理图、流程图。3.程序清单及相关注释。4.分析实验结果。5.说明在实

3、验过程中遇到了哪些问题,是如何处理的。6.收获体会,不足之处和今后应注意的问题等。注意事项注意事项1.实验以前,应确保 PCI 总线扩展卡与实验箱间扁平电缆连接的正确性。2.实验前后应仔细检查实验箱,防止导线、元件等物品落入装置内,导致线路短路、元件损坏。3.爱护实验设施,插接、拔取排线时,手握白色插头,不得不得从线中间拉取。4.实验箱电源关闭后,不能立即重新开启。关闭与重新开启之间至少应有 30 秒间隔。5第一部分第一部分 微机原理及汇编程序设计微机原理及汇编程序设计实验一、认识实验一、认识 Tddebug 集成操作软件集成操作软件一一实验目的实验目的1.熟悉汇编程序的开发过程。2.认识 T

4、ddebug 集成操作软件。3.掌握在 Tddebug 集成环境中编辑、编译、连接汇编语言程序方法。4.掌握 INT 21H 软件中断来调用 DOS 内部子程序的方法二二实验设备实验设备PC 微机一台三三汇编语言程序的开发过程汇编语言程序的开发过程汇编语言程序的开发过程如图 1.1 所示,这个过程主要有编辑、编译、链接几个步骤构成。1、源程序的编辑E: EDIT TEST.ASM编辑过程就是将源程序输入内存,生成一个扩展名为 ASM 的文本文件并存入硬盘。2、源程序的编译E:TASM TEST.ASM编译也称为汇编,就是利用汇编器(如 TASM 或 MASM)对源程序进行编译,生成扩展名为 O

5、BJ 的目标文件。在编译过程中,检查语法错误,若有错,则不生成目标代码文件,并给出错误信息。根据错误信息应返回到编辑状态,修改源程序。3、目标程序的链接E: TLINK TEST.OBJ链接过程是利用链接程序(如 TLINK 或 LINK)将用户目标程序和库文件链接、定位,生成扩展名为 EXE 的可执行文件。链接时,如果链接文件找不到所需要的链接信息,则发出错误信息,不生成可执行文件。4、调试可执行程序汇编源程序调用编辑程序edit.exe调用编译程序tasm.exe或masm.exe调用链接程序tlink.exe或link.exe编辑.asm汇编.obj链接编辑编译链接图 1.1 汇编语言程

6、序开发过程6E:TD TEST.EXE如果生成的 EXE 文件运行后,并没有按照设计意图运行,就需要对程序进行调试,找出错误。再对源程序进行修改,即重复进行编辑、编译、链接、调试,直到生成完全正确的可执行文件为止。四四Tddebug 集成操作软件使用说明集成操作软件使用说明1.该软件是集编辑(Edit.exe) 、编译(Tasm.exe) 、连接(Link.exe)和调试(TD.exe)等多个功能于一体,可在 DOS 环境下运行,为用户提供了一个学习微机原理的实验平台。2.启动 Tddebug D:wjyl Tddebug若启动成功,进入主界面。3.Tddebug 的菜单结构主菜单 子菜单 菜

7、单说明Edit 编辑源文件(.asm)Compile Compile 编译源文件(.asm) Link 连接目标文件(.obj) Build All 编译和连接Pmrun 进入保护模式调试状态Rmrun Run 运行实模式程序(.exe) Debug 进入实模式调试状态(.exe)Help 版本信息Quit退出 Tddebug4.菜单选择(1)快捷键选择主菜单:ALT热键(,)(2)按左右键或直接使用快捷键在主菜单之间切换。使用上下键可选择子菜单中的菜单项。5.执行菜单项选中要执行的菜单项,键入 Enter 键,系统弹出对话框,输入需操作的文件名,以Enter 键结尾,取消操作按 Esc 键。

8、6.实模式调试窗口说明(1)键入 Alt+R 选择 Rmrun 主菜单的 Debug 子菜单弹出实模式调试窗口。 此时可能会叠加一个报告无符号表的对话框,按 Esc 键关闭该对话框。(2)该窗口实际是 Turbo Debugger 调试器窗口,简称 TD。其窗口的划分如图 1-1 所示。主菜单条代码显示调试区寄存器显示调试区标志寄存器显示调试区内存数据显示调试区堆栈显示调试区快捷键操作提示区图 1-1 Turbo Debugger 调试窗口划分图(3)主菜单中包含了 File、Edit、View、Run、Breakpoints、Data、Options、Windows和 Help 共 9 个菜

9、单项。可使用热键选择相应的菜单。在调试程序或操作调试器中会使用一些快捷键来实现一些功能,下面将列出常用功能的快捷键及实现功能。快捷键:快捷键:7F1:显示帮助窗口F2:设置/清除断点F4:执行到光标处F5:放大/缩小窗口F7:单步执行F8:单句执行F9:运行程序F10:激活主菜单Ctrl+Break:终止程序执行Alt+X:退出 TDTab:切换焦点区域当焦点区域在寄存器显示区中时:当焦点区域在寄存器显示区中时:Ctrl+R:切换 16 位/32 位通用寄存器并显示Ctrl+I:使光条指示寄存器的内容加 1Ctrl+D:使光条指示寄存器的内容减 1Ctrl+Z:使光条指示寄存器的内容清零Ctr

10、l+C:手动修改光条指示寄存器的内容当焦点区域在数据显示区中时:当焦点区域在数据显示区中时:Ctrl+D:修改数据显示格式Ctrl+G:指定需要显示的内存区域首地址Ctrl+S:查找指定的字节值表Ctrl+C:修改光标当前指示存储单元的内容当焦点区域在代码显示区中时:当焦点区域在代码显示区中时:Ctrl+G:指定需要显示的代码区域首地址Ctrl+S:查找指定的指令数字键/字符:修改光标当前指示指令五实验内容及说明实验内容及说明1.实验内容:数据传送实验1)编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。参见示例出程序。2)修改此程序,采用字符串传送指令完成。2.2

11、.实验中使用 DOS 功能调用(INT 21H):参见教材32 位微型计算机原理与接口技术89 页(1 1)显示字符串)显示字符串入口:AH=09H调用参数:DS:DX=串首地址, $为结束字符。(2 2)返回)返回 DOSDOS 系统系统入口:AH=4CH调用参数:AL=返回码3有关字符串的操作指令参见教材32 位微型计算机原理与接口技术62 页4 实验目的:通过对该程序进行调试,查看程序段、数据段、附加段装入内存后的分配情况。单步执行数据传送指令后,观察各个寄存器及数据区的内容。六六实验步骤实验步骤81.运行 Tddebug 软件,选择 Edit 菜单编写实验程序2.使用 Compile

12、菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文件。3.使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。4.使用 Rmrun 菜单中的 Debug 调试程序,查看程序段、数据段、附加段装入内存后的分配情况。单步执行数据传送指令后,观察各寄存器及数据区的内容。过程如下:1)按 F7 单步执行,在代码区中有一个三角,表示正在执行的指令。每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。2)检查内存数据区的内容,关键是找出用户程序的数据段和附加段:方法 1:在 CPU 窗口按 Tab 键使内存数据显示区成为活动区,按 Ctrl+G 键,

13、输入:“DS 或 ES 寄存器的值:偏移地址” ,即可显示用户指定的数据区方法 2:选择菜单 View| Dump,弹出内存数据显示窗口。3) 查看执行结果:按 Alt+F5,切换到用户窗口。5.更改数据区中的数据,考察、调试程序的正确性。七七参考程序清单参考程序清单;数据传送实验,采用相对寻址方式DDATASEGMENT ;定义源数据段MSR DB HELLO,WORLD!$LEN EQU $- MSRDDATAENDSEXDA SEGMENT ;定义附加数据段MSD DB LEN DUP(?)EXDA ENDSMYSTACK SEGMENT STACK ;定义堆栈段DW 20 DUP(?)

14、MYSTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DDATA,ES:EXDASTART: MOV AX,DDATAMOV DS,AX ;装载数据段寄存器MOV AX,EXDAMOV ES,AX ;装载附加数据段寄存器MOV SI,OFFSET MSRMOV DI,OFFSET MSDMOV CX,LENMOV BX,0NEXT: MOV AL,MSRBX ;开始传输数据MOV ES:MSDBX,ALINCBXLOOP NEXT9PUSH ESPOP DS ;将附加段寄存器指向的段值赋给数据段寄存器MOV DX,OFFSET MSDMOV AH,9

15、 INT 21H ;显示字符串MOV AH,4CH INT 21H ;返回 DOS 状态CODE ENDS END START10实验二、实验二、I/O 程序设程序设计计一一实验目的实验目的1.理解软中断的调用方法及中断过程。2.掌握 INT 21H 软件中断来调用 DOS 系统 I/O 子程序的方法。3.掌握将存储在内存单元中的数据在屏幕上显示的方法。4.掌握从键盘输入信息到内存的方法。二二实验设备实验设备PC 微机一台三三实验预习要求实验预习要求1复习 DOS 功能调用(INT 21H)中用于字符输入(功能号为 01H) 、字符输出(功能号为 02H) 、字符串输入(功能号为 0AH)以及

16、字符串输出(功能号为 09H)的调用方法。参见教材32 位微型计算机原理与接口技术89 页。2阅读示例程序,掌握输入/输出方法。3从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调试。四四实验内容实验内容1 【示例】:将指定数据区中一个字节的数据以十六进制数形式显示在屏幕上。设计思路:首先将该数以十六进制数形式分解,然后将每一位分别转换为 ASCII 码送屏幕显示。其中 0H9H 之间的数加 30H,即可得 0H9H 的 ASCII 码,而 AHFH 的ASCII 码,则需再加 7H,参见表 5-1。参考程序流程如图 2-1 所示。示例程序参见参考程序清单。2编程由键

17、盘输入任意一个字符,将该字符的 ASCII 码值显示在屏幕上。3从键盘输入两个 1 位十进制数,计算二者之和,并将结果显示在屏幕上。4编程由键盘输入任意一位数,将该数以二进制数形式显示在屏幕上,例:5=00000101B五五实验说明实验说明存储在内存单元中的数据要显示在屏幕上,必须首先将一个数据区中的数分解为各位不同进制的数(参见表 5-1) ,然后转换为字符,通过 DOS 功能调用(INT 21H)完成显示。例:1) 显示单个字符显示单个字符MOV AH, 02HMOV DL, 待显示字符的 ASCII 码INT 21H2) 键盘输入并回显键盘输入并回显MOV AH, 01HINT 21H得

18、到按键的 ASCII 码,存放于 AL 中六实验步骤实验步骤111.画出实验流程图。2.运行 Tddebug 软件,选择 Edit 菜单编写实验程序3.使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文件。4.使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。5.使用 Rmrun 菜单中的 Debug 调试程序。单步执行指令,观察各寄存器及数据区的内容。6.更改数据区中的数据,考察程序的正确性。七七参考程序清单及流程参考程序清单及流程;将指定数据区 SD 的数据以十六进制数形式显示在屏幕上DATASEGMENTMESDBShow a a

19、s hex:,0AH,0DH,$SDDBaDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOVDS,AXMOVDX,OFFSET MES;显示提示信息MOVAH,09HINT 21HMOVSI,OFFSET SDMOVAL,DS:SIANDAL,0F0H;取高 4 位 MOV CL,4SHRAL,CLCMPAL,0AH;是否是 A 以上的数JBC2ADDAL,07HC2:ADD AL,30HMOVDL,AL ;显示字符 MOVAH,02HINT21HMOVAL,DS:SIANDAL,0FH;取低 4 位CMPAL,0AHJBC

20、3ADD AL,07HC3:ADD AL,30HMOVDL,AL;显示字符 MOVAH,02HINT21HMOVAH,4CH ;返回 DOS图 2-1 一个字节数以十六进制数形式显示处理流程12INT21HCODEENDSEND START13实验三、分实验三、分支程序设计支程序设计一一实验实验目的目的1.掌握比较指令、条件转移指令的用法2.掌握分支结构程序的组成3.掌握分支程序的设计、调试方法二二实验设备实验设备PC 微机一台三三实验预习要求实验预习要求1复习比较指令、条件转移指令的用法。2阅读示例程序,掌握分支编程方法及相关技巧。3从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编

21、写程序,以便上机调试。四四实验内容实验内容1 【示例】判断 X 的大小,并根据判断结果以不同方式分别显示。2键入一个数,判断数是否在 5 X24 范围内,是输出标志 0,不是输出。3. 编写程序,在屏幕上显示一组菜单,根据键盘输入的菜单编号,提示你选择的菜单名。4从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其他字符,并给出相应的提示。五五实验要求及说明实验要求及说明1判断判断 X 的大小,并根据判断结果以不同方式分别显示的大小,并根据判断结果以不同方式分别显示设 NUMBER 单元的数 X 以及数值 N1,N2 均为单字节无符号数,请判断 X 的大小,并根据判断结果分别显示:N1

22、=X=N2,或 XN2。参见程序清单参见程序清单2键入一个数,判断数是否在键入一个数,判断数是否在 5 X24 范围内,是输出标志范围内,是输出标志 0,不是输出,不是输出3编写程序,在屏幕上显示一组菜单,根据键盘输入的菜单编号,提示你选择的菜单名。编写程序,在屏幕上显示一组菜单,根据键盘输入的菜单编号,提示你选择的菜单名。假设在屏幕上显示的菜单如下:1Open2Save3Copy4Exit(Please choose 1,2,3,OR 5)若输入 1,则显示“I choose Open”后程序结束;若输入 2,则显示“I choose Save”后程序结束;若输入 3,则显示“I choos

23、e Copy”后程序结束;若输入 4,则显示“I choose Exit”后程序结束;若输入其它字符,则显示“You press an error key ”后程序结束;注意可使用宏指令简化程序。4从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其他字符,并给出相从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其他字符,并给出相应的提示。应的提示。14数字 09 的 ASCII 码为 30H39H;大写字母的 ASCII 码为 41H5AH;小写字母的ASCII 码为 61H7AH;六实验步骤实验步骤1 画出实验流程图。2 运行 Tddebug 软件,选择 Edit 菜单编

24、写实验程序3 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文件。4 使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。5 使用 Rmrun 菜单中的 Debug 调试程序。观察构成分支条件的各标志的变化情况及相关寄存器内容。6 更改数据区中的数据,考察程序的正确性。七七参考程序清单参考程序清单;设 NUMBER 单元的数 X 以及数值 N1,N2 均为单字节无符号数,请判断 X 的大小,并根据判断结果分别显示:N1=X=N2,或 XN2。DATA SEGMENT USE16MESG1 DB N1=X=N2 $ MESG2 DB XN

25、2 $ NUMBER DB 66 ;无符号数 XN1 EQU 22N2 EQU 88DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE, DS:DATABEG: MOV AX , DATA MOV DS, AX MOV DX, OFFSET MESG1 CMP NUMBER, N1 JAE NEXT ;X N1 转 MOV DX, OFFSET MESG2 JMP DISPNEXT: CMP NUMBER, N2 JBE DISP ;X N2 转 MOV DX, OFFSET MESG3DISP: MOV AH, 9 INT 21H ;显示结果信息 MOV A

26、H, 4CH INT 21H ;返回 DOSCODE ENDS END BEG15实验四、循环程实验四、循环程序设计序设计一一实验目的实验目的1掌握比较指令、转移指令和循环指令的使用方法2掌握循环结构程序的组成3掌握循环程序的设计、调试方法二二实验设备实验设备PC 微机一台三三实验预习要求实验预习要求1复习比较指令、条件转移指令和循环指令。2阅读示例程序,掌握循环程序的结构、循环控制方法及相关技巧。3从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调试。四四实验内容实验内容1 【示例】求某数据区内负数的个数2试编程统计数据区中正数、零和负数的个数。3. 编程求无符号数

27、字节序列中最大值和最小值。4从键盘输入一字符串,搜索该字符串中是否有字符“A” ,若有请输出其在串中的位置。五五实验说明实验说明1求某数据区内负数的个数为统计数据区内负数的个数,需逐个判别区内的每一个数据,然后将所有数据中凡是符号位为 1 的数据个数累加起来,即得到区内包含负数的个数。参见程序清单.2试编程统计数据区中正数、零和负数的个数。3编程求无符号数字节序列中最大值和最小值实验中可使用 BH 和 BL 作为暂存现行最大值和最小值,且在初始时将 BH 和 BL 初始化为首字节的内容,循环依次比较每个字节的内容,求得最大值(存于 BH 中)和最小值(存于 BL 中) ,送屏幕显示。4 从键盘

28、输入一字符串,搜索该字符串中是否有字符从键盘输入一字符串,搜索该字符串中是否有字符“A” ,若有请输出其在串中的位置。,若有请输出其在串中的位置。六实验步骤实验步骤1.画出实验流程图。2.运行 Tddebug 软件,选择 Edit 菜单编写实验程序3.使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文件。4.使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。5.使用 Rmrun 菜单中的 Debug 调试程序。观察构成分支、循环条件的各标志的变化16情况及相关寄存器内容。6.更改数据区中的数据,考察程序的正确性。七七参考程序清单参考程序

29、清单;确定数据区 NUMB 中负数的个数(存放于 BL 中)DDATASEGMENTNUMBDB12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01HMES DBThe number of negative is:$DDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOVDI,OFFSET NUMBXORBL,BLMOVCX,10A1: MOV AL,DI TEST AL,80HJE A2INCBLA2: INC DILOOP A1 ;统计负数个数MOVDX,OFFSET MESM

30、OVAH,09HINT 21HMOVAL,BL ;显示负数个数,注意与实验二所使用的方法的区别MOV CX,2A3: PUSH CX MOV CL,4 ROL AL,CL POP CX MOV BL,AL AND AL,0FH CMP AL,0AHJB A4ADD AL,07HA4: ADD AL,30HMOV DL,ALMOV AH,02H INT 21H MOV AL,BL LOOP A3MOVAH,4CHINT21H17CODE ENDS END START18实验五、运算实验五、运算类程类程序设计序设计一实验目的实验目的1.掌握运算类指令对各状态标志位的影响及其测试方法2.掌握运用运算

31、类指令编程及调试的方法3.掌握子程序设计及调用方法二二实验设备实验设备PC 机一台三三实验预习要求实验预习要求1复习运算类指令的用法。2复习子程序设计及调用方法。3阅读示例程序,掌握子程序的编程方法及相关技巧。4从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,用子程序处理方式编写程序,以便上机调试。四四实验内容实验内容1 示例:二进制双精度加法运算示例:二进制双精度加法运算2 十进制数的 BCD 码加减法运算3 乘法运算4 除法运算5 编程用减奇数法开平方五五实验要求及说明实验要求及说明80 x86 指令系统提供了实现加、减、乘、除运算的基本指令,可对表 4-1 所示的数据类型进行算术

32、运算。表 4-1 数据类型算术运算表二进制BCD 码数制带符号无符号组合非组合运算符、操作符字节、字、多精度字节(二位数字)字节(一位数字)1.二进制双精度加法运算二进制双精度加法运算计算 XY=Z,并将结果输出到屏幕上。其中 X=001565A0H,Y=0021B79EH,运算的结果 Z=00371D3EH。(1)本实验是双精度(2 个 16 位,即 32 位)运算,利用累加器 AX,先求低 16 位和,并存储于低地址存储单元,后求高 16 位和,再存入高地址存储单元。由于低位和可能向高位有进位,此时 CF=1,因而高位字相加语句需用 ADC 指令,即同时加上 CF 中的 1。参见参考程序清

33、单。(2)画出 X、Y、Z 三个数在内存中的分布示意图。19(3)修改示例程序,直接使用 32 位寄存器和 32 位加法指令完成本实验功能。2.十进制数的十进制数的 BCD 码加减法运算码加减法运算计算 XY=Z,其中,X、Y、Z 为非组合的 BCD 码,X=0400H,Y=0102H,运算结果 Z=0208H。(1)编写两个数值长度不等的编写两个数值长度不等的 BCD 码相加程序。码相加程序。思路:对应位用 ADC 带进位加法求和(考虑 CF 标志) ,再进行 DAA 调整(只对 AL处理。3.乘法运算乘法运算本实验要求实现十进制数乘法,被乘数和乘数均以 BCD 码形式存放在内存中,被乘数为

34、 02345,乘数为 3,运算结果 7035,显示在屏幕上为:00 00 07 00 03 05。(1)调试程序观察加、减、乘、除及相关调整指令,对标志位的影响。4.除法运算除法运算本实验要求在内存中存储 5 个无符号数,将其用 101H 除,在进行 BCD 码转换后,若奇偶位为偶(PF=1) ,则显示“P” ;为负(SF=1) ,则显示“S” ;为零(ZF=1) ,则显示“Z” ;若 PF、SF、ZF 标志皆为 0,则显示“;” 。除法指令 DIV、IDIV 执行后,不影响任何标志位,而 BCD 码调整指令 AAD 会影响PF、SF、ZF 标志。通过本实验考察这些指令对标志的影响情况。5.编

35、程用减奇数法开平方编程用减奇数法开平方80 x86 指令系统中没有开平方指令,因此,开平方运算是通过程序来实现的。用减奇数法可求得近似平方根,获得平方根的整数部分。因为,N 个自然数中奇数之和等于,2N即:,展开:nKNK12) 12(1+3+5=9=231+3+5+7=16=241+3+5+7+9+11+13+15=64=28所以,若要做的运算,就可以从 S 中逐次减去自然数中的奇数S1,3,5,7,一直到被减数为 0 或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数的个数,它就是 S 的近似平方根。(1)本实验要求编程实现计算 0040H 的开平方值,并将运算结果显示在屏幕上。(2

36、)试编程,由键盘输入一个十六进制数,将其转换为十进制数,并进行开平方运算。六实验步骤实验步骤1.画出实验流程图。2.画出内存数据分布示意图3.运行 Tddebug 软件,选择 Edit 菜单编写实验程序4.使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文20件。5.使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。6.使用 Rmrun 菜单中的 Debug 调试程序。单步执行加、减、乘、除及相关调整指令时,观察各标志的变化情况及寄存器、数据区的内容。7.更改数据区中的数据,考察程序的正确性。七七参考程序清单参考程序清单双精度加法运算双

37、精度加法运算;计算 X+Y=Z;X=001565A0H,Y=0021B79EH,运算的结果 Z=00371D3EH。DATA SEGMENTMES DBThe result is:$XLDW 65A0HXHDW 0015HYLDW 0B79EHYHDW 0021HDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES ;显示信息 MOV AH,09H INT 21H MOV AX,XL ;计算结果 ADD AX,YL MOV BX,AX MOV AX,XH ADC AX

38、,YH PUSH BX MOV CX,4 ;显示高位字 MOV DX,AXAGA1: PUSH CX MOV CL,4 ROL DX,CL POP CX MOV AL,DL AND AL,0FH CMP AL,10 JC NEXT1 ADD AL,7NEXT1: ADD AL,30H MOV AH,0EH INT 10H21 LOOP AGA1 POP BX MOV AX,BX MOV CX,4 ;显示低位字 MOV DX,AXAGA2: PUSH CX MOV CL,4 ROL DX,CL POP CX MOV AL,DL AND AL,0FH CMP AL,10 JC NEXT2 ADD

39、AL,7NEXT2: ADD AL,30H MOV AH,0EH INT 10H LOOP AGA2 MOV AH,4CH INT 21HCODE ENDSEND START22实验六、代码转换程序设计实验六、代码转换程序设计一一实验目的实验目的1.了解微机中所使用的各类数制及编码方法。2.掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。3.掌握将存储在内存单元中的数据以十六进制数形式、十进制数形式和二进制数形式显示在屏幕上的方法。二二实验设备实验设备PC 微机一台三三实验预习要求实验预习要求1复习运算类指令的用法。2复习子程序设计及调用方法。3阅读示例程序,掌握子程序的编程

40、方法及相关技巧。4从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,用子程序处理方式编写程序,以便上机调试。四四实验内容实验内容1 【示例】将 5 位十进制数的数字串转换为一个字的二进制数2编写程序将内存中一个字的数转换为十进制数的数字串显示。3编程将十进制的数字串转换为 BCD 码4编程将 BCD 码转换为二进制数5编程将二进制数转换为十进制数显示五实验原理及说明实验原理及说明 计算机输入设备输入的信息一般是由 ASCII 码或 BCD 码表示的数据或字符,CPU 一般均用二进制数进行计算或用其他信息进行处理,处理的结果又必须依照外设的要求变为ASCII 码、或 BCD 码或七段显示码

41、等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。计算机与外设间的数码转换关系如图 6-1 所示,数码对应关系如表 6-1所示。6-1231.将十进制数的数字串转换为二进制数将十进制数的数字串转换为二进制数十进制数可以表示为:iinnnnDDDD101010100011其中代表十进制数 1、2、3、9、0。iD上式可以转换为:012110)10)10)10(10DDDDDDnnnii由上式可归纳出十进制数转换为二进制数的方法:从十进制数的最高位开始做乘nD10 加次位的操作,依次类推,则可求出二进制数结果。本实验要求将缓冲区中的一个 5 位十进制数 00012 的 ASCII 码

42、转换成二进制数,并将转换结果以十六进制数形式 000C 按位显示在屏幕上。转换过程的参考程序清单见后参考程序清单 1,参考流程如图 3-2 所示。修改该示例程序,从键盘任意输入 5 个数,实现转换并显示。2.将内存中一个字的数转换为十进制数的数字串。将内存中一个字的数转换为十进制数的数字串。十六位二进制数(一个字)的值域为 065535,最大可转换为 5 位十进制数。五位十进制数可表示为:01122334410101010DDDDDND因此,将十六位二进制数转换为 5 位 ASCII 码表示的十进制数数字串,即采用除 10 取余方法,分别求,并将它们转换为 ASCII 码。以字符串方式显示在屏

43、幕上。转换部40 DD分的参考流程参见图 6-4。假设缓冲区中存放的数是 000CH 转换成十进制数的数字串后,在屏幕显示“00012” 。3.将十进制数的数字串转换为将十进制数的数字串转换为 BCD 码码(1)本实验要求将一个 5 位十进制数的数字串“54321”的 ASCII 码存放在数据区中,转换为 BCD 码后,将转换结果分别显示在屏幕上,即显示:01,02,03,04,05。若输入的不是十进制数的 ASCII 码,则输出“FF” 。提示:一个字节取其低 4 位即变为 BCD 码。6-124转换部分的实验参考流程见图 6-3。(2)修改程序,实现从键盘输入 5 位十进制数 54321,

44、转换 BCD 码后以输入顺序一致显示,即显示:05 04 03 02 01 4.编程将编程将 BCD 码转换为二进制数码转换为二进制数本实验要求将 4 个二位十进制的 BCD 码存放在某一段内存单元中,转换出的二进制码存入其后的存储单元中,转换结果以十六进制方式送屏幕显示。转换部分的实验流程参见图 6-5。假设 4 个十进制数是:17,34,51,68用 BCD 码表示为:01H,07H,03H,04H,05H,01H,06H,08H显示为:0011,0022,0033,0044六实验步骤实验步骤1.画出实验流程图。2.运行 Tddebug 软件,选择 Edit 菜单编写实验程序3.使用 Co

45、mpile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文件。4.使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。5.使用 Rmrun 菜单中的 Debug 调试程序。单步执行指令,观察各寄存器及数据区的内容。6.更改数据区中的数据,考察程序的正确性。图 6-2 将 5 位十进制数的数字串转换为二进制数参考流程图 6-3 将十进制数的数字串转换为 BCD 码参考流程25七七参考程序清单参考程序清单将十进制数的数字串转换为数将十进制数的数字串转换为数DDATASEGMENTMES DBThe ascii code of decimal code are:

46、$BUF DB30H,30H,30H,31H,32H ;十进制 00012 的 ASCII 码DB10H DUP(0)DDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART:MOV AX,DDATA MOVDS,AX MOV SI,OFFSET BUF MOVBL,0AH ;送被乘数 MOV CX,0004H ;送转换位数 MOV AH,00H MOV AL,SI ;取第一位 ASCII 码 SUB AL,30HA1: INC SI IMUL BL ;乘 10 ADD AL,SI SUB AL,30H图 6-4 将内存中一个字的数转换为十进制数的数字

47、串参考流程图 6-5 将 BCD 码转换为二进制数参考流程26 LOOP A1 MOV BX,AX MOVDX,OFFSET MES ;显示提示信息 MOVAH,09H INT21H MOV AX,BX ;显示结果 MOV CX,4A3: PUSH CX MOV CL,4 ROL AX,CL POP CX MOV BX,AX AND AL,0FH CMP AL,0AH JB A2 ADD AL,07HA2: ADD AL,30HMOV DL,ALMOV AH,02HINT 21H MOV AX,BX LOOP A3 MOV AH,4CHINT 21HCODEENDSEND START27实验七

48、、宏指令应用实验七、宏指令应用一一实验目的实验目的1熟悉宏指令、宏定义、宏调用以及宏展开的概念,掌握宏指令的定义与调用方法。2掌握子程序的定义、调用以及调用程序与子程序之间参数的传递方法。3了解宏指令与子程序的异同以及各自的使用场合。二二实验设备实验设备PC 微机一台三三实验预习要求实验预习要求1复习宏指令的定义与调用方法。2复习子程序的定义与调用方法。2阅读示例程序,掌握编程方法及相关技巧。3从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调试。四四实验内容实验内容1 【示例】利用宏指令分组显示变量中多位二进制数。2从键盘输入一个 5 位的十进制数,定义一个带参数的

49、宏,实现以二进制、十进制、十六进制、八进制数的形式输出。五五实验要求及说明实验要求及说明1 【示例示例】利用宏指令分组显示变量中多位二进制数。利用宏指令分组显示变量中多位二进制数。定义 CRLF 宏指令实现回车换行功能;定义 DISP 宏指令实现分组(4 位一组)显示变量 VAR 中 NN 位二进制数。参见程序清单。2从键盘输入一个从键盘输入一个 5 位的十进制数,定义一个带参数的宏,实现以二进制、十进制、位的十进制数,定义一个带参数的宏,实现以二进制、十进制、16进制、进制、8 进制数的形式输出。进制数的形式输出。六实验步骤实验步骤1.画出实验流程图。2.运行 Tddebug 软件,选择 E

50、dit 菜单编写实验程序3.使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文件。4.使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。5.使用 Rmrun 菜单中的 Debug 调试程序。观察宏调用以及宏展开情况。七七参考程序清单参考程序清单;定义 CRLF 宏指令实现回车换行功能;;定义 DISP 宏指令实现分组(4 位一组)显示变量 VAR 中 NN 位二进制数。CRLF MACRO28 MOV AH, 0EH MOV AL, 0DH INT 10H MOV AL, 0AH INT 10H ENDMDISP MACRO VAR,

51、NN LOCAL LAST1, LAST2 MOV CH, NN/4LAST1: MOV CL, 4LAST2: MOV AL, 0 ROL VAR, 1 ADC AL, 0 MOV AH, 0EH INT 10H DEC CL JNZ LAST2 MOV AL, INT 10H DEC CH JNZ LAST1 CRLF ENDM CODE SEGMENT ASSUME CS:CODENUM DB 88HBEG: MOV BX, 1234H DISP BH, 8 ;显示 BH 中的 8 位数 DISP BX, 16 ;显示 BX 中的 16 位数 DISP NUM, 8 ;显示 NUM 单元

52、中的 8 位数 MOV AH, 4CH INT 21HCODE ENDS END BEG;定义 CRLF 宏指令实现回车换行功能;定义 DISP 宏指令实现分组(4 位一组)显示变量 VAR 中 NN 位二进制数。CRLF MACRO MOV AH, 0EH MOV AL, 0DH INT 10H MOV AL, 0AH INT 10H ENDMDISP MACRO VAR, NN LOCAL LAST1, LAST229 MOV CH, NN/4LAST1: MOV CL, 4LAST2: MOV AL, 0 ROL VAR, 1 ADC AL, 0 MOV AH, 0EH INT 10H

53、DEC CL JNZ LAST2 MOV AL, INT 10H DEC CH JNZ LAST1 CRLF ENDMCODE SEGMENT ASSUME CS:CODENUM DB 88HBEG: MOV EBX, 12345678H DISP BH, 8 ;显示 BH 中的 8 位数 DISP BX, 16 ;显示 BX 中的 16 位数 DISP EBX, 32 ;显示 EBX 中的 32 位数 DISP NUM, 8 ;显示 NUM 单元中的 8 位数 MOV AH, 4CH INT 21HCODE ENDS END BEG30实验八、字符串处理实验八、字符串处理一一实验目的实验目的

54、1掌握字符串操作指令。2掌握实现字符串的搜索、排序等操作。二二实验设备实验设备PC 微机一台三三实验预习要求实验预习要求1复习字符串操作指令。2阅读示例程序,掌握编程方法及相关技巧。3从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调试。四四实验内容实验内容1 【示例】 为标准 ASCII 设置校验码。2从源串字符中搜索一个字串。3从键盘输入一系列字符串,对他们按从小到大的顺序排序输出在屏幕上。4输入一条英语句子,将其规范化:即将每个单词的第一个字符变为大写,其余为小写,并将规范化后的句子显示在屏幕上,同时统计出该句中单词个数,显示:Number=?。五五实验要求及说

55、明实验要求及说明1 【示例示例】为标准为标准 ASCII 设置校验码设置校验码标准 ASCII 码的最高位(D7 位)为 0。微机系统与 I/O 设备之间在字符传送过程中,为了使接收方能够判断出接收自负的正确性,最简易的方法是定义标准 ASCII 码的最高位为奇偶校验位。包括校验位在内一个字节中“1”的个数为奇数个,则称为奇校验 ASCII码,反之,一个字节中“1”的个数为偶数个则称为偶校验 ASCII 码。校验位的值由发送方设置,接收方负责校验,如果双方约定是偶校验传送,而接收方收到的一个字符编码中,有奇数个“1” ,那么这个字符肯定是错误的。本示例程序要求把 STRING 单元中的一串标准

56、 ASCII 码转换成奇校验 ASCII 码,存入BUF 单元开始的缓冲区。技巧:通过 AND AL,AL 指令对 P 标志设置,判断 P 标志,决定是否设置校验位D7,由指令 OR AL,80H 完成。参见程序清单。2从源串字符中搜索一个子串。从源串字符中搜索一个子串。假设从 STRING 单元开始有一串自负,程序执行开始采用人机对话方式,从键盘输入一个任意长度的子串,清查找源串中是否蕴含着键入的子串,并给出结果显示。思路:键盘输入子串:用 INT 21H 的 0AH 功能,将子串存入内存。搜索次数=源串长子串长1字符串的比较:REPE CMPSB ,再判断 Z 标确定是否找到。六六参考程序

57、清单参考程序清单31;把 STRING 单元中的一串标准 ASCII 码转换成奇校验 ASCII 码,存入 BUF 单元开始的缓冲区。采用附加段与数据段“重叠”编程风格。DATA SEGMENT STRING DB THE QUICK BROWN FOX JUMPS OVER LAZY DOGCOUNT EQU $-STRING ; 统计串长度BUF DB COUNT DUP(?) ; 预留等长的缓冲区DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA,ES:DATABEG: MOV AX,DATA MOV DS,AX ;DS 初始化 MOV

58、ES,AX ;ES 初始化,使DS=ES=DATA MOV CX,COUNT MOV SI,OFFSET STRING ;源串首址SI MOV DI,OFFSET BUF ;目标区地址DI CLDLOAD: LODSB ;DS:SIAL, SI+1SI AND AL,AL JNP STORE ;有奇数个“1”转 OR AL,80H ;否则置校验为位 1STORE: STOSB ;ALES:DI, DI+1DI LOOP LOAD MOV AH,4CH INT 21HCODE ENDS END BEG32实验九、数据表格处理实验九、数据表格处理一一实验目的实验目的1掌进一步掌握分支、循环、子程序

59、调用等基本的程序结构。2掌握实现数据查找、插入、删除、排序等操作。二二实验设备实验设备PC 微机一台三三实验预习要求实验预习要求从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调试。四四实验内容实验内容假设内存中从 BUF 单元开始存放了 10 个同学的成绩,要求完成:1统计及格学生的人数,不及格学生人数,以及平均成绩。2找出最高成绩和最低成绩。3对学生成绩进行从大到小排序。4删除指定学生的成绩。5在指定位置上插入一个同学的成绩。33实验十、子程序及实验十、子程序及软中断程序设计软中断程序设计一一实验目的实验目的1.掌握子程序的定义和调用方法2.掌握系统功能调用程序(

60、软中断程序)的使用和编写方法3.了解子程序与软中断之间的差异。4.认识和理解中断特性。二二实验设备实验设备PC 微机一台三三实验预习要求实验预习要求1复习子程序的定义与调用方法。2复习中断的概念,了解 PC 机系统中断向量表的占用情况(见表 10-1) 。3复习子程序的调用过程与软中断调用过程之间异同。4阅读示例程序,掌握编写软中断程序的方法及相关技巧。5从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调试。四四实验内容实验内容从 PC 机系统中断向量表的占用情况可见,42H4FH 是系统未使用的中断向量,我们可利用它们开发用户自己软中断程序。1 【示例】实验要求利用

温馨提示

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

最新文档

评论

0/150

提交评论