1632位微机原理与接口技术实验指导书

上传人:仙*** 文档编号:89291429 上传时间:2022-05-12 格式:DOC 页数:91 大小:3.04MB
收藏 版权申诉 举报 下载
1632位微机原理与接口技术实验指导书_第1页
第1页 / 共91页
1632位微机原理与接口技术实验指导书_第2页
第2页 / 共91页
1632位微机原理与接口技术实验指导书_第3页
第3页 / 共91页
资源描述:

《1632位微机原理与接口技术实验指导书》由会员分享,可在线阅读,更多相关《1632位微机原理与接口技术实验指导书(91页珍藏版)》请在装配图网上搜索。

1、第1章 汇编语言程序设计概述1.1 汇编语言开发环境1.1.1 实验设备硬件设备 PC机一台1.1.2 汇编语言开发环境1、DOS环境在计算机的任一逻辑盘上建一目录,把下面四个文件拷贝到该文件夹下。编辑软件EDIT.exe汇编软件MASM.exe连接程序LINK.exe调试程序DEBUG.exe例如在逻辑盘D下建一子目录MASM,把上述文件拷贝到该目录下。该目录在后面的汇编语言上机详细过程中还会用到。2、WINDOWS集成开发环境具体操作见第二章的2.1。1.1.3 汇编语言程序上机操作一般过程 首先要用编辑软件建立汇编语言的源程序文件。用汇编语言编写的源程序不能由计算机直接执行。须通过具有“

2、翻译”功能的系统程序汇编程序(Assembler)汇编产生相应的目标代码文件,再通过连接程序生成可执行文件,则可以用DEBUG上机调试或运行程序。编辑、汇编、连接、调试过程如图1-1所示。用汇编语言编写的程序叫源程序,源程序经汇编程序翻译后所得的机器指令代码称为机器语言目标程序,简称目标程序。图1-1 汇编语言程序上机过程1、编写汇编语言源程序将要解决的应用问题用汇编语言语句编写成程序,并建立扩展名为.asm的源程序文件。可任选一种编辑软件,来输入、建立或修改源程序。不要用格式控制符,要求编辑完成的文件扩展名必须是.asm。编辑源程序文件可任选下列软件的一款:WORD、写字板、书写器、EDIT

3、.COM、WP、行编辑软件EDLIN.COM等。2、汇编将汇编语言源程序翻译成机器语言程序的过程,即将*.ASM汇编语言源文件转换为*.obj文件。由系统软件汇编程序完成此翻译过程。汇编程序有ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088至Pentium系列CPU指令系统所编写的汇编语言程序,是比较先进的汇编工具。3、连接将不可执行的二进制文件转换为可执行文件,即将*.obj文件转换为*.EXE文件。完成连接的程序有LINK.EXE或TLINK.EXE,将汇编产生的机器代码程序(即.OBJ文件)连

4、接成可执行程序文件(即.EXE文件)。4、程序调试(DEBUG)进行汇编语言程序调试和文件格式转换。常用软件调试工具有:动态调试程序DEBUG.COM、文件格式转换程序EXE2BIN.EXE、交叉引用程序CREF.EXE、动态调试程序TD(turbo Debugger简称),可在DOS和Windows环境下运行,用户界面友好。1.2 汇编语言实验过程详细步骤1.2.1 DOS环境实验过程详细步骤1、建立源程序运行任选一款编辑软件,输入源程序。保存源程序文件,且扩展名为.ASM。2、汇编 用编辑软件建立的源程序.ASM文件,必须经过汇编才能产生.OBJ文件。在Windows环境下,点击屏幕左下角

5、的“开始”“所有程序”“附件”“命令提示符”, 键入D: 并回车,再键入cd masm并回车,则显示如图1-2所示:图1-2 命令提示符窗口在D:masm提示符下键入MASM并回车,则在屏幕上显示: Microsoft(R) Macro assemble Version 5.00 Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reservedSource filename .ASM:输入要汇编的汇编语言源程序文件名,并回车,则屏幕显示:OBJ filename.obj:直接键入回车,则生成中括号中指定文件名的.obj文件;也可以在上

6、述输入自己的文件名后再键入回车,则生成自己指定文件名的.obj文件。然后屏幕显示: Source listingnul.lst: 直接键入回车,则不生成.lst文件;若要生成.lst文件,则键入一个文件名后键入回车,屏幕显示: Cross-referencenul.crf:直接键入回车,则不生成.crf文件;若要生成.crf文件,则键入一个文件名后键入回车,屏幕显示: 49748 + 451356 Bytes symbol space free 0 Warning Errors 0 Severe ErrorsD:masm说明:通过上述汇编后生成以下几个文件。(1).OBJ文件.OBJ文件是必须

