实验指导书-微机原理与接口技术.doc

上传人:hw****26 文档编号:4206332 上传时间:2019-10-04 格式:DOC 页数:63 大小:1.50MB
下载 相关 举报
实验指导书-微机原理与接口技术.doc_第1页
第1页 / 共63页
实验指导书-微机原理与接口技术.doc_第2页
第2页 / 共63页
实验指导书-微机原理与接口技术.doc_第3页
第3页 / 共63页
实验指导书-微机原理与接口技术.doc_第4页
第4页 / 共63页
实验指导书-微机原理与接口技术.doc_第5页
第5页 / 共63页
点击查看更多>>
资源描述

1、huangying 微机原理与接口技术 实验指导书 方义秋 编著 计算机综合实验中心 2005 年 8 月 2 目 录 实 验要求 3 第一部分 微机原理及汇 编程序设计 4 实验一、认识 Tddebug 集成操作软 件 4 实验二、 I/O 程 序 设计 9 实验三、分支 程 序 设 计 11 实验四、循环程序 设 计 13 实验五、运算类 程 序设 计 15 实验六、代码转换程序设 计 19 实验七、宏指 令 应 用 24 实验八、字 符 串处 理 26 实验九、数据表格 处 3 理 28 实验十、子程序及软中断程序 设 计 29 第二部分 接口部分实 验33 实验十一、 PC 机 内部

2、8259 中断应 用 33 实验十二、 PCI 总线中断应 用 39 实验十三、 8254 定时 /计 数器 应 用 45 实验十四、 8255 并行 接 口应 用 53 实验十五、交通 灯 控 制 58 附录一 TD-PIT-B 实验系统的硬件环境 60 4 实验要求 预习实验内容 1. 明确本次实验目的及任务,了解和掌握实验所需的理论知识及相关接口芯片的工 作原理。 2. 通过阅读示例程序,掌握编程方法及相关技巧。 3. 对每次实验,选择其中一个项题目自己设计编写程序。 实验过程 1. 带上理论课教材、实验指导书及准备的实验程序。 2. 若为接口电路,请关闭电源搭接线路,检查无误后,再开电

3、源。 3. 调试程序,记录结果。 4. 实验结束后,请关闭电源,将各实验器材归位,清洁自己的桌面。 编写实验报告 1. 实验题目。 2. 分析设计思想,绘制实验原理图、流程图。 3. 程序清单及相关注释。 4. 分析实验结果。 5. 说明在实验过程中遇到了哪些问题,是如何处理的。 6. 收获体会,不足之处和今后应注意的问题等。 注意事项 1. 实验以前,应确保 PCI 总线扩展卡与实验箱间扁平电缆连接的正确性。 2. 实验前后应仔细检查实验箱,防止导线、元件等物品落入装置内,导致线路短路、元 件损坏。 3. 爱护实验设施,插接、拔取排线时,手握白色插头,不得从线中间拉取。 4. 实验箱电源关闭

4、后,不能立即重新开启。关闭与重新开启之间至少应有 30 秒间隔。 5 第一部分 微机原理及汇编程序设计 实验一、认识 Tddebug 集成操作软件 一 实验目的 1. 熟悉汇编程序的开发过程。 2. 认识 Tddebug 集成操作软件。 3. 掌握在 Tddebug 集成环境中编辑、编译、连接汇编语言程序方法。 4. 掌握 INT 21H 软件中断来调用 DOS 内部子程序的方法 二 实验设备 PC 微机一台 三 汇编语言程序的开发过程 汇编语言程序的开发过程如图 1.1 所示,这个过程主要有编辑、编译、链接几个步骤 构成。 1、源程序的编辑 E: EDIT TEST.ASM 编辑过程就是将源

5、程序输入内存,生成一个扩展名为 ASM 的文本文件并存入硬盘。 2、源程序的编译 E:TASM TEST.ASM 编译也称为汇编,就是利用汇编器(如 TASM 或 MASM)对源程序进行编译,生成扩 展名为 OBJ 的目标文件。在编译过程中,检查语法错误,若有错,则不生成目标代码文件, 并给出错误信息。根据错误信息应返回到编辑状态,修改源程序。 3、目标程序的链接 E: TLINK TEST.OBJ 链接过程是利用链接程序(如 TLINK 或 LINK)将用户目标程序和库文件链接、定位, 生成扩展名为 EXE 的可执行文件。链接时,如果链接文件找不到所需要的链接信息,则发 出错误信息,不生成可

