微机原理与接口技术试验指导书.doc_第1页
微机原理与接口技术试验指导书.doc_第2页
微机原理与接口技术试验指导书.doc_第3页
微机原理与接口技术试验指导书.doc_第4页
微机原理与接口技术试验指导书.doc_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

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

文档简介

安徽电子职业技术学院实验教材微机原理与接口技术(8088/8086系列)实验指导书 巩雪洁 主编前 言 本实验指导书共分为三章,各章节的编排顺序基本上与理论课教材相近。第一章介绍DEBUG命令的使用,第二章介绍微型计算机的指令系统及程序设计,第三章介绍中断技术、并行接口8255、定时/计数器8253等接口技术及应用。各项实验提供的参考程序均通过上机验证。在本书编写的过程中,主要突出以下几个特点:1.校企联合办学,本实践课程得到40所的大力支持,在*同志的辛勤指导下,本着结合实际的原则,完成了本教材的编写。2.以培养应用技术性人才为目标,突出基本技能训练,加强对指令系统的理解和接口技术的训练,培养学生的编程和应用能力。3.考虑到学生的基础各异,每章节安排的实验数量较多和难易程度也有所不同,可以根据实际情况选择实验合适的项目。4.实验内容的编排顺序基本上与理论课教学一致,努力做到理论和实验相结合,互相补充。本教材由巩雪洁主编,*参编,王伟韦审稿。由于编者水平有限,书中难免会有错误和不妥之处,恳请广大读者批评指正。 巩 雪 洁 2008年9月目 录第一章 DEBUG命令的使用 第二章 软件实验实验一 数码转换程序设计及调试 实验二 运算类程序设计实验实验三 分支程序设计实验实验四 循环程序设计实验实验五 排序程序设计实验 实验六 子程序设计实验 实验七 显示程序设计实验 第三章 硬件实验实验八 中断特性及8259应用编程实验 实验九 8255并行接口应用实验实验十 8253定时/计数器应用实验实验十一 8279键盘接口应用实验 实验十二 825l串行接口应用实验 实验十三 双机通讯实验 实验十四 A/D转换实验 实验十五 DA转换实验 实验十六 EPROM编程第一章 DEBUG命令的使用 DEBUG.COM 程序是一个有效的动态调试工具,还是简单的系统维护工具。本章介绍DEBUG命令的功能、格式和相应说明(主要介绍A、D、B、G ( 及GB)、Q、R、T、U、E)。一、 DEBUG的启动 DEBUG的启动格式为:DEBUG 其中,文件标识符指定要调试的程序,参数表给出被调试程序所要用的命令行参数。如:CDEBUG DISKCOPY.COM C: D: CDEBUG JCDL.EXE CDEBUG 第一句是启动DISKCOPY文件,执行从C:拷贝到的D:的操作。第二句是调试JCDL.EXE程序。第三句是启动DEBUG,不装入文件。DEBUG装入内存后,接着就从磁盘上查找被调试的程序,找到后将其装入内存(对于后缀为EXE的文件,DEBUG将它装入到最低可用的区段中,并从1000H开始装入),然后显示出提示符“”。等待用户进一步输入命令。 DEBUG命令中使用的地址格式约定为: 其中可以是段寄存器名,或者是十六进制数,和省掉时为一默认值。 如: CS:2000或0000:2000 而地址范围的格式为: : 或 :L 如: CS:100 100 或0000:100 L 10二、退出DEBUG 当完成动态调试任务时,可使用Q命令退出DEBUG。 格式为 Q 键入Q之后,按回车键,返回到D0S状态。三、汇编、断点、执行、跟踪与反汇编 汇编、执行、跟踪和反汇编是DEBUG的一组最基本操作。在DEBUG下汇编一小段程序后,就可以执行,或跟踪执行,然后将该程序反汇编出来。 1、A命令(启动小汇编程序) 格式为:A:偏移量)A是逐行汇编命令,主要用于小段程序的汇编或修改目标程序。用逐行汇编命令汇编程序时,一般不允许使用标号和伪指令。但在MS-DEBUG中允许使用DB和DW这两条伪指令。 其中:为开始汇编的地址,若省略,则从当前地址(即IP寄存器的内容表示的)开始汇编。A命令用C或按回车键退出汇编。汇编过程中发现错误时,显示出1个“ERROR”并要求重新输人。 如:汇编一小段程序(把DS的值改为:0000)。A0000:2000 (回车) 0OOO:2000 MOV AX,0000 0000: 2003 MOV DS,AX 0000:2005 (回车)2、B命令(设置断点命令) 在程序中设置断点,使程序执行到断点处暂停执行。其中,断点最多允许设置lO个。 其格式为: B (回车) i:3、G命令(连续执行程序)G命令用来启动运行一个程序或程序的一段。格式: G=: 或 GB=:其中G格式表示无断点连续运行由段地址:偏移量指定入口的程序,如果G命令不带参数,则从头运行装入的程序,运行后仍返回DEBUG。如G命令后有断点地址,则程序执行到断点地址时暂停并显示出各寄存器状态;而GB执行带断点的程序。如:执行下面的小程序。 G=0000:2000(从地址2000H处开始执行) 运行程序停止执行后,显示各寄存器的状态。,在上面的显示结果中,CS:IP寄存器内容为0000:2000,表示当前程序的指令位置。4、T命令(单步跟踪执行) T命令用来逐条跟踪程序,格式为:T= 从指定地址起执行n条指令后停下,每条指令执行后,都要显示各寄存器的内容。跟踪执行实际上是单步执行。在分析程序时希望不断跟踪程序执行路径,从而分析出程序执行过程。如:跟踪执行上面的程序。, T=0000:2000 5、U命令(反汇编程序) U命令可以对二进制代码程序作反汇编,常用于分析和调试目标程序。 格式为:U: 或 U范围 如:反汇编前面汇编的程序。 U0000:2000(从地址2000H处开始执行) 在显示信息的后面,继续输入命令:U(回车)。 反汇编的程序,在汇编程序和地址中间增加了表示二进制的机器码。注意,在反汇编过程中,如果源程序中有一段数据,则也被反汇编成“程序”,但读不懂,这时应越过这一段。四、显示、修改内存和寄存器命令 程序中反汇编出来的数据不易读懂,必要时需用显示命令显示。另外,当需要修改内存中一些数据时,可以用修改内存命令进行操作。修改寄存器参数时,要使用寄存器命令。 1、D命令(显示内存) 该命令是将调入内存的程序以十六进制形式以及对应的ASCII码字符形式显示出来。格式为: -D 或 -D其中:地址表示从该地址开始显示,若没有地址,则从当前地址显示:范围表示显示范围,如1000:2000表示地址100O至2000。D命令每次显示8字节的数据。注意:DEBUG操作数一般是十六进制数。 如:显示2000地址开始的内容。 D2000 (从地址2000H处开始显示)2、E命令(向内存写入数握) 命令格式为: E 将内容写到指定地址单元中,其中:地址为写入内容的地址,字节串为写入的内容。没有字节串的格式,是一种交互式写入内容(每次只能一字节一字节地显示或修改数据)。如:向0000:3500开始地址单元中写2个数据00和01 E0000:3500(回车) 0000:3500 CC 00(空格) 0000:3501 CC Ol(回车) 3、R命令(显示或修改寄存器内容) 显示寄存器的内容,并可以修改其值。命令格式如下: R (显示默认的寄存器和标志) R寄存器 (显示指定寄存器) RF (显示所有标志) 显示寄存器内容时,首先显示13个16位寄存器的内容,随后是标志寄存器的内容, 最后一行是下一条要执行的指令地址及指令内容。如:显示CX寄存器中的内容,并修改为OF。 R CX CX=000l_OF(回车) R CXCX=000F_五、常用DUBUG命令一览表assumble Aaddress dump Drange enter E address1ist go G=addressaddresses quit Q register RregisterJ trace T=addressvalue unasseble Urange 我们也可以通过DEBUG的帮助显示全部DEBUG中的命令(如:debug -?)。 通用说明: 1、DEBUG命令接受和显示的数都是十六进制表示,若为十进制要加“D” 2、命令都是一个字母(大小写均可),命令参数随命令而异。 3、命令和参数间可用定界符分隔(空格、制表符、逗号),在两个十六进制之间是必须的。 4、在提示符出现后,键入的DEBUG命令,只在按回车键后才开始执行。 5、若键入错误DEBUG命令,则会显示“ERROR”。第二章 软件实验一、 DICE-8086B的简介 l、系统简介 DICE-8086B实验系统适应十六位微机原理及接口控制技术等课程的教学实验仪器,其构成如下:主频4.7MHz的8088为主CPU、以54键标准ASCII码键盘为基本输入设备、40*2行字符型点阵式液晶为基本输出设备、IO芯片(825l、8253、8255、8259、8279、0809);可以直接使用汇编语言输入和调试程序,并具有反汇编功能;此系统有同IBM-PC一致的DEBUG操作命令及与IBM-PC兼容的BIOS功能调用;提供了两个标准PC总线插槽,支持8086系列的开发和调试。2、接口功能 J1(电源接口)、J3(打印机接口)、J6J7(实验器接口连接用户板)、J8(通讯接口)、J19(液晶显示接口)、J22(键盘接口;开关S一般指向LCD(当指向EXT时,上电启动窜行监控,这时键盘和显示器都可以省去,CRT终端为实验系统操作平台)。3、键盘简介 主要有标准ASCII码键盘和功能键组成(注意与一般PC键盘的区别), Shift 同其它键组合,区分上下档或大小写字符键入; Ctrl 同其它键组合,实现特定控制功能,如: Ctrl+P 挂接或释放打印机 F5 Ctrl+S 暂停命令运行,直到按任意键为止 F4 Ctrl+C 中断程序的执行 退格键 等同于U (反汇编命令) 注意:实验中所有组合键功能只适用于实验系统单机工作的键盘操作。4、启动系统连接好,检查无误后,通电运行。启动方式: 系统正常启动,短时间显示“WELCOME TO YOU !”后,会显示“”提示符,等待你键入操作命令。二、 实验(软件部分) 通过这些软件实验程序的调试,使学生熟悉80888086的指令系统,了解顺序、分支、循环、子程序四种基本结构的编程技术,掌握汇编语言程序设计方法及如何使用实验系统提供的调试方法来排除软件错误。系统操作练习实验:用DEBUG命令调试程序举例一、实验目的 学习并掌握实验系统的基本操作,为以后实验打下基础。二、实验仪器 DICE-8086B实验系统一台。三、实验内容及步骤l、输入与修改开机后出现“”提示符后,即可输入源程序(功能:从3500H内存单元开始建立015共16个数据),操作为:在“”提示符下键入A2000(回车),显示及输入如下: 显示信息 键入信息 0000:2000 MOV DI,3500 0000:2003 MOV CX,0010 0000:2006 MOV AX,0000 0000:2009 SAHF 0000:200A MOV BDI,AL 0000:200C INC DI 0000:200D INC AX 0000:200E DAA 0000:200F LOOP 200A 0000:201l JMP 201l 输入过程中,若在回车前发现本行有错误字符,可按“”键删除并重新输入;当回车后提示“ERROR时,地址指针仍旧会停留在当前行,待你重新输入正确。输入程序后,可按以下操作进行反汇编,查看程序: 显示信息 键入信息 U2000(回车) 2000 BF0035 M0V DI,3500 U(回车) 2003 B91000 MOV CX,0010 U(回车) 当发现源程序有输入错误时,可做相应修改,修改方法为: (例:把偏移地址2006内容改为:MOV AX,0010) 显示信息 键入信息 A2006 (回车) 0000:2006 MOV AX,0010(回车) 0000:2009 (回车)2、程序运行(单步运行、连续运行、断点运行) (1)、单步运行 操作如下: 显示信息 键入信息 T=2000 (回车) CS=0000 IP=2003 T(回车) 每次运行一条指令就显示各寄存器的内容及下条待执行指令的地址IP,重复键入T。(2)、连续运行 按以下操作即可连续运行程序: G=0000:2000 (回车) 你可以按CTRL+C (或F4) 中断程序运行,返回监控状态,按CTRL+S(或F5)来暂停程序的运行,直到按任意键为止。(3)、断点运行 首先在程序中设置断点,系统规定最多可定义10个断点。如: 显示信息 键入信息 B (回车) 0: 2009 (回车) 1: (回车) 以上操作定义了2009地址为断点,每次程序连续运行到断点时,程序中断显示当前各寄存器的内容。我们可以使用GB命令(含断点连续运行程序),断点仅当系统复位时消除。 3、内存单元的修改与显示 使用D命令可查看3500350F单元中的内容,操作如下:GB=200O (回车) CS=0000 IP=2011 D3500(回车)0000:3500 00 0l 02 D(回车)OOOO:3508 08 09 10 也可以用D3500,350F来连续显示所有数据单元的内容,可以用CTRL+S来暂停显示,击任意键继续;或用CTRL+C则终止数据显示,返回监控状态。 使用E命令修改某一单元的内容,操作如下:(如:修改3500单元内容)E3500 (回车)0000:3500 CC_ 00(按“空格”键)0000:3501 CC_ 01(按“空格”键) 其中:“空格”键用于向待编辑单元的高地址方向移动地址,而“-”键则反方向移动地址,用“回车”来响应输入,就退出E命令。 *系统操作练习程序(二)* 将内存3500单元开始的O15共16个数传递到3600单元开始的数据区域中。程序如下: 地址 助记符 2000 MOV SI,3500 2003 MOV DI,36002006 MOV CX, 00082009 MOV AX, WSI200B MOV WDI, AX200D INC SI200E INC SI200F INC DI2010 INC DI 2011 DEC CX 2012 JNZ 2009 2014 INT 实验步骤:1、输入程序且检查无误;2、用G=2000运行程序; 显示:CS=0000 IP=2015 DS=0000 AX=0015 F=F2023、再用D3600 (回车),显示结果:0000:3600 00 01 0000: 3608 08 09实验一 数码转换程序设计及调试一、实验目的 1、掌握不同进制数及编码相互转换的程序设计,加深对数码的了解; 2、进一步熟悉调试程序的方法。二、实验仪器 DICE-8086B实验系统一台三、实验内容及步骤 计算机输入设备输入的信息一般是ASCII或BCD码表示的数据或字符,CPU处理信息一般均用二进制数进行计算或其它处理,处理结果输出的外设又必须依外设的要求变为ASClI码、BCD码或七段码等。因此,在应用软件中各类数据转换和代码转换是必不可少的。 计算机与外设间的数码转关系如图l-1所示,数码对应关系如表1-1所示:1将ASClI码表示的十进制数转换为二进制数 由式(2)可归纳十进制数转换为二进制的方法:从十进制数的最高位Dn开始作乘10加次位的操作,将结果再乘10再加下一个次数,如此重复,则可求出二进制结果来。程序流程图及参考程序如图1-2。这里我们规定:被转换的ASCII码十进制数存放在3500H3504H单元中,而转换结果存放在351OH3511H单元中。地址 助记符 注释2000 MOV SI,3500 ;源地首址 2003 MOV DI,3510 ;结果首址2006 MOV BX,000A 2009 MOV CX,0004 200C MOV AH,00200E MOV AL,BSI2010 SUB AL, 302012 IMUL BX 2014 ADD AL,BSI+012017 SUB AL,302019 INC SI201A LOOP 2012 ;转换完否201C MOV WDI,AX ;存结果201E INT ;停机 图1-2实验步骤: 输入程序并检查无误; 在3500H3504H单元存入十进制12的ASCII码,即E3500(回车),并输入:30 30 30 31 32 G=2000(回车),运行程序,并用Ctrl+C来中断程序返回监控状态; 用D3510来查看结果,应为:3510 0C 00; 反复试几组数考查程序的正确性。2. 将十进制数的ASCII码转换为BCD码设从键盘输人的五位十进制数为ASCII码已存放在3500H起始的内存单元内。把它转换成BCD码后,再按位分别存350AH起始的内存单元内。若输入的不是十进制数的ASCII,则对应存放结果的单元内容为“FF”。由表1-1可见,一字节ASCII码取其低四位即变为BCD码。程序如图1-3所示: 地址 助记符 注释 2000 MOV CX,0005 ;循环计数器赋初值2003 MOV DI,3500 ;ASCII码首址2006 M0V BL,FF ;错误标志送BL2008 MOV AL,BDI ;送ASCII码至AL200A CMP AL,3A ;比较AL与3A 200C JNB 2014 ;不低于3A则转2014200E SUB AL,30 ;低于3A则取ASCII码低四位2010 JB 2014 ;低于30则转20142012 MOV BL,AL ;否则AL内容送BL,取代FF2014 MOV AL,BL ;结果或错误标志送AL2016 MOV BDI+0A,AL2019 INC DI201A L00P 2006201C INT 图1-3实验步骤 : 输入程序并检查无误; 在3500H3504H单元中存入5位十进制数的ASCll码,即E3500(回车),并输入31、32、33、34、35; G=2000(回车),运行以上程序; D350A,显示结果为:0000:350A 0l 02 03 04 05 CC 反复试几组数,考查程序的正确性。3将十六位二进制数转换为ASCII码表示的十进制数十进制数的值域为065535,最大可转换为5位十进制数。算法:5位十进制数可表示为 ND=D4104+D3103+D2102+D1101+D0D:表示十进制数09。因此,将十六位二进制数转换为5位ASCII码表示的十进制数,就是求D1D4,将它化为ASCII码。程序流程图及参考程序如图1-4所示,设源数据存于3500H3510H单元中,结果数存于3510H3514H单元中。 地址 助记符 注释 2000 MOV DX,W3500;取二进制数 2004 MOV SI,3515 ;目标首址在3510H 2007 DEC SI 2008 MOV AX, DX 200A MOV DX, 0000 200D MOV CX, 000A 2010 DIV CX ;除lO 2012 XCHG AX,DX 2013 ADD AL,30 2015 MOV BSI, AL 2017 CMP DX,0000 201A JNE 2007 201C CMP SI,3510 ;填余下高位为0对 2020 JE 2029 ;应的ASCII码 2022 DEC SI 2023 MOV AL, 30 2025 MOV BSI, AL 2027 JMP 201C 2029 INT 图1-4实验步骤: 输入程序并检查无误; 在3500H3510H单元存放OC00,运行程序并检查结果,应看到3510H3514H单元中的数依次为30 30 30 31 32; 反复试几组数,并运行程序,观察结果。 4十六进制数转换为ASCII码 设经过CPU处理后的十六进制数存放在起始地址为3500H的内存单元中,把它们转换成ASCII码之后,再分别存入起始地址为350AH的内存单元中。 从表1-1中可知十六进制数加30H即可得到0H9H的ASCII码,而要得到AHFH的ASCII码,则需再加7H。程序流程图及参考程序如图1-5所示。地址 助记符 注释2000 MOV CX,0004 2003 MOV DI,35002006 MOV DX,WDI 2008 MOV AX,DX200A AND AX,000F ;取低四位值200D CMP AL,0A ;判是否09200F JB 2013 ;是O9转20132011 ADD AL,07 ;是AF加72013 ADD AL,30 ;转换为ASCII码2015 MOV BDI+0A,AL2018 INC DI2019 PUSH CX ;保护循环计数器内容201A MOV CL,04 ;移位次数送CL201C SHR DX,CL201E POP CX201F LOOP 20082021 INT 图1-5实验步骤: 输入程序并检查无误; 在3500H3510H单元中存入4位十六进制数203B,即:E3500(回车),并输入3B、20; D=2000(回车),运行以上程序; D350A(回车),显示结果为:0000:350A 42 33 30 32 CC输入数与结果ASCII码对应顺序相反; 反复试几组数,考查程序的正确性。 5BCD码转换为二进制码设四个二位十进制数的BCD码存放在起始地址为3500H的单元中,转换出的二进制数码存入起址为3510H的内存单元中,程序流程图及参考程序如图l-6所示:地址 助记符 注释2000 MOV CX,00042003 MOV DI, 35002006 MOV AL,BDI2008 ADD AL,AL ;乘2200A MOV BL, AL200C ADD AL,AL ;乘2200E ADD AL,AL ;乘22010 ADD AL,BL ;乘10201 INC DI2013 MOV AH, 002015 ADD AL,BDI ;BCD码十位与个位加2017 MOV WDI+0F,AX ;存结果201A INC DI201B LOOP 2006201D INT 图1-16实验步骤: 输入程序并检查无误; 在3500H3507H单元中存入四个十进制数(12,34,56,78)的BCD码,即:E3500(回车),输入01,02,03,04,05,06,07,08; G=2000(回车),运行以上程序; D3510(回车),显示结果为35lO OC 00 22 00 38 00 4E 00; 反复试几组数,考查程序的正确性。四、思考题 图1-2程序,将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少?最大可为多少?为什么? 将一个十六位二进制数转换为ASCII码十进制数时,如何确定D的值? 在十六进制数转换为ASCII码时,存转换结果后,为什么要把DX向右移四次? 自编ASCII码十六进制、十进制小数二进制、十进制BCD码的程序,并调试运行。实验二 运算类程序设计实验一、实验目的 掌握使用运算类指令编程及调试的方法; 掌握运算类指令对状态标志位的影响及其测试方法。二、实验设备 DICE-8086B实验系统一台三、实验内容及步骤8086/8088指令系统提供了实现加、减、乘、除运算的基本指令,可对表2-1所示的数据类型进行算术运算。 (一)加减运算1二进制双精度加法运算计算X+Y=Z,将结果Z存入某存贮单元。本实验参考程序及存贮单元分配如图2-1所示。地址 助记符 注释2000 MOV AX,W3500 ;X低位送AX2003 ADD AX,W35041 ;X低位加Y低位2007 MOV W3508,AX ;存低位和200A MOV AX,W3502 ;X高位送AX200D ADC AX,W3506 ;X高位加Y高位2011 MOV W350Al,AX ;存高位和2014 INT 图2-1 本实验程序是双精度(2个16位,即32位)运算,利用累加器AX,先求低16位和,并存入低地址存贮单元,后求高16位和,再存入高地址单元。由于低位和可能向高位有进位,因而高位字相加语句须用ADC指令,则低位相加有进位时CF=1,高位字相加时,同时加上CF中的1。 实验步骤: 输入实验程序并检查无误; 按存放单元分配图(图2-1)在3500H3507H单元中存入二进制数001565A0和0021B79E; G=2000(回车),运行以上程序; D3508(回车),显示计算结果:3508 3E 1D 37 00 C7 ; 反复试几组数,考查程序的正确性。2十进制数的BCD码相减运算计算X-Y=Z,其中X、Y、Z为BCD码。本实验程序流程图、参考程序及存贮单元分配如图2-2所示。地址 助记符2000 MOV AH,002002 SAHF2003 MOV CX,00022006 MOV SI,35002009 MOV DI,3510200C MOV AL,BSI200E SBB AL,BSI+022011 DAS2012 PUSHF2013 AND AL, OF2015 POPF2016 MOV BDI,AL2018 INC DI2019 INC SI201A LOOP 200C201C INT实验步骤: 输入实验程序并检查无误; E3500(回车),在3500H3503H单元中存入40和12的BCD码:00、04、02、01 G=2000(回车),运行以上程序; D35lO(回车),显示计算结果:3510 08 02 CC; 反复试几组数,考查程序的正确性。 (二)乘除运算 1考察乘法指令MUL、IMUL对状态标志位的影响乘法指令MUL、IMUL对状态标志CF、OF都是通过指令执行后最高位上产生进(借)位、出来影响的。图2-3我们具体给出了一个实验程序的流程图及参考程序,其设计思想是: 取3000H单元开始的10个无符号数,将其各自乘以2,若有溢出,显示“O”,有进位显示“C”,否则,只显示间隔符“,”,我们规定每一数相应的标志显示之间均用“,”来间隔.于是,我们就可以在数据区放各种试验数来考查乘法对标志的影响。 地址 助记符 注释2000 MOV SI,3000 ;源数据首址2003 MOV CX,000A ;数据个数2006 MOV BX ,0002 2009 MOV AX,WSI ;取数200B CLC200C IMUL BX ;乘2 200E JO 201E ;溢出转2010 JB 20222012 MOV AL,2C ;显示“,”2014 INC SI2015 INC SI2016 MOV AH,01 ;显示功能调用2018 INT 10201A LOOP 2009 ;完否201C JMP 201C ;停机201E MOV AL,4F ;显示”O”2020 JMP 20142022 MOV AL,43 ;显示“C”2024 JMP 20142026 INT 图2-3实验步骤: 输入实验程序并检查无误; 准备10个数存放到3000H3009H单元中。运行程序,观察显示结果并认真分析; 反复试几组数,观察结果; 用MUL指令代替IMUL指令,重复步骤 2考察除法指令DIV、IDIV以及ASCII码调整指令对标志的影响情况 除法指令DIV、IDIV执行后,不影响任何状态标志位而ASCII码调整指令会影响PF、SF、ZF对AF、CF、OF标志影响不确定。 本实验程序流程图及参考程序如图2-4所示,其设计思想是: 取3000H3009H单元中的五个无符号数,将其与101H除,若有溢出或进位,就分别显示“O”或“C”。在进行ASCII码转换后,若奇偶位为偶(PF=1),则显示“P”,为负(SF=1),则显示“S”。为了解每个数运算后对状态标志的影响,在每个数运算完后均显示“;”地址 助记符 注释2000 MOV SI,3000 2003 MOV CX,0005 2006 MOV DX,0000 2009 MOV AH,00 200B SAHF ;消标志位200C MOV AX,WSI ;取数200E MOV BX,0101 2011 DIV BX ;除101H 2013 AAD ;ASCII码调整2015 JO 2029 2017 JB 202D 2019 JP 2031 20lB JS 2035201D MOV AL,3B ;显示“;”20lF INC SI2020 INC SI2021 MOV AH,012023 INT 102025 LOOP 20062027 JMP 20272029 MOV AL,4F ;显示“O” 图2_4202B JMP 201F202D MOV AL,43 ;显示“C”202F JMP 201F2031 MOV AL,50 ;显示“P”2033 JMP 201F 2035 MOV AL,53 ;显示“S” 2037 JMP 201F 2039 INT 实验步骤: 输入程序并调通,在3000H3009H中填入5个16位数; 用DIV除法指令,判定它对CF、OF、PF、SF标志的影响,记录显示结果; 用IDIV除法指令代替DIV,执行程序,记录结果。 (三)开平方运算 80868088指令系统中有除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。 用减奇数法开平方 用减奇数法可求得近似平方根,获得平方根的整数部分。我们知道,N个自然数中的奇数之和等于N2,即:(2K-1)=N2 1+3+5=9=32 1+3+5+7=16=42 1+3+5+7+9+11+13+15=64=82若现要作S的运算,那么就可以从S中逐次减去自然数中的奇数1,3,5,7,一直进行到相减数为零或不够减下一个自然数奇数为止,然后统计减去自然数的奇数个数,它就是S的近似平方根。 设被开平方数为正整数,存放在3500H单元。程序流程图及参考程序见图2-5。地址 助记符 注释2000 MOV AX,W3500 ;取被开方数2003 MOV CL,00 ;清平方根2005 MOV DX,0001 ;奇数初值2008 SUB AX,DX ;减奇数200A JB 2013 ;不够则结束,存根200C INC CL ;够减,奇数个数计数200E ADD DX,02 ;形成下一个奇数2011 JMP 20082013 MOV B350A,CL ;存平方根2017 INT ;返回监控 图2-5 实验步骤: 输入程序并检查无误; 在3500H3501H单元中存入被开平方数0010,即 E3500(回车),输入lO、00; G=2000(回车),运行以上程序; D350A(回车),显示结果为:350A 04 0C CC; 反复试几组数,考察程序的正确性。四、思考题 编写有符号A1 B1+A2 B2的程序,A1 、A2、B1、B2均为符号数。 编写两个数值长度不等的BCD码相加的程序。 为什么乘法指令执行后,OF、CF同时为“1”或同时为“0”?有没有不同为“0”或不同为“1”的情况呢? 乘法指令

温馨提示

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

评论

0/150

提交评论