7、生成的一个目标代码文件,当源程序中无语法错误时,则在当前工作盘上自动存入一个.OBJ文件,供下一步连接用。若源程序有语法错误时,会出现错误信息提示:文件名.ASM(12): error A2009: Symbol not defined: AX1文件名.ASM(15): error A2009: Symbol not defined: BRANCH1 50824 + 450280 Bytes symbol space free 0 Warning Errors (警告错误) 2 Severe Errors (严重错误)D:masm上述有两行错误信息,错误信息格式是:源程序文件(行号): 错误信

8、息代码 : 错误信息说明若严重错误总数不为0,则.OBJ文件没有生成,需回到编辑状态下修改汇编源程序,并重新汇编,如此往复,直到无错误为止。(2).LST文件(列表文件).LST文件对调试程序有帮助,它是将源程序中各语句及其对应的目标代码和符号表以清单方式列出,如果需要,在屏幕显示的第二个提问的冒号后输入文件名即可,如果不需要,直接按回车键。(3).CRF文件(交叉引用文件)交叉引用.CRF文件给出了源程序中定义的符号引用情况,按字母顺序排列。.CRF文件不可显示,须用CREF.EXE系统程序将.CRF文件转换成为.REF文件后方可显示输出。若按后一种格式输入,系统会依次出现四个提示信息,比第

9、一种格式多了一项源程序文件名的输入。应答方式与第一种格式相同。3、连接目标程序 汇编后生成的.OBJ文件,其目标代码中的所有地址都是浮动的偏移地址,机器不能直接运行。必须用连接程序(LINK.EXE)对其进行连接装配定位,产生.EXE可执行文件,方可运行。在系统提示符(D:masm)下键入LINK ,并回车,屏幕上出现以下提示信息: Microsoft (R) Overlay Linker Version 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.Run File .EXE:缺省情况下,生成以源程序文件名(即

10、方括号中的默认值)的可执行文件。如果不修改可执行文件的文件名,则直接键入回车;否则,键入可执行文件的文件名,并回车,则生成的可执行文件以该文件名为名字。屏幕显示: List File NUL.MAP: Libraries .LIB:连续键入回车后,返回系统提示符。连接后,可生成两种文件:.EXE和.MAP。(1).EXE文件(可执行文件)若连接过程中无错误,则自动在当前工作盘生成.EXE文件。若有错误,则会给出错误信息提示,这时必须重新修改源程序,再汇编、连接。(2).MAP(连接映像文件)是一个列表清单文件,一般不用生成。(3).LIB库文件连接程序询问是否使用某种库文件,不需使用库文件直接

11、按回车键。(4)若要连接多个模块目标程序,可用“+”把它们连接起来。在系统提示符下键入下列LINK命令并回车:D:MASMLINK files1+files2+files3屏幕显示同LINK一个模块目标程序一样。4、调试和运行程序经过汇编、连接后生成的.EXE文件,可在DOS系统直接运行,只要键入可执行文件的文件名,并回车即可。例如:D:MASMDOS的COMMAND.COM模块将该程序装配到内存,并设置和分配启动地址。也可在DEBUG调试程序下运行。如何用DEBUG程序来运行和调试程序将在DEBUG调试程序中详细讨论。5、DEBUG调试程序 DEBUG.EXE程序是专门为开发汇编语言程序而设

12、计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。它能使程序设计人员或用户触及到机器内部,因此可以说它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。6、DEBUG程序使用在DOS系统提示符下键入命令并回车: D:masmDEBUG 盘符:路径文件名.EXE这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG进行程序调试。若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS系统把DEBUG程序调入

13、内存后,再由DEBUG将指定可执行文件装入内存。7、DEBUG常用命令简介(1)汇编命令 A格式:A 起始地址功能:将输入源程序的指令汇编成目标代码并从指定地址单元开始存放。若缺省起始地址,则从当前CS:100地址开始存放。A命令按行汇编,主要是用于小段程序的汇编或对目标程序的修改。(2)反汇编命令 U 格式1:U 起始地址 格式2:U 起始地址 结束地址 字节数 功能:格式1从指定起始地址处开始将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。 格式2将指定范围的内存单元中的目标代码转换成汇编指令。(3)显示、修改寄存器命令 R格式:R 寄存器名功能:若给出

14、寄存器名,则显示该寄存器的内容并可进行修改。缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。例如:-RAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=0B03 ES=0B03 SS=0B03 CS=0B03 IP=0100 NV UP EI PL NZ NA PO NC -R AX ;输入命令 AX 0000 ;显示AX的内容 : ;供修改,直接键入AX新值并回车;若不修改,则直接键入回车。若对标志寄存器进行修改,在DEBUG提示符下键入R F,并回车。例如:-R F NV UP DI PL