6、执行文件。 4、调试可执行程序 汇编 源程序 调用编辑程序 edit.exe 调用编译程序 tasm.exe 或 masm.exe 调用链接程序 tlink.exe 或 link.exe 编辑 .asm 汇编 .obj 链接 .exe .com 编辑 编译 链接 图 1.1 汇编语言程序开发过程 6 E:TD TEST.EXE 如果生成的 EXE 文件运行后,并没有按照设计意图运行,就需要对程序进行调试,找 出错误。再对源程序进行修改,即重复进行编辑、编译、链接、调试,直到生成完全正确 的可执行文件为止。 四 Tddebug 集成操作软件使用说明 1. 该软件是集编辑(Edit.exe) 、编

7、译(Tasm.exe) 、连接( Link.exe)和调试 (TD.exe)等多个功能于一体,可在 DOS 环境下运行,为用户提供了一个学习微 机原理的实验平台。 2. 启动 Tddebug D:wjyl Tddebug 若启动成功,进入主界面。 3. Tddebug 的菜单结构 主菜单 子菜单 菜单说明 Edit 编辑源文件(.asm) Compile Compile 编译源文件(.asm) Link 连接目标文件(.obj) Build All 编译和连接 Pmrun 进入保护模式调试状态 Rmrun Run 运行实模式程序( .exe) Debug 进入实模式调试状态( .exe) He

8、lp 版本信息 Quit 退出 Tddebug 4. 菜单选择 (1)快捷键选择主菜单:ALT热键(,) (2)按左右键或直接使用快捷键在主菜单之间切换。使用上下键可选择子菜单中的菜 单项。 5. 执行菜单项 选中要执行的菜单项,键入 Enter 键,系统弹出对话框,输入需操作的文件名,以 Enter 键结尾,取消操作按 Esc 键。 6. 实模式调试窗口说明 (1)键入 Alt+R 选择 Rmrun 主菜单的 Debug 子菜单弹出实模式调试窗口。 此时可能 会叠加一个报告无符号表的对话框,按 Esc 键关闭该对话框。 (2)该窗口实际是 Turbo Debugger 调试器窗口,简称 TD

9、。其窗口的划分如图 1-1 所 示。 主菜单条 代码显示调试区 寄存器显示调试区 标志寄存器显示调试区 内存数据显示调试区 堆栈显示调试区 快捷键操作提示区 图 1-1 Turbo Debugger 调试窗口划分图 (3)主菜单中包含了 File、 Edit、V iew、R un、Breakpoints、Data 、Options、Windows 和 Help 共 9 个菜单项。可使用热键选择相应的菜单。在调试程序或操作调试器中会使用一 些快捷键来实现一些功能,下面将列出常用功能的快捷键及实现功能。 快捷键: 7 F1:显示帮助窗口 F2:设置/清除断点 F4:执行到光标处 F5:放大/缩小窗

10、口 F7:单步执行 F8:单句执行 F9:运行程序 F10:激活主菜单 Ctrl+Break:终止程序执行 Alt+X:退出 TD Tab:切换焦点区域 当焦点区域在寄存器显示区中时: Ctrl+R:切换 16 位/32 位通用寄存器并显示 Ctrl+I:使光条指示寄存器的内容加 1 Ctrl+D:使光条指示寄存器的内容减 1 Ctrl+Z:使光条指示寄存器的内容清零 Ctrl+C:手动修改光条指示寄存器的内容 当焦点区域在数据显示区中时: Ctrl+D:修改数据显示格式 Ctrl+G:指定需要显示的内存区域首地址 Ctrl+S:查找指定的字节值表 Ctrl+C:修改光标当前指示存储单元的内容

