(2014)微机原理及接口技术实验指导书
- 格式:doc
- 大小:1021.50 KB
- 文档页数:53
《微机原理及接口技术》实验指导书福建工程学院计算机与信息科学系计算机系统结构教研室实验一 汇编语言程序上机过程一、实验目的1.掌握EDIT 、MASM 、LINK 等软件工具的使用。
2.掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
二、实验内容1.将DISP 单元中存放的一压缩BCD 码内容显示出来。
2.将BUF 单元开始的两个BCD 码相加存放到SUM 单元中,并显示结果。
3.将字节变量DISP 的内容(00H-FFH 任意值)显示出来。
三、实验准备与报告 1.了解实验操作方法,准备好实验程序和数据。
2.记录汇编、连接过程产生的错误及解决办法,设置相关的出错情况,查看汇编结果; 3.记录运行结果,更改数据再运行,记录结果。
4.实验报告主要内容:实验名称、实验目的、实验内容、<实验电路>、程序、实验结果、调试过程记录、总结。
(其它实验也按此要求书写实验报告)实验二 DEBUG 使用实验一、实验目的1.掌握DEBUG 常用命令的使用。
2.进一步了解80X86的存储器和寄存器结构。
3.进一步理解有关指令的功能与应用。
二、实验内容1.进入与退出DEBUG 。
2.用R 命令检查和修改寄存器内容并记录。
3.用D 命令显示内存单元内容并记录。
4.用E 命令修改内存单元内容并记录。
5.A 、U 、T 、P 、G 、N 、W 、L 命令使用。
程序:MOV SI ,0 MOV AX ,[SI] INC SI INC SIADD AX ,[SI] MOV BX ,AX INT 20H(1)使用A 命令输入以上程序;(2)使用U 命令查看输入的程序;(3)使用N 、W 命令将程序存盘;用N 、L 命令重新装载,用U 命令查看; (4)使用DEBUG 的D 、E 命令检查设置(DS ):0000H 起始的四个单元内容; (5)使用R 命令检查、设置有关寄存器的值;(6)分别使用T 、G 命令运行程序,注意观察有关寄存器和单元的变化。
实验一二进制多位加法运算一、实验目的1、熟悉实验系统键盘显示的使用。
2、掌握使用加法类运算指令编程及调试方法。
3、掌握加法类指令对状态标志位的影响。
二、实验内容计算X+Y+Z=?(X、Y、Z为16位二制数)三、编程指南由于本实验是三个十六位二制数相加运算,因此,当X+Y时要考虑用ADC指令,把进位C加到结果的高16位中,当(X+Y)+Z时,再把进位C加到结果的高16位中,本实验设定三个加数0FFFFH,计算结果应为2FFFDH。
四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开8kAsm文件夹,点击S1.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(2)运算结果保留在内存4100H~4102H单元中,点击DICE-8086K软件中存贮器RAM窗口,输入RAM的起始地址4100、4101、4102,单元内容应为FD、FF、02。
脱机模式:⑴在P.态下,按SCA L键,输入2CA0,按EXEC键。
⑵复位RST键,运算结果保留在内存4100H~4102H单元中,共内容分别为:FD、FF、02,低位在前,高位在后,具体操作方法:输入键[4100]→[ME]→[NX]→[NX]。
五、实验程序清单CODE SEGMENT ;S1.ASM-->BIN ADDASSUME CS:CODEORG 2CA0H ;this is a program of addSTART: CLCMOV SI,4000H ;result in [4100]MOV [SI],0ffffH MOV [SI+2],0ffffH MOV [SI+4],0ffffH MOV A X,0000H MOV [SI+102H],AX MOV A X,[SI]ADD AX,[SI+2] ADC [SI+102H],0000 ADD AX,[SI+4] MOV [SI+100H],A X ADC [SI+102H],0000 JMP $CODE ENDSEND STA RT实验二A/D转换实验一、实验目的了解模/数转换基本原理,掌握A DC0809的使用方法。
《微机原理及接口技术》实验指导书适用专业:车辆工程(汽车电子技术方向)课程代码: 6010289学时: 10 学分: 3编写单位:交通与汽车工程学院编写人:赵玲审核人:唐岚审批人:孙仁云2013年3月目录实验一、MCS-51单片机汇编指令编程1实验二、MCS-51单片机汇编指令编程2实验三定时器/计数器实验实验四 I/O接口的应用实验五 A/D转换实验实验一 MCS-51单片机汇编指令编程1一、实验目的1、掌握循环结构程序设计方法。
2、了解汇编程序的编写、编译及调试。
二、实验设备EL-MUT-III型单片机实验箱,PC机及操作系统一套。
三、实验内容实现发光二极管每隔0.1s依次循环右移点亮。
NAME T1CSEG AT 0000H (由于该实验箱既可以开展单片机实验,也可以开展微机原理实验,其硬件设计与实际的单片机系统有一些小的调整,该句,实际就是 ORG 0000H的作用) LJMP STARTCSEG AT 4100H (ORG 0100H)START: MOV A,#0FEHLOOP: LCALL DELAYRL AMOV P1,AJMP LOOPDELAY: MOV R1,#125DEL1: MOV R2,#200DEL2: DJNZ R2,DEL2DJNZ R1,DEL1RETEND实验接线:P1.0~P1.7接发光二极管L1~L8。
四、思考与练习1、补充完成程序里面的内容,实现0.1s的延时,并解释理由。
(本实验系统晶振为6MHZ)书上2、请问发光二极管是高电平还是低电平点亮?低3、如何修改程序实现每隔0.1s依次循环左移2位点亮。
程序loop阶段修改为LOOP:RR ARR AMOV P1,ALCALL DELAYJMP LOOP五、实验报告内容1、实验报告格式按照学院下发的统一实验报告用纸上面的要求手写完成。
2、报告里面必须包含:实验目的、实验设备、实验内容及实验相应的结果,并完成相应的思考题。
实验一系统认识实验实验目的掌握TD-PITE 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
实验设备PC机一台,TD-PITE 实验装置一套。
实验内容编写实验程序,将00H~0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。
实验步骤1. 运行Wmd86 软件,进入Wmd86 集成开发环境。
2. 根据程序设计使用语言的不同,通过在‚设置‛下拉列表来选择需要使用的语言,如图1-1-1所示。
语言选择后,下次再启动软件,语言环境保持这次的修改不变。
在这里,我们选择汇编语言。
图1-1-1 语言环境选择界面3. 语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-1-2所示。
默认文件名为Wmd861。
图1-1-2 新建文件界面4. 编写实验程序,如图1-1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。
图1-1-3 程序编辑界面5. 点击,编译文件,若程序编译无误,则输出如图1-1-4所示的输出信息,然后再点击进行链接,链接无误输出如图1-1-5所示的输出信息。
图1-1-4 编译输出信息界面图1-1-5 链接输出信息界面6. 连接PC与实验系统的通讯电缆,打开实验系统电源。
7. 编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。
可以通过端口列表中的‚端口测试‛来检查通讯是否正常。
点击下载程序。
为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。
下载成功后,在输出区的结果窗中会显示‚加载成功!‛,表示程序已正确下载。
起始运行语句下会有一条绿色的背景。
如图1-1-6所示。
图1-1-6 加载成功输出显示界面8. 将输出区切换到调试窗口,使用D0000:3000命令查看内存3000H 起始地址的数据,如图1-1-7所示。
存储器在初始状态时,默认数据为CC。
图1-1-7 内存地址单元数据显示9. 点击按钮运行程序,然后再点击来停止程序运行,接下来观察程序运行结果,仍使用命令D0000:3000 来观察数据变化。
实验一系统认知实验实验目的:了解汇编语言的设计、编写和调试程序的方法,掌握DEBUG的使用。
实验设备:装有DOS系统和MASM5.0的微机一台,或TDN86/88微机原理教学实验系统一台。
实验内容:编程实现在屏幕上显示一个大写字母“A”或字符串“HOW ARE YOU?”,用DEBUG调试程序实验要求:1、上机前做好充分准备,包括源程序清单、调试步骤等;2、用DEBUG来调试程序,熟悉DEBUG的使用。
实验步骤:1、编写程序并输入,检查无误后,经汇编、连接后运行,用DEBUG装入。
2、用U命令反汇编程序,应用R、G等命令,观看运行情况。
3、用D、E、A等命令查看、修改源数据,用G命令查看运行结果。
4、用Q命令退出DEBUG上机过程1.建立源文件使用EDIT软件,得到扩展名为ASM的汇编语言源程序文件。
(扩展名.asm 勿忘加!)2.汇编源程序使用汇编程序MASM对源程序进行汇编,生成OBJ、LST和CRF文件(后两种一般不需要,可直接回车)。
如程序有错,可以根据提示信息,重新编辑、汇编源程序,直到没有严重错误为止。
3.连接程序使用连接程序LINK,对汇编程序产生的目标文件进行连接,产生可执行的程序EXE。
4.调试或运行程序具体过程如下:1. 编辑C:\MASM>EDIT 文件名.ASM2. 汇编C:\ MASM >masm 文件名.ASM3. 连接C:\ MASM >link 文件名.obj4. 调试C:\ MASM >debug 文件名.exe-U 反汇编,记下程序首地址和结束地址-D 段地址:偏移地址察看内存单元内容-E 段地址:偏移地址修改内存单元内容:空格修改下一个, 回车结束修改-G=起始地址结束地址运行程序参考源程序:(1) 屏幕上显示一个大写字母“A”STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AH, 02HMOV DL,41HINT 21HINT 20HCODE ENDSEND START(2) 屏幕上显示字符串“HOW ARE YOU?”DA TA SEGMENTBUF DB 'HOW ARE YOU?$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET BUFMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验二分支程序设计实验一、实验目的1.掌握分支程序的结构。
《微机原理与接口技术》实验指导书主编教师:授课班级:目录实验一顺序结构程序实验【实验目的】【实验重点及难点】【实验环境】【实验内容】实验二分支结构程序实验【实验目的】【实验重点及难点】【实验环境】【实验内容】实验三单重循环结构程序实验【实验目的】【实验重点及难点】【实验环境】【实验内容】实验四多重循环结构程序实验【实验目的】【实验重点及难点】【实验环境】【实验内容】实验五子程序实验(一)【实验目的】【实验重点及难点】【实验环境】【实验内容】实验六子程序实验(二)【实验目的】【实验重点及难点】【实验环境】【实验内容】实验七字符处理程序实验(一)【实验目的】【实验重点及难点】【实验环境】【实验内容】实验八字符处理程序实验(二)【实验目的】【实验重点及难点】【实验环境】【实验内容】实验一顺序结构程序实验【实验目的】1、熟悉Masm for Windows 集成实验环境软件。
2、熟悉DEBUG有关命令的使用方法。
3、通过实际操作,掌握顺序结构程序的设计方法。
4、通过实际操作,熟悉利用DEBUG修改参数、检查结果的方法。
5、通过实际操作,熟悉汇编语言源程序的编辑、汇编、连接及调试过程。
【实验重点及难点】1、DEBUG有关命令的使用方法。
2、顺序结构程序的设计方式。
3、利用Masm for Windows 集成实验环境软件运行简单的程序段。
【实验环境】Window xp操作系统,Masm for Windows 集成实验环境。
【实验内容】(一)、实验步骤1、打开Masm for Windows 集成实验环境软件。
2、新建一个ASM文件,编写一个求平均值程序,假设两个数分别存在X 单元和Y单元中,求得的平均值存放在Z单元中。
3、保存后对其进行汇编及连接,产生.EXE文件。
4、用DEBUG对.EXE文件进行调试运行。
5、学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。
6、运行完毕,关闭Masm for Windows 集成实验环境软件。
实验一查看CPU和内存,用机器指令和汇编指令编程一、实验目的1. 熟悉debug常用命令;2. 使用debug命令进行汇编指令操作。
二、实验仪器32位win7操作系统PC机一台。
三、实验原理1.预备知识:Debug的使用(1)什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
(2)我们用到的Debug功能。
用Debug的R命令查看、改变CPU寄存器的内容;用Debug的D命令查看内存中的内容;用Debug的E命令改写内存中的内容;用Debug的U命令将内存中的机器指令翻译成汇编指令;用Debug的T命令执行一条机器指令;用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
Debug的命令比较多,共有20多个,但这6个命令是和汇编学习密切相关的,以后的实验中,我们还会用到一个P命令。
(3)进入Debug。
方法一:“window键+R”,打开运行对话框,输入“cmd”,在弹出的对话框中输入debug。
方法二:双击桌面,在弹出的运行框中点击,进入debug调试界面,如下图所示。
(注:建议使用此方法打开。
)图1-1 debug调试界面2. 具体命令操作及说明。
(1)用R命令查看、改变CPU寄存器的内容。
①查看。
如图1-2所示。
Debug中的数据都是十六进制的。
图1-2 使用R命令查看CPU中各个寄存器中的内容图1-2的寄存器相信大家都不陌生了,其中的29EF:0000 B601的解释如下:29EF(CS):0000(IP)B601(机器指令,机器码)。
②更改。
如图1-3所示。
图1-3 用R命令修改寄存器AX中的内容注意:图1-3是在图1-2的界面上进行输入的。
请大家注意观察AX寄存器值的变化。
请大家思考如何把29EF(CS):0000(IP)的值该为3000:0100?提示:参考上面的方法,把CS=29EF改为CS=3000,将IP=0000改为0100即可。
微机原理与接口技术实验指导书实验一:微处理器概述及数据传输实验一、实验目的•了解微处理器的基本概念和工作原理;•学习数据传输的基本知识;•掌握使用微处理器进行数据传输的方法。
二、实验器材•1个微处理器开发板;•1个串行通信模块;•相应的连接线。
三、实验内容在该实验中,你将学习如何使用微处理器进行数据传输,具体实验步骤如下:1.将开发板和串行通信模块连接起来;2.将数据发送器连接到串行通信模块的发送端口,将数据接收器连接到串行通信模块的接收端口;3.通过开发板上的开关设置要发送的数据;4.通过串行通信模块将数据发送到计算机;5.在计算机上使用相应的软件接收数据,并验证接收到的数据是否正确。
四、实验步骤1.将开发板和串行通信模块连接起来,确保连接正确并稳定;2.将数据发送器插入串行通信模块的发送端口,将数据接收器插入串行通信模块的接收端口;3.在开发板上的开关上设置要发送的数据;4.打开计算机上的串行通信软件,配置正确的串口号和波特率;5.点击软件的接收按钮,准备接收数据;6.在开发板上的开关上切换到发送模式,并观察串行通信模块的指示灯是否正常闪烁;7.在串行通信软件上观察接收到的数据是否与设置的数据一致;8.如果数据传输正常,则实验完成。
五、实验注意事项1.连接线务必稳固连接,确保数据传输正常;2.阅读并理解实验器材的使用说明书;3.注意保持实验环境的整洁,避免影响实验结果;4.在进行数据传输时,确保计算机已正确安装了相应的驱动程序。
六、实验总结通过这次实验,我们初步了解了微处理器的基本概念和工作原理,学习了数据传输的基本知识,并掌握了使用微处理器进行数据传输的方法。
我们在实验中成功地连接了开发板和串行通信模块,并成功地进行了数据传输。
通过实验,我们发现数据传输过程中需要注意连接线的稳固连接,以及计算机是否安装了相应的驱动程序。
实验的结果验证了我们的操作方法的正确性,同时也为后续实验奠定了基础。
注意:本指导书旨在引导实验过程,实验过程中如有任何危险情况,请立即停止实验并寻求实验室管理员的帮助。
第一部分软件程序设计(共8学时)一、实验环境wave 6000简介1、环境设置图 1 仿真器设置a图 2 仿真器设置b图 3 勾选使用伟福软件模拟器图 4 语言设置图5 目标文件设置2、①新建文件图6 新建文件②打开已有文件图7 打开文件双击选择要打开的文件即可。
3、文件保存:文件名为英文字母,不超过8个字符,扩展名为ASM,保存在C:\WA VE6000下,注意保存路径中不能出现中文字符。
图8 保存文件4、源程序的汇编链接及程序调试①源程序输入完毕或打开已有文件后,单击图标程序进入编译链接状态,若程序无语法错误,则显示:图9 汇编链接状态a程序中出现语法错误时的编译结果是:图10 汇编链接状态b双击错误处即可定位到出现错误的语句上,图11 汇编链接状态及错误定位错误语句逐句修改后,再重新编译连接,直到通过编译。
②程序调试:方法有:复位(CTRL-F2)设置断点(CTR+F8)、跟踪(F7)、单步运行(F8)、连续运行(CTR+F9)等方法。
断点的设置和取消:光标置预设断点行,按CTRL_F8,即可,在已设断点行再次按下CTRL_F8即可取消断点设置。
图12 设置断点后的情况③实验结果查看可以通过查看寄存器内容、数据段内容、观察窗口内容、DOS显示结果等判断程序执行是否正常。
图13 设置观察窗口图14 数据段内容查看图15 查看DOS显示结果图16 查看寄存器内容软件实验一实验内容在数据区定义字母数字串,分别统计数字、大写字母、小写字母个数,分别存放在SHUZI、DAXIE、XIAOXIE单元中。
多次统计,记录统计结果。
实验要求在熟悉wave 6000编程环境的基础上,完成上述源程序的输入、汇编、修改、运行等实验步骤,直到程序执行得到正确结果为止。
熟练掌握单步运行、断点设置、自动运行、寄存器内容,数据区内容查看等程序调试技术。
软件实验二实验内容将内存区定义的字母数字串的统计结果以16进制形式显示出来,显示格式为:The Nembers of Digital is:XXHThe Nembers of Capital Letters is:XXHThe Nembers of Small Letters is:XXH程序要求:1、二进制转十六进制并显示的功能由BTOHDSP实现2、回车换行用CRLF宏指令实现3、字符H的显示用OUTPUT宏指令实现4、提示信息的显示用宏INOUT宏指令实现实验要求:调试程序,直到正确实现所要求的功能。
《微机原理与接口技术》实验指导书-图文微机原理与接口技术实验指导书方义秋编著计算机实验教学中心目录实验要求3第一部分微机原理及汇编程序设计4实验一、认识Tddebug集成操作软件4实验二、I/O程序设计9实验三、分支程序设计11实验四、循环程序设计13实验五、运算类程序设计15实验六、代码转换程序设计19实验七、宏指令应用24实验八、字符串处理26实验九、数据表格处理28实验十、子程序及软中断程序设计29第二部分接口部分实验33实验十一、PC机内部8259中断应用33实验十二、PCI总线中断应用39实验十三、8254定时/计数器应用45实验十四、8255并行接口应用53实验十五、交通灯控制58附录一TD-PIT-B实验系统的硬件环境602实验要求预习实验内容1.2.3.实验过程1.2.3.4.带上理论课教材、实验指导书及准备的实验程序。
若为接口电路,请关闭电源搭接线路,检查无误后,再开电源。
调试程序,记录结果。
实验结束后,请关闭电源,将各实验器材归位,清洁自己的桌面。
明确本次实验目的及任务,了解和掌握实验所需的理论知识及相关接口芯片的工作原理。
通过阅读示例程序,掌握编程方法及相关技巧。
对每次实验,选择其中一个项题目自己设计编写程序。
编写实验报告1.2.3.4.5.6.实验题目。
分析设计思想,绘制实验原理图、流程图。
程序清单及相关注释。
分析实验结果。
说明在实验过程中遇到了哪些问题,是如何处理的。
收获体会,不足之处和今后应注意的问题等。
注意事项1.2.3.4.实验以前,应确保PCI总线扩展卡与实验箱间扁平电缆连接的正确性。
实验前后应仔细检查实验箱,防止导线、元件等物品落入装置内,导致线路短路、元件损坏。
爱护实验设施,插接、拔取排线时,手握白色插头,不得从线中间拉取。
实验箱电源关闭后,不能立即重新开启。
关闭与重新开启之间至少应有30秒间隔。
3第一部分微机原理及汇编程序设计实验一、认识Tddebug集成操作软件一.1.2.3.4.实验目的熟悉汇编程序的开发过程。
实验一系统认知实验实验目的:了解汇编语言的设计、编写和调试程序的方法,掌握DEBUG的使用。
实验设备:装有DOS系统和MASM5.0的微机一台,或TDN86/88微机原理教学实验系统一台。
实验内容:编程实现在屏幕上显示一个大写字母“A”或字符串“HOW ARE YOU?”,用DEBUG调试程序实验要求:1、上机前做好充分准备,包括源程序清单、调试步骤等;2、用DEBUG来调试程序,熟悉DEBUG的使用。
实验步骤:1、编写程序并输入,检查无误后,经汇编、连接后运行,用DEBUG装入。
2、用U命令反汇编程序,应用R、G等命令,观看运行情况。
3、用D、E、A等命令查看、修改源数据,用G命令查看运行结果。
4、用Q命令退出DEBUG上机过程❖ 1.建立源文件使用EDIT软件,得到扩展名为ASM的汇编语言源程序文件。
(扩展名.asm 勿忘加!)❖ 2.汇编源程序使用汇编程序MASM对源程序进行汇编,生成OBJ、LST 和CRF文件(后两种一般不需要,可直接回车)。
如程序有错,可以根据提示信息,重新编辑、汇编源程序,直到没有严重错误为止。
❖ 3.连接程序使用连接程序LINK,对汇编程序产生的目标文件进行连接,产生可执行的程序EXE。
❖ 4.调试或运行程序具体过程如下:❖ 1. 编辑C:\MASM>EDIT 文件名.ASM❖ 2. 汇编C:\ MASM >masm 文件名.ASM❖ 3. 连接C:\ MASM >link 文件名.obj❖ 4. 调试C:\ MASM >debug 文件名.exe❖-U 反汇编,记下程序首地址和结束地址❖-D 段地址:偏移地址察看内存单元内容❖-E 段地址:偏移地址修改内存单元内容:空格修改下一个, 回车结束修改❖-G=起始地址结束地址运行程序参考源程序:(1) 屏幕上显示一个大写字母“A”STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AH, 02HMOV DL, ‘A’INT 21HINT 20HCODE ENDSEND START(2) 屏幕上显示字符串“HOW ARE YOU?”DA TA SEGMENTBUF DB 'HOW ARE YOU?$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET BUFMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验二分支程序设计实验一、实验目的1.掌握分支程序的结构。
2.掌握分支程序的设计、调整方法。
二、实验设备TDN86/88 教学实验系统一台。
三、实验内容及步骤设计一数据块间的搬移程序设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。
源数据块和目的数据块在存储中可能有三种情况,如图3-1 所示。
图3-1 源数据块与目的数据块在存储中的位置情况对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。
但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图3-1(b)所示。
当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图3-1(c)所示。
参考流程:如图3-2所示。
图3-2 程序流程图实验程序STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX, 0010HMOV SI, 3100HMOV DI, 3200HCMP SI, DIJA A2ADD SI, CXADD DI, CXDEC SIDEC DIA1: MOV AL, [SI]MOV [DI], ALDEC SIDEC DIDEC CXJNE A1JMP A3A2: MOV AL, [SI]MOV [DI], ALINC SIINC DIDEC CXJNE A2A3: JMP A3CODE ENDSEND START实验步骤(1)输入程序并检查无误,经汇编、连接后装入系统。
(2)用E 命令在以SI 为起址的单元中填入16 个数。
(3)G= ↙,运行实验程序。
(4)用D 命令查看DI 为起址的单元中的数据是否与SI 单元中数据相同。
(5)试改变SI、DI 的取值,观察在三种不同的数据块情况下程序的运行。
四.思考题为什么当源数据块首址>目的块首址时,应从数据块首地址开始传送数据。
而当数据块首址<目的块首址时,应从数据块末地址开始传送数据?实验三循环程序设计一.实验目的1.加深对循环结构的理解。
2.掌握循环结构程序设计的方法。
3.熟练掌握调试循环程序的方法。
二.实验设备TDN86/88 教学实验系统一台。
三.实验内容及步骤1.编制程序计算S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止。
编写实验程序,计算上式的结果,参考流程图如图3-3所示。
图3-3 程序流程图实验程序STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX,0001HMOV BL,02HA1: MOV AL,BLINC BLMUL BLADD DX,AX ;结果存于DX中CMP AX,00C8H ;判断N(N+1)与200的大小JNA A1A2: JMP A2CODE ENDSEND START实验步骤(1)编写实验程序,编译、链接无误后装入系统;(2)运行程序,然后再停止程序运行;(3)运算结果存储在寄存器DX中,查看结果是否正确;(4)可以改变N(N+1)的条件来验证程序功能是否正确,但要注意,结果若大于FFFFH 将产生数据溢出。
2. 求某数据区内负数的个数设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。
为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。
实验程序流程图如图3-4所示。
图3-4 程序流程图实验程序STACK SEGMENT STACKDW 64 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DI, 3000H ;数据区首地址MOV CL, [DI] ;取数据个数XOR CH, CHMOV BL, CHINC DI ;指向第一个数据A1: MOV AL, [DI]TEST AL, 80H ;检查数据首位是否为1JE A2INC BL ;负数个数加1A2: INC DILOOP A1MOV [DI], BL ;保存结果A3: JMP A3CODE ENDSEND START实验步骤(1)按实验流程编写实验程序;(2)编译、链接无误后装入系统;(3)键入E3000,输入数据如下:3000=06 (数据个数)3001=123002=883003=823004=903005=223006=33(4)先运行程序,然后停止程序运行;(5)查看3007内存单元或寄存器BL中的内容,结果应为03;(6)可以进行反复测试来验证程序的正确性。
实验四排序和检索程序设计一、实验目的1.进一步掌握多重循环循环程序的结构。
2.进一步掌握多重循环程序的设计、编写及调试方法。
二、实验准备1.复习教材中有关多重循环程序设计的相关内容。
2.复习排序和检索算法3.编写程序1:将内存中的10个无符号数(长度为2字节)由大到小排序。
DATA SEGMENTX DW 24H,32H,01H,02H,44H,32H,05H,00H,12H,11H DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,10DEC CXLOOP1: MOV DI,CXMOV BX,0LOOP2: MOV AX,X[BX]CMP AX,X[BX+2]JGE LOOP3XCHG AX,X[BX+2]MOV X[BX],AXLOOP3: ADD BX,2LOOP LOOP2MOV CX,DILOOP LOOP1MOV AH,4CHINT 21HCODE ENDSEND START Array4.编写程序2:在上述已排好序的数据区里查找某一个数。
若找到,显示‘Y’,否则显示‘N’。
DATA SEGMENTX DW 44H,32H,32H,24H,12H,11H,05H,02H,01H,00HSTRING1 DB 'Y',0DH,0AH,'$'STRING2 DB 'N' ,0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV CX,10XOR AX,AXMOV AX,00HMOV BX,0LOOP1: CMP AX,X[BX]JZ LOOP2INC BXLOOP LOOP1JMP LOOP3LOOP2: MOV DX,OFFSET STRING1MOV AH,09H ;输出相应的字母INT 21HJMP EXITLOOP3: MOV DX,OFFSET STRING2MOV AH,09H ;输出相应的字母INT 21HEXIT: MOV AH,4CHINT 21HCODE ENDSEND START开始段的定义MOV CX,10 MOV AX,00H MOV BX,0YAX=X[BX]NINC BXNC=0Y显示“Y”显示“N”结束三、实验内容1.将编写好的程序1输入、汇编、连接并通过Debug调试和检查运行结果。
无序数组X:24H,32H,01H,02H,44H,32H,05H,00H,12H,11H排序后的数组从DS:0000-0010从大到小排列:2.将编写好的程序2输入、汇编、连接并通过Debug调试和检查运行结果。
测试的数据00H保存在AX寄存器中:四、实验报告要求1.整理出运行正确的源程序清单(加以注释),并画出程序流程图。
2.如何修改程序1对数据由小到大排序。