15、 NZ NA PO NC 屏幕显示如上信息,分别表示OF、DF、IF、SF、ZF、AF、PF、CF的状态。不修改按回车键。要修改,则个别输入一个或多个此标志的相反值,再按回车键。R命令只能显示、修改16位寄存器。(4)显示存储单元命令 D格式1:D 起始地址格式2:D 起始地址 结束地址 字节数功能:格式1从起始地址开始按十六进制显示80H个单元的内容,每行16个单元,共8行,每行右边显示16个单元的ASCII码,不可显示的ASCII码则显示“”。格式2显示指定范围内存储单元的内容,显示方式与格式1一样。如果不写起始地址或地址范围,则从当前地址开始按格式1显示。例如,键入D 200并回车,屏幕

16、显示如下:-D 2000B03:0200 43 46 49 FE C4 8A 07 3C-20 74 01 AA 43 E2 BC C3 CFI.!.0B03:0250 80 75 53 F6 46 04 04 74-4D 8B 56 05 80 FA 00 74 .uS.F.tM.V.t0B03:0260 05 80 FE 3A 74 02 B2 40-80 CA 20 80 EA 60 E8 3C .:t. .0B03:0270 E4 73 06 E8 47 DB E9 75-D8 8B D5 83 C2 05 8A 7E .s.G.u.表示从DS:0200H开始显示128个单元内容,其中

17、DS值不同的计算机环境其值不同。-D 100 120;表示显示DS:0100-DS:0120单元的内容说明:在DEBUG中,地址表示方式有如下形式: 段寄存器名:相对地址,如:DS:100段基值:偏移地址(相对地址),如:23A0:1500(5)修改存储单元命令 E格式1:E 起始地址 内容表格式2:E 地址功能:格式1按内容表的内容修改从起始地址开始的多个存储单元内容,即用内容表指定的内容来代替存储单元当前内容。例如:E DS:0100 VAR 12 34表示从DS:0100 为起始单元的连续五个字节单元内容依次被修改为V、A、R、12H、34H。格式2是逐个修改指定地址单元的当前内容。例如

18、:E DS:0010156F:0010 41.5F其中156F:0010单元(注意:不同计算机环境DS值不一定是156F)原来的值是41H,5FH为输入的修改值。若只修改一个单元内容,这时按回车键即可;若还想继续修改下一个单元内容,则应按空格键,就显示下一个单元内容,需修改就键入新内容,不修改再按空格跳过,如此重复直到修改完毕,按回车键返回DEBUG“-”提示符。如果在修改过程中,将空格键换成按“-”键,则表示可以修改前一个单元内容。(6)运行命令 G格式:G=起始地址 第一断点地址 第二断点地址功能:CPU从指定起始地址开始执行,依次在第一、第二等断点处中断。若缺省起始地址,则从当前CS:I

19、P指示地址开始执行一条指令。最多可设置10个断点。(7)跟踪命令 T格式:T 起始地址 正整数功能:从指定地址开始执行正整数条指令,若缺省正整数,表示执行一条指令,若两项都缺省,表示从当前CS:IP指示地址开始执行一条指令。(8)指定文件命令 N格式:N 功能:指定即将调入内存或从内存写入磁盘的文件名。该命令应该用在L命令和W命令之前。(9)装入命令 L格式1:L 起始地址 盘符号扇区号扇区数格式2:L 起始地址功能:格式1根据盘符号,将指定扇区的内容装入到指定起始地址的存储区中。格式2将N命令指定的文件装入到指定起始地址的存储区中,若省略起始地址,则装入到CS:100处或按原来文件定位约定装

20、入到相应位置。(10)写磁盘命令 W格式1:W 驱动器号格式2:W 起始地址功能:格式1把指定地址开始的内容数据写到磁盘上指定扇区中。格式2将起始地址的BX10000H+CX个字节内容存放到由N命令指定的文件中。在格式2的W命令之前,除用N命令指定存盘文件名外,还必须将要写的字节数用R命令送入BX和CX中。(11)退出命令 Q格式:Q功能:退出DEBUG,返回到操作系统。1.2.2 其他Debug调试命令DEBUG调试的其他命令见表 1-1,请参考有关书籍。表1-1 DEBUG常用命令名称含义命令格式A(Assemble)逐行汇编AaddressC(Compare)比较两内存块C range

21、addressD(Dump)显示内存单元(区域)内容DaddressDrangeE(Enter)修改内存单元(区域)内容E address listF(Fill)填充内存单元(区域)F range listG(GO)连续执行程序G=address addressH(Hexarthmetic)两参数进行十六进制运算H Value ValueI(Input)从指定端口地址读取并显示一个字节值I port addressL(Load)装入某个文件或特定磁盘扇区的内容到内存LaddressM(Move)将内存块内容复制到另一个内存块M range rangeN(Name)指定要调试的可执行文件参数Nd