11、 当焦点区域在代码显示区中时: Ctrl+G:指定需要显示的代码区域首地址 Ctrl+S:查找指定的指令 数字键/字符:修改光标当前指示指令 五 实验内容及说明 1. 实验内容:数据传送实验 1) 编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符 串到屏幕上。参见示例出程序。 2) 修改此程序,采用字符串传送指令完成。 2. 实验中使用 DOS 功能调用(INT 21H): 参见教材32 位微型计算机原理与接口技术89 页 (1)显示字符串 入口:AH=09H 调用参数:DS:DX=串首地址, $为结束字符。 (2)返回 DOS 系统 入口:AH=4CH 调用参数:AL=返回

12、码 3有关字符串的操作指令 参见教材32 位微型计算机原理与接口技术62 页 4 实验目的:通过对该程序进行调试,查看程序段、数据段、附加段装入内存后的 分配情况。单步执行数据传送指令后,观察各个寄存器及数据区的内容。 六 实验步骤 8 1. 运行 Tddebug 软件,选择 Edit 菜单编写实验程序 2. 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文 件。 3. 使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。 4. 使用 Rmrun 菜单中的 Debug 调试程序,查看程序段、数据段、附加段装入内存后 的分配情况。单步执行

13、数据传送指令后,观察各寄存器及数据区的内容。过程如 下: 1) 按 F7 单步执行,在代码区中有一个三角,表示正在执行的指令。每一条指令 的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。 2) 检查内存数据区的内容,关键是找出用户程序的数据段和附加段: 方法 1:在 CPU 窗口按 Tab 键使内存数据显示区成为活动区,按 Ctrl+G 键, 输入:“DS 或 ES 寄存器的值:偏移地址” ,即可显示用户指定的数据区 方法 2:选择菜单 View| Dump,弹出内存数据显示窗口。 3) 查看执行结果:按 Alt+F5,切换到用户窗口。 5. 更改数据区中的数据,考察、调试程序

14、的正确性。 七 参考程序清单 ;数据传送实验,采用相对寻址方式 DDATA SEGMENT ;定义源数据段 MSRDB “HELLO,WORLD!$“ LENEQU $- MSR DDATA ENDS EXDA SEGMENT ;定义附加数据段 MSDDB 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

15、 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 9 PUSH ES POP DS ;将附加段寄存器指向的段值赋给数据段寄存器 MOV DX,OFFSET MSD MOV AH,9 INT 21H ;显示字符串 MOV AX,4C00H INT 21H ;返回 DOS 状态 CODE ENDS END START 10 实验二、I/O 程序设计 一 实验

16、目的 1. 理解软中断的调用方法及中断过程。 2. 掌握 INT 21H 软件中断来调用 DOS 系统 I/O 子程序的方法。 3. 掌握将存储在内存单元中的数据在屏幕上显示的方法。 4. 掌握从键盘输入信息到内存的方法。 二 实验设备 PC 微机一台 三 实验预习要求 1复习 DOS 功能调用( INT 21H)中用于字符输入(功能号为 01H) 、字符输出(功能号 为 02H) 、字符串输入(功能号为 0AH)以及字符串输出(功能号为 09H)的调用方法。 参见教材32 位微型计算机原理与接口技术89 页。 2阅读示例程序,掌握输入/输出方法。 3从实验内容中任选一道题目,仔细阅读相关的实

17、验要求及说明,编写程序,以便上机调 试。 四 实验内容 1 【示例】:将指定数据区中一个字节的数据以十六进制数形式显示在屏幕上。 设计思路:首先将该数以十六进制数形式分解,然后将每一位分别转换为 ASCII 码送 屏幕显示。其中 0H9H 之间的数加 30H,即可得 0H9H 的 ASCII 码,而 AHFH 的 ASCII 码,则需再加 7H,参见表 5-1。参考程序流程如图 2-1 所示。示例程序参见参考程 序清单。 2编程由键盘输入任意一个字符,将该字符的 ASCII 码值显示在屏幕上。 3从键盘输入两个 1 位十进制数,计算二者之和,并将结果显示在屏幕上。 4编程由键盘输入任意一位数,

18、将该数以二进制数形式显示在屏幕上,例:5=00000101B 五 实验说明 存储在内存单元中的数据要显示在屏幕上,必须首先将一个数据区中的数分解为各位 不同进制的数(参见表 5-1) ,然后转换为字符,通过 DOS 功能调用(INT 21H)完成显示。 例: 1) 显示单个字符 MOV AH, 02H MOV DL, 待显示字符的 ASCII 码 INT 21H 2) 键盘输入并回显 MOV AH, 01H INT 21H 得到按键的 ASCII 码,存放于 AL 中 六 实验步骤 11 1. 画出实验流程图。 2. 运行 Tddebug 软件,选择 Edit 菜单编写实验程序 3. 使用 C

19、ompile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文 件。 4. 使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。 5. 使用 Rmrun 菜单中的 Debug 调试程序。单步执行指令,观察各寄存器及数据区的 内容。 6. 更改数据区中的数据,考察程序的正确性。 七 参考程序清单及流程 ;将指定数据区 SD 的数据以十六进制数形式显示在屏幕上 DATA SEGMENT USE16 MES DB Show a as hex:,0AH,0DH,$ SD DB a DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE

20、,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES;显示提示信息 MOV AH,09H INT 21H MOV SI,OFFSET SD MOV AL,DS:SI AND AL,0F0H ;取高 4 位 SHR AL,4 CMP AL,0AH ;是否是 A 以上的数 JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;显示字符 MOV AH,02H INT 21H MOV AL,DS:SI AND AL,0FH ;取低 4 位 CMP AL,0AH JB C3 ADD AL,07H C3: ADD A

21、L,30H MOV DL,AL ;显示字符 MOV AH,02H INT 21H MOV AX,4C00H ;返回 DOS INT 21H 图 2-1 一个字节数以十 六进制数形式显示处理流 程 12 CODE ENDS END START 13 实验三、分支程序设计 一 实验目的 1. 掌握比较指令、条件转移指令的用法 2. 掌握分支结构程序的组成 3. 掌握分支程序的设计、调试方法 二 实验设备 PC 微机一台 三 实验预习要求 1复习比较指令、条件转移指令的用法。 2阅读示例程序,掌握分支编程方法及相关技巧。 3从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调

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

23、在 5 X24 范围内,是输出标志 0,不是输出 3编写程序,在屏幕上显示一组菜单,根据键盘输入的菜单编号,提示你选择的菜单名。 假设在屏幕上显示的菜单如下: 1Open 2Save 3Copy 4Exit (Please choose 1,2,3,OR 5) 若输入 1,则显示“I choose Open”后程序结束;若输入 2,则显示“I choose Save”后程序结束;若输入 3,则显示“I choose Copy”后程序结束;若输入 4,则显示 “I choose Exit”后程序结束;若输入其它字符,则显示“You press an error key ”后程序 结束; 注意可使

24、用宏指令简化程序。 4从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其他字符,并给出相 应的提示。 14 数字 09 的 ASCII 码为 30H39H;大写字母的 ASCII 码为 41H5AH;小写字母的 ASCII 码为 61H7AH; 六 实验步骤 1 画出实验流程图。 2 运行 Tddebug 软件,选择 Edit 菜单编写实验程序 3 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文 件。 4 使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。 5 使用 Rmrun 菜单中的 Debug 调试程序。观察构成分支

25、条件的各标志的变化情况及 相关寄存器内容。 6 更改数据区中的数据,考察程序的正确性。 七 参考程序清单 ;设 NUMBER 单元的数 X 以及数值 N1,N2 均为单字节无符号数,请判断 X 的大小,并根 据判断结果分别显示:N1=X=N2,或 XN2。 DATA SEGMENT USE16 MESG1 DB N1=X=N2 $ MESG2 DB XN2 $ NUMBER DB 66 ;无符号数 X N1 EQU 22 N2 EQU 88 DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE, DS:DATA BEG: MOV AX , DATA MOV D