22、:pathfilename.exeO(Output)将字节值发送到输出端口O port address byteQ(Quit)退出DEBUGQR(Register)显示或修改一个或多个寄存器内容Rregister nameS(Search)在某个地址范围搜索一个或多个字节值S range listT(Trace)单步多步跟踪T or TaddressValueU(Unassmble)反汇编并显示相应原语句Uaddress or UrangeW(Write)文件或数据写入特定扇区Waddressdrive sector sector ?显示帮助信息?第2章 80X86汇编语言实验内容1.实验设备

23、硬件:PC计算机一台;软件,汇编软件2.实验目的(1)熟悉汇编语言程序设计方法;(2)熟悉汇编程序调试过程;(3)掌握使用数据传送、运算类、转移等指令编程及调试方法。(4)掌握顺序结构、分支结构、循环结构和子程序调用的编程方法。3.实验及实验报告要求(1)编程、调试、运行、检查结果,并记录要求:对程序反复输入几组数据,并运行程序,记录结果。(2)实验报告要求实验报告中应包含实验内容、源程序、实验步骤、运行结果、结果分析是否正确及存在的问题。2.1 系统认识实验2.1.1 实验目的 掌握微型计算机汇编软件调试汇编源程序的基本操作。熟悉传送类指令、简单运算类指令来编写汇编语言源程序,掌握调试过程及

24、实验结果分析。4.1.2 实验内容 1、从3500H内存单元开始建立015共16个数据(建立的数据为00H,01H09H.0AH0FH)。并运行之,检查记录结果。(1)分析3500H为偏移地址,对应的段基址采用默认的DS当前值; 程序中,如果不涉及到堆栈,则堆栈段可省略。(2)实验程序DATA SEGMENT ORG 3500H ;设定起始偏移地址,如果没有该语句,默认的偏移地址为0000HMEM1 DB 16 DUP(?)DATA ENDSCODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATASTART: MOV AX, DATAMOV DS,AXMOV DI,

25、3500H ;程序开始设数据区首址 MOV CX,0010H ;字节数送入CX中MOV AH, 00H ;SAHF ; 清标志寄存器指令MOV AL, 00HA1:MOV DI,AL ;写入一字节INC DI ;修改地址指针INC AL ;修改数据LOOP A1;未填完转移CODE ENDS ;代码段结束 END START ;程序结束2、如果1-1题建立的数据为BCD码表示的十进制数据(即建立的数据为00H,01H09H,10H15H),修改上述程序并调试运行,检查记录结果。提示:BCD运算,是二进制编码的十进制运算,使用指令ADD和DAA或INC和DAA共同完成,仅能使用AL进行运算。例如

26、: 15+28进行运算,编程如下:MOV AL,15H ;15H是15的BCD码表示ADD AL,28H ;28H是28的BCD码表示,这里完成15H+28H=3DH运算 DAA ;将AL中的结果3DH调整为BCD码,结果为43H3、编程完成的求和运算。调试运行程序,并记录运算结果。4、将内存3500H单元开始存放的09共10个字节数传递到3600H单元开始的数据区中(可分同一段内传送和段间专送)。提示:该程序应该编写数据段,从3500H开始存放09共10个数;从3600定义10个字节单元,准备接收数据。数据段定义如下:DATA SEGMENT ORG 3500HMEM1 DB 0,1,2,3

27、,4,5,6,7,8,9 ORG 3600HMEM2 DB 10 DUP(?)DATA ENDS思考题:(1)如果上述数据段定义中没有ORG语句,则从什么内存地址开始存放数据?(2)如果采用字数据传送,请修改程序,并调试运行程序,记录运行结果。(3)如果采用串传送指令(MOVSB,MOVSW),请修改程序,并调试运行程序,记录运行结果。提示:如果使用MOVSB,MOVSW指令,要将原始数据串的段基地址放入DS寄存器,接收数据的目的串段基地址放入ES寄存器,可以使DS与ES设置成同一个段基址(即逻辑段重叠);也可以设置成不同逻辑段,即数据段和附加数据段。4.1.3 实验步骤以实验内容1为例实验步

28、骤如下。实验内容2、3、4请自行依照实验步骤完成调试并记录实验结果。第1步 输入源程序打开WINDOWS环境下的汇编开发环境,输入源程序。在桌面上双击快捷方式图标“Masm for Windows 集成实验环境”。出现下面界面,其中右侧是源程序模板,如图2-1:按提示输入编写好的源程序。图2-1 汇编源程序模板图2-1 说明:在右侧窗口给出了段结构模板,根据模板输入源程序。模板中的段名可以自己修改定义,没有涉及到的段可省略不写。输入汇编语言源程序后,保存程序(规定扩展名为.ASM),使用ALT+X返回集成软件环境。输入源程序后,如图2-2所示。图2-2 输入源程序后界面第2步:汇编 编译/汇编

29、成目标文件,点击运行菜单下“编译成目标文件(OBJ)”,等待系统汇编,汇编成功后,汇编信息显示于屏幕下面的窗口中,显示编译成功。如图2-3所示。则可进行第3步。如果显示错误提示信息,则返回第1步修改源程序后在汇编,直到无错误为止。图2-3 编译/汇编命令第3步:连接连接生成可执行文件。点击运行菜单下“生成可执行文件(EXE)”,等待系统对汇编生成的.obj文件进行连接,连接成功后,生成相应的可执行文件(.EXE),信息显示于屏幕下方的窗口上,如图2-4所示。如果连接成功,显示生成*.EXE文件成功,进行下一步DEBUG调试。否则,返回第1步,修改源程序,再汇编、连接,直到无错误信息为止。图2-

30、4 连接命令及连接成功后的信息显示第4步:在DEBUG调试环境下进行程序的调试过程通过DEBUG调试可以检查程序每一条指令及程序执行结果,以便查错和纠错。单击运行菜单下的“DEBUG调试”命令,则进入DEBUG调试环境,并将上述生成的可执行文件自动装入内存。如图2-5所示。图 2-5 debug 调试环境窗口(1)反汇编首先要确定你装入的程序在内存的位置,可通过反汇编来确定。反汇编是显示装入内存的汇编语言程序及其机器指令在内存的情况,在DEBUG命令提示符“-”下键入U并回车,操作过程如下。-U 回车 ;从当前IP指令指针开始反汇编。即刚装入内存的指令开始反汇编;或者-U 0000回车;从起始

31、偏移地址0000H开始反汇编,即刚装入内存的指令开始反汇编。上述两种格式的命令功能一样,反汇编结果如图2-6所示。-u0EB2:0000 B8610B MOV AX,0B610EB2:0003 8ED8 MOV DS,AX0EB2:0005 BF0035 MOV DI,35000EB2:0008 B91000 MOV CX,00100EB2:000B B400 MOV AH,000EB2:000D 9E SAHF0EB2:000E B000 MOV AL,000EB2:0010 8805 MOV DI,AL0EB2:0012 47 INC DI0EB2:0013 FEC0 INC AL0EB2

32、:0015 E2F9 LOOP 00100EB2:0017 B44C MOV AH,4C0EB2:0019 CD21 INT 210EB2:001B 67 DB 670EB2:001C 7261 JB 007F0EB2:001E 6D DB 6D0EB2:001F 2E CS:0EB2:0020 0D0A0D OR AX,0D0A-图2-6 反汇编结果图2-6说明:v 键入U命令后,屏幕显示刚装入的汇编程序;v 当源程序较长时,再次键入 U并回车,继续显示后面的程序,直到屏幕上出现该调试程序的结尾语句,例如上述的INT 21,其后的语句不是本程序的;v 在反汇编出来的程序中,符号地址已经用当前

33、内存的实际地址表示,段寄存器已经装入了具体的段基址;v 数据和地址全部用十六进制表示,省略H不显示;v 第1、2列,为程序装入内存所在的物理地址,用逻辑地址形式表示,即 段基地址:偏移地址。注意:不同计算机的软硬件环境不同,装入内存的物理地址可能会不同;v 第3列,为汇编语言指令语句对应的机器代码,4、5列为其助记符指令,但所有的符号都用实际地址或值表示;v 第110行为你所编写的程序。注意:你自己程序的结束语句:1B3C:0017 B44C MOV AH,4C1B3C:0019 CD21 INT 21该指令之后的指令,为内存驻留的其他内容,与你的程序没有关系。(2)运行程序 确定你的程序在内

34、存中的位置后,就可以运行程序了。运行程序可以用三种方式:单步运行、设断点运行、连续运行等方式,具体操作如下。a.单步运行单步运行是每运行一条指令后显示当前所有寄存器的内容及下一条待执行指令。在“-”提示符下键入T=0000并回车,表示从偏移地址0000H开始执行一条语句。屏幕显示CPU所有寄存器的内容,你仅查看与你程序有关寄存器的结果,在这里,第一条指令的结果为:AX=0B61H,屏幕显示结果如图2-7所示。继续执行下一条指令,在“-”提示符下键入 T 并回车,再执行一条指令;反复键入T命令,就可一步一步地运行,直至程序最后一条语句为止。如图2-8所示。-t=0000AX=0B61 BX=00

35、00 CX=352B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B51 ES=0B51 SS=0B61 CS=0EB2 IP=0003 NV UP EI PL NZ NA PO NC0EB2:0003 8ED8 MOV DS,AX-图 2-7单步调试-t=0000AX=0B61 BX=0000 CX=352B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B51 ES=0B51 SS=0B61 CS=0EB2 IP=0003 NV UP EI PL NZ NA PO NC0EB2:0003 8ED8 MOV D

36、S,AX-tAX=0B61 BX=0000 CX=352B DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=0B61 ES=0B51 SS=0B61 CS=0EB2 IP=0005 NV UP EI PL NZ NA PO NC0EB2:0005 BF0035 MOV DI,3500-tAX=0B61 BX=0000 CX=352B DX=0000 SP=0000 BP=0000 SI=0000 DI=3500DS=0B61 ES=0B51 SS=0B61 CS=0EB2 IP=0008 NV UP EI PL NZ NA PO NC0EB2:0008 B9