26、S, AX MOV DX, OFFSET MESG1 CMP NUMBER, N1 JNC NEXT ;X N1 转 MOV DX, OFFSET MESG2 JMP DISP NEXT: CMP NUMBER, N2+1 JC DISP ;X N2 转 MOV DX, OFFSET MESG3 DISP: MOV AH, 9 INT 21H ;显示结果信息 MOV AH, 4CH INT 21H ;返回 DOS CODE ENDS END BEG 15 实验四、循环程序设计 一 实验目的 1掌握比较指令、转移指令和循环指令的使用方法 2掌握循环结构程序的组成 3掌握循环程序的设计、调试方法

27、二 实验设备 PC 微机一台 三 实验预习要求 1复习比较指令、条件转移指令和循环指令。 2阅读示例程序,掌握循环程序的结构、循环控制方法及相关技巧。 3从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,编写程序,以便上机调 试。 四 实验内容 1 【示例】求某数据区内负数的个数 2试编程统计数据区中正数、零和负数的个数。 3. 编程求无符号数字节序列中最大值和最小值。 4从键盘输入一字符串,搜索该字符串中是否有字符“A” ,若有请输出其在串中的位置。 五 实验说明 1求某数据区内负数的个数 为统计数据区内负数的个数,需逐个判别区内的每一个数据,然后将所有数据中凡是 符号位为 1 的数据

28、个数累加起来,即得到区内包含负数的个数。参见程序清单. 2试编程统计数据区中正数、零和负数的个数。 3编程求无符号数字节序列中最大值和最小值 实验中可使用 BH 和 BL 作为暂存现行最大值和最小值,且在初始时将 BH 和 BL 初始 化为首字节的内容,循环依次比较每个字节的内容,求得最大值(存于 BH 中)和最小值 (存于 BL 中) ,送屏幕显示。 4 从键盘输入一字符串,搜索该字符串中是否有字符“A” ,若有请输出其在串中的位置。 六 实验步骤 1. 画出实验流程图。 2. 运行 Tddebug 软件,选择 Edit 菜单编写实验程序 3. 使用 Compile 菜单中的 Compile

29、 和 Link 对实验程序进行汇编、连接,生成执行文 件。 4. 使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。 5. 使用 Rmrun 菜单中的 Debug 调试程序。观察构成分支、循环条件的各标志的变化 16 情况及相关寄存器内容。 6. 更改数据区中的数据,考察程序的正确性。 七 参考程序清单 ;确定数据区 NUMB 中负数的个数(存放于 BL 中) DDATA SEGMENT NUMB DB 12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H MES DB The number of negative is:$ DDATA ENDS CODE

30、 SEGMENT ASSUME CS:CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX MOV DI,OFFSET NUMB XOR BH,BH MOV CX,10D A1: MOV AL,DI TEST AL,80H JE A2 INC BL A2: INC DI LOOP A1 MOV DX,OFFSET MES ;show mes MOV AH,09H INT 21H MOV AL,BL ;show the number of negative AND AL,0F0H ;get the highest 4 bits SHR AL,4 CMP AL,0

31、AH JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H MOV AL,BL AND AL,0FH ;get the lowest 4 bits CMP AL,0AH JB C3 ADD AL,07H C3: ADD AL,30H MOV DL,AL ;show character MOV AH,02H INT 21H MOV AX,4C00H ;go back to dos 17 INT 21H CODE ENDS END START 18 实验五、运算类程序设计 一实验目的 1. 掌握运算

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

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

34、DC 指令,即同时加上 CF 中的 1。参 见参考程序清单。 (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 码形式存

35、放在内存中,被乘 数为 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 标志。通过本实验

36、考察这些指令对标志的影响情况。 5. 编程用减奇数法开平方 80x86 指令系统中没有开平方指令,因此,开平方运算是通过程序来实现的。用减奇 数法可求得近似平方根,获得平方根的整数部分。因为,N 个自然数中奇数之和等于 ,2N 即: ,展开:nKN12)( 1+3+5=9= 23 1+3+5+7=16= 4 1+3+5+7+9+11+13+15=64= 28 所以,若要做 的运算,就可以从 S 中逐次减去自然数中的奇数S 1,3,5,7,一直到被减数为 0 或不够减下一个自然数的奇数为止,然后统计减去 自然数的奇数的个数,它就是 S 的近似平方根。 (1)本实验要求编程实现计算 0040H 的

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

38、中的数据,考察程序的正确性。 七 参考程序清单 双精度加法运算 ;计算 X+Y=Z ;X=001565A0H,Y=0021B79EH,运算的结果 Z=00371D3EH。 DATA SEGMENT MES DB The result is:$ XL DW 65A0H XH DW 0015H YL DW 0B79EH YH DW 0021H 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 CALL COMPUT

39、E ;调用计算子程序 PUSH BX CALL SHWORD ; 显示高位字 AX POP BX MOV AX,BX CALL SHWORD ; 显示低位字 BX MOV AX,4C00H INT 21H ;= COMPUTE PROC MOV AX,XL ADD AX,YL ;低位相加 MOV BX,AX ; 低位存放于 BX 中 MOV AX,XH ADC AX,YH ; 带进位加法,高位存放于 AX 中 RET COMPUTE ENDP ;= SHWORD PROC NEAR ;显示 AX 子程序,二十六进制 MOV CX,4 21 MOV DX,AX AGA: ROL DX,4 MOV

40、 AL,DL AND AL,0FH ;取低 4 位 CMP AL,10 ;是否是 10 以上的数 JC NEXT2 ADD AL,7 NEXT2: ADD AL,30H MOV AH,0EH ;显示字符 INT 10H LOOP AGA RET SHWORD ENDP CODE ENDS END START 22 实验六、代码转换程序设计 一 实验目的 1. 了解微机中所使用的各类数制及编码方法。 2. 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。 3. 掌握将存储在内存单元中的数据以十六进制数形式、十进制数形式和二进制数形式显 示在屏幕上的方法。 二 实验设备 PC 微

41、机一台 三 实验预习要求 1复习运算类指令的用法。 2复习子程序设计及调用方法。 3阅读示例程序,掌握子程序的编程方法及相关技巧。 4从实验内容中任选一道题目,仔细阅读相关的实验要求及说明,用子程序处理方式编写 程序,以便上机调试。 四 实验内容 1 【示例】将 5 位十进制数的数字串转换为一个字的二进制数 2编写程序将内存中一个字的数转换为十进制数的数字串显示。 3编程将十进制的数字串转换为 BCD 码 4编程将 BCD 码转换为二进制数 5编程将二进制数转换为十进制数显示 五实验原理及说明 计算机输入设备输入的信息一般是由 ASCII 码或 BCD 码表示的数据或字符,CPU 一 般均用二

42、进制数进行计算或用其他信息进行处理,处理的结果又必须依照外设的要求变为 ASCII 码、或 BCD 码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转 换是必不可少的。计算机与外设间的数码转换关系如图 6-1 所示,数码对应关系如表 6-1 所示。 6-1 23 1. 将十进制数的数字串转换为二进制数 十进制数可以表示为: iinn DD10100 其中 代表十进制数 1、2、3、9、0。i 上式可以转换为: 0121 )0)(0Dnnnii 由上式可归纳出十进制数转换为二进制数的方法:从十进制数的最高位 开始做乘nD 10 加次位的操作,依次类推,则可求出二进制数结果。 本实验要

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

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

45、54321,转换 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 菜单编写实验程序

46、 3. 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接,生成执行文 件。 4. 使用 Rmrun 菜单中的 Run 运行程序,观察运行结果。 5. 使用 Rmrun 菜单中的 Debug 调试程序。单步执行指令,观察各寄存器及数据区的 内容。 6. 更改数据区中的数据,考察程序的正确性。 图 6-2 将 5 位十进制数的数字 串转换为二进制数参考流程 图 6-3 将十进制数的数字串 转换为 BCD 码参考流程 25 七 参考程序清单 将十进制数的数字串转换为 16 数 DDATA SEGMENT MES DB The ascii code of decimal code are:$ BUF DB 30H,30H,30H,31H,32H ;十进制数 00012 的 ASCII 码 DB 10H DUP(0) DDATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX MOV SI,OFFSET BUF MOV BX,000AH

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。