37、1000 MOV CX,0010-tAX=0B61 BX=0000 CX=0010 DX=0000 SP=0000 BP=0000 SI=0000 DI=3500DS=0B61 ES=0B51 SS=0B61 CS=0EB2 IP=000B NV UP EI PL NZ NA PO NC0EB2:000B B400 MOV AH,00-图 2-8反复单步调试b连续运行在“-”提示符下键入G=0000V0017并回车(系统默认段基址CS情况下,可不写段基址),该命令表示从偏移地址0000开始连续执行到0017结束。屏幕显示如图2-9所示。 -g=0000 0017AX=0010 BX=0000

38、CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=3510DS=0B61 ES=0B51 SS=0B61 CS=0EB2 IP=0017 NV UP EI PL NZ AC PO NC0EB2:0017 B44C MOV AH,4C-图 2-9连续执行一段程序图2-9显示了执行到0016H,停止在0017H时CPU各寄存器的值,最后一行显示暂停执行的语句。(3)内存单元内容显示 程序结束后,使用D命令可以查看某内存区域的内容。在DEBUG系统提示符“-”下键入D DS:3500并回车可查看0B61 :3500H单元开始的内存单元数据。其中0B61是DS的内容

39、,在命令中也可以直接输入数据段基址值,3500是DI的内容。内存内容显示时,每行16个字节,用16进制表示,前8个字节和后8个字节用“-”区分。图 2-10所示,其中0B61:3500350F是本程序运行结果。-d ds:35000B61:3500 00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F .0B61:3510 B8 61 0B 8E D8 BF 00 35-B9 10 00 B4 00 9E B0 00 .a.5.0B61:3520 88 05 47 FE C0 E2 F9 B4-4C CD 21 67 72 61 6D 2E .G.L.

40、!gram.0B61:3530 0D 0A 0D 0A 47 4F 54 4F-20 6C 61 62 65 6C 0D 0A .GOTO label.0B61:3540 0D 0A 8A 20 20 6C 61 62-65 6C 20 20 20 53 70 65 . label Spe0B61:3550 63 69 66 69 65 73 20 61-20 74 65 78 74 20 73 74 cifies a text st0B61:3560 72 69 6E 67 20 75 73 65-64 20 69 6E 20 74 68 65 ring used in the0B61:35

41、70 20 62 61 74 63 68 20 70-72 6F 67 72 61 6D 20 61 batch program a-图 2-10 内存单元显示(4)内存单元内容的修改 若要修改内存单元内容,使用E命令。可进行如下操作,例如,将内存35003507单元的内容修改为FFH,在DEBUG系统提示符“-”下键入E DS:3500并回车,如图2-11所示。修改过程:首先显示3500单元原来内容00.,键入新内容FF,按空格键显示下一单元(3501单元)内容00.,键入新内容FF,如此往复。若要推出修改,按回车键。用D命令查看已修改内存单元内容,看看内容是否已有变化。屏幕显示如图2-11

42、所示。-d ds:35000B61:3500 00 01 02 03 04 05 06 07-08 09 0A 0B 0C 0D 0E 0F .0B61:3510 B8 61 0B 8E D8 BF 00 35-B9 10 00 B4 00 9E B0 00 .a.5.0B61:3520 88 05 47 FE C0 E2 F9 B4-4C CD 21 67 72 61 6D 2E .G.L.!gram.0B61:3530 0D 0A 0D 0A 47 4F 54 4F-20 6C 61 62 65 6C 0D 0A .GOTO label.0B61:3540 0D 0A 8A 20 20 6

43、C 61 62-65 6C 20 20 20 53 70 65 . label Spe0B61:3550 63 69 66 69 65 73 20 61-20 74 65 78 74 20 73 74 cifies a text st0B61:3560 72 69 6E 67 20 75 73 65-64 20 69 6E 20 74 68 65 ring used in the0B61:3570 20 62 61 74 63 68 20 70-72 6F 67 72 61 6D 20 61 batch program a-e ds:35000B61:3500 00.FF 01.FF 02.F

44、F 03.FF 04.FF 05.FF 06.FF 07.FF-d ds:35000B61:3500 FF FF FF FF FF FF FF FF-08 09 0A 0B 0C 0D 0E 0F .0B61:3510 B8 61 0B 8E D8 BF 00 35-B9 10 00 B4 00 9E B0 00 .a.5.0B61:3520 88 05 47 FE C0 E2 F9 B4-4C CD 21 67 72 61 6D 2E .G.L.!gram.0B61:3530 0D 0A 0D 0A 47 4F 54 4F-20 6C 61 62 65 6C 0D 0A .GOTO labe

45、l.0B61:3540 0D 0A 8A 20 20 6C 61 62-65 6C 20 20 20 53 70 65 . label Spe0B61:3550 63 69 66 69 65 73 20 61-20 74 65 78 74 20 73 74 cifies a text st0B61:3560 72 69 6E 67 20 75 73 65-64 20 69 6E 20 74 68 65 ring used in the0B61:3570 20 62 61 74 63 68 20 70-72 6F 67 72 61 6D 20 61 batch program a-图 2-11

46、E命令修改内存单元内容(5)程序运行结束,请分析和记录运行结果。2.2 顺序程序设计实验2.2.1 实验目的 掌握汇编语言顺序结构源程序的编写,掌握调试过程及实验结果分析。2.2.2 实验内容 1、自内存TABLE开始连续16个单元中存放着015的平方值(即平方表),查表求任意数X(0 X 15)的平方值,并存入内存RESULT单元。请编写程序,调试运行程序并记录结果。2、编程完成表达式计算 Z=3x+4y-4,其中x、y为字节单元,z为字单元。调试运行程序并记录结果。(1)提示:如果用字节乘法指令,例如可定义数据段及乘法语句如下:DATA SEGMENTX DB 4Y DB 5Z DW ?D

47、ATA ENDS.MOV AL,XMOV BL,3MUL BL;结果为:AX=AL*BL,AX存放结果(2)如果x、y为字单元,z为双字单元,,请修改程序,调试运行程序并记录结果。3、现有两个多字节压缩BCD码数9876543219H和1234567891H,它们分别按低位字节在前高位字节在后存放在内存A1和A2开始的单元中,分别计算它们的和与差,并将结果分别存放在内存SUM和DEF开始的单元中。2.2.3 实验步骤1、根据实验内容,编写汇编语言源程序;2、上机调试和运行程序;3、分析并记录运行结果。2.3 分支程序设计实验2.3.1 实验目的 掌握汇编语言分支结构源程序的编写,掌握调试过程及

48、实验结果分析。2.3.2 实验内容 1、编写程序,计算下面函数的值。调试运行程序并记录运行结果。2、在在内存DATA1开始连续100个单元中存放100位同学某门课的考试成绩(0100),请编写程序统计大于等于90,8089分,7079分,6069分,小于60分的各分数段学生人数,分别存放在内存同一数据段从DATA2开始的5个单元中。调试运行程序并记录运行结果。提示:先建一个数据段存放100位学生的考试成绩,并预留5个单元用来存放各分数段学生人数;取每位学生成绩放入AL并依次与90、80、70、60进行比较。因是无符号数,所以可用CF标志作为分支条件,相应指令为JC;根据每次比较确定成绩所在范围

49、,用INC指令将存放相应结果单元的内容加1;因为学生和成绩都没有超过一个字节所能表示的范围,故所定义的变量均为字节类型;因每次只能处理一个学生的成绩,所以要通过一个循环来处理100位学生的成绩。2.3.3 实验步骤1、根据实验内容,编写汇编语言源程序;2、上机调试和运行程序;3、分析并记录运行结果。2.4 循环程序设计实验2.4.1 实验目的 掌握汇编语言循环结构源程序的编写,掌握调试过程及实验结果分析。2.4.2 实验内容 1、从内存BUFFER单元开始存放若干个字节数据,求其中负数的个数并存入MDAT单元中。请编写程序,调试运行程序并记录结果。2、从内存BUFFER单元开始存放若干个字数据

50、,求出其中正数的个数并存入PDAT单元中。请编写程序,调试运行程序并记录结果。3、求一批无符号字节数的最小值,放入MDATA单元。请编写程序,调试运行程序并记录结果。4、求一批有符号字数据中的最大值和最小值,分别存入MDATA单元和NDATA单元。请编写程序,调试运行程序并记录结果。2.4.3 实验步骤1、根据实验内容,编写汇编语言源程序;2、上机调试和运行程序;3、分析并记录运行结果。2.5 子程序设计实验2.5.1 实验目的 掌握汇编语言主、子结构源程序的编写,掌握调试过程及实验结果分析。2.5.2 实验内容 1、某程序中需要对N个元素的数组求和。完成数组N个元素求和设计为属性是NEAR的

51、过程。且过程与主程序在同一代码段。请编写主子程序,调试运行程序并记录运行结果。提示:主程序中将入口参数直接定义到一个数据段里,子程序从该数据段内存单元读取入口参数,子程序执行结果(返回参数)直接写入内存单元。2.5.3 实验步骤1、根据实验内容,编写汇编语言源程序;2、上机调试和运行程序;3、分析并记录运行结果。2.6 字符串处理程序实验2.6.1 实验目的 掌握汇编语言字符串处理源程序的编写,掌握调试过程及实验结果分析。2.6.2 实验内容 1、已知从DS:2200H,ES:3200H单元起分别存放20个ASCII码字符。找出这两个字符串中第一个不同字符的位置(段内偏地址),并放入DS:22

52、A0H开始的连续两个单元中。要求:(1)使用比较指令(CMP)实现;(2)使用数据串比较指令(CMPSB)实现。请别写程序,调试运行程序并记录结果。2、在数据区2000H开始100字节范围内,查找字符A,若找到,则将偏移地址送入DX,没有找到,则-1送DX。请编写程序,调试运行程序并记录结果。3、实现两个字符串比较。若完全相同,则显示“MATCH”;否则,显示“NOMATCH”。程序流程图如图2-12所示。请编写程序,调试运行程序并记录运行结果。图2-12 两个字符串比较流程图2.6.3 实验步骤1、根据实验内容,编写汇编语言源程序;2、上机调试和运行程序;3、分析并记录运行结果。2.7 数制

53、转换实验2.7.1 实验目的 掌握数制转换的基本方法及汇编语言源程序的编写,掌握调试过程及实验结果分析。2.7.2 实验内容 1、将给定的一个二进制数转换成二十进制(BCD)码。编写程序,调试运行程序并记录运行结果。提示:百位数的程序流程图如图2-13所示。图2-13 二进制数转换为BCD码数流程图2、给出一个BCD数,将其转换成ASCII码值。编写程序,调试运行程序并记录运行结果。提示:了解数值的BCD码和ASCII码的区别,利用查表功能可能快速地进行数值转换。进一步了解数值的各种表达方式。程序流程图如图2-14所示。图2-14 BCD码数转换为ASCII码程序流程图2.7.3 实验步骤1、

54、根据实验内容,编写汇编语言源程序;2、上机调试和运行程序;3、分析并记录运行结果。2.8 DOS功能调用实验2.8.1 实验目的 掌握汇编语言中DOS功能的调用方法及源程序编写,掌握调试过程及实验结果分析。2.8.2 实验内容 1、调用DOS功能,在屏幕上显示 09.。编写程序,调试运行程序并记录运行结果。2、调用DOS功能,在屏幕上显示 0+1+2+3+4+5+6+7+8+9的结果。编写程序,调试运行程序并记录运行结果。3、编写程序完成从键盘上输入一字符串到输入缓冲区,然后将输入的字符串在显示器上以相反顺序显示。调试运行程序并记录运行结果。提示:先按0AH号、9号功能要求定义输入输出缓冲区,

55、调用0AH号功能输入字符串到BUFA缓冲区,通过一段循环程序将输入缓冲区的字符按相反顺序传送到输出缓冲区BUFB中,再通过调用9号系统功能显示输出。2.8.3 实验步骤1、根据实验内容,编写汇编语言源程序;2、上机调试和运行程序;3、分析并记录运行结果。2.9 汇编程序设计综合实验2.9.1 实验目的 利用汇编语言进行综合编程能力的训练,编写综合性的汇编语言源程序,掌握调试过程及实验结果分析。2.9.2 实验内容 1、先显示信息“INPUT STRING,THE END FLAG IS ”再接收字符。如为09的数字,则计数器加1,并显示数字,如为非数字,则直接显示,但不计数。编写程序,调试运行

56、程序并记录运行结果。提示:程序流程图如图2-15所示。图2-15 数字和字符显示程序流程图2.9.3 实验步骤1、根据实验内容,编写汇编语言源程序;2、上机调试和运行程序;3、分析并记录运行结果。第3章 微机接口教学实验系统3.1 微机接口实验系统简介微机接口实验系统由西安唐都科教仪器公司开发的TD-PITE实验装置,由I386EX系统板和实验接口平台组成,构成独立32位微机系统,通过USB口与PC微机相连。Intel 386SX微处理器内部为32位总线,外部为16位数据总线,具有64MB的寻址能力,与标准的32位80386CPU有相同的指令系统。微机接口实验平台提供丰富的实验单元,如中断控制

57、器8259、DMA控制器8237、定时/计数器8254、并行接口8255、串行通信接口8251、SRAM、FLASH ROM、ADC0809、DAC0832、单次脉冲、键盘扫描及数码管显示、开关输入及发光管显示、电子发声器、点阵LED显示、图形LCD显示、步进电机、直流电机及温度控制单元电路。3.1.1 微机接口实验系统硬件结构微机接口实验系统的硬件结构如图3-1所示。图 3-1 微机接口实验系统的硬件结构微机实验装置布局如图3-2所示图3-2 微机实验装置布局1、系统配置微机接口实验系统的配置如表3-1所示。表3-1 微机接口实验系统的主要配置项目内容数量项目内容数量最小系统I386EX系统板1面包板1基本接口芯片82541键盘44键阵182551数码显示共阴极数码管482371电子音响扬声器182511单次脉冲微动开关2DAC08321逻辑开关拨动开关16ADC08091显

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!