《汇编语言程序设计》.docx

上传人:小飞机 文档编号:4928009 上传时间:2023-05-24 格式:DOCX 页数:32 大小:320.46KB
返回 下载 相关 举报
《汇编语言程序设计》.docx_第1页
第1页 / 共32页
《汇编语言程序设计》.docx_第2页
第2页 / 共32页
《汇编语言程序设计》.docx_第3页
第3页 / 共32页
《汇编语言程序设计》.docx_第4页
第4页 / 共32页
《汇编语言程序设计》.docx_第5页
第5页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《《汇编语言程序设计》.docx》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》.docx(32页珍藏版)》请在三一办公上搜索。

1、汇编语言程序设计课程实验指导书(Assembly Language Programming )计算机科学与技术系杨定安编写佛山科学技术学院汇编语言实验主要使学生掌握DEBUG或DEB2000调试程序中 各命令的使用方法,掌握MASM汇编程序对汇编语言源程序进行编 辑、汇编、连接、装配、调试到运行的上机操作方法。本实验大纲 要求学生熟练掌握汇编语言指令练习、顺序程序设计、分支程序设 计、循环程序设计和子程序设计。实验一宏汇编程序(MASM)及汇编语言上机过程4实验二程序的基本结构练习8实验三 汇编编译器的使用及程序调试11实验四分支程序设计 17实验五循环程序设计19实验六子程序设计23实验七汇

2、编语言与C语言混合程序设计29实验一宏汇编程序(MASM)及汇编语言上机过程一、实验目的1. 通过实验了解和熟悉微机系统的配置。2. 学习在DEBUG状态下输入汇编源程序的方法。3. 初步掌握调试(在DEBUG状态下)的过程。二、实验原理1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。用单步跟踪的 方法验证指令的功能。2. 以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行 结果。注: 微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入 时数的后面不加后缀“H”; 在DEBUG状态下执行程序时,“INT 20

3、H”指令可使系统执行完该指令前的程序时返回 到“-”提示符状态,并且恢复CS和IP寄存器原来的值。三、实验仪器微机一台,U盘一块。四、实验步骤1. 开机和关机操作顺序开机:先打开微机外部设备电源开关,如显示器,最后打开主机电源开关。关机:与开机相反,先关掉主机电源开关,然后关闭所有外设的电源开关。2, 装入DEBUG程序若计算机系统启动正常,可以进入MASM文件夹或MASM5文件夹从磁盘上调用DEBUG,程 序到内存。如是WINDOWS环境下,先运行CMD命令,然后运行CD MASM命令,再运行DEB2000 命令。一般C盘上装有DEBUG和DEB2000软件,若没有,可以用复制命令从其它盘拷

4、贝过来, 然后从装有DEBUG和DEB2000软件的磁盘上调用DEBUG和DEB2000软件程序。例如:C :MASM DEB2000/ (/回车符)一(-DEBUG提示符)当显示器出现提示符“一”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。4. 用DEBUG的Register命令检查所有寄存器内容,并作记录。命令格式:R 寄存器名检查和修改寄存器内容的命令R,它有三种方式:1)显示CPU内部所有寄存器内容和标志位状态;格式为:-RR命令显示中标志位状态的含义如下表所示:标志名置位复位溢出Overflow (是/否)OVNV方向Direction (减量/增量)DNUP中断

5、Interrupt (允许/屏蔽)EIDI符号Sign (负/正)NGPL零Zero (是/否)ZRNZ辅助进位Auxiliary Carry (是/否)ACNA奇偶Parity (偶/奇)PEPO进位Carry (是/否)CYNC2)显示和修改某个指定寄存器内容,格式为:-R寄存器名例如打入:-R AX系统将响应如下:AX FIF4表示AX当前内容为F1F4,此时若不对其作修改,可按ENTER键,否则,打入修改后 内容,如:-R BXBX 0369:059F则BX内容由0369改为059F3)显示和修改标志位状态,命令格式为:-RF系统将给出响应,如OV DN EI NG ZR AC PE

6、CY-这时若不作修改可按ENTER键,否则在“-”号之后键入修改值,键入顺序任意。如OV DN EI NG ZR AC PE CY-PONZDINV5, 用DEBUG的Assemble命令输入汇编源程序。格式:A 内存地址注:用“”符号括起来的部分表示可以省略。该命令的功能是从指定的内存地址开始(括号不要输入)逐条输入汇编语言源程序并汇编成 机器码存入内存。若地址缺省,则接上一个A命令最后一条指令之后输入汇编语句,若没有用过A 命令,则从CS: 0100H地址开始输入。例如:-A0CD3: 0100-在输入A命令之后,或每输入一条指令之后,显示器的左端给出了内存的段地址和偏移地址。每条指令均用

7、回车(/)结束。若输入的指令有语法错误,DEBUG拒绝接收,并给出提示,此时 可以重新输入。程序的最后一条指令输入完之后,再按一次回车键(/),即可结束汇编命令,回到 DEBUG提示符“一”状态。6, 用DEBUG的Unassemble命令反汇编。命令格式:U 起始地址终止地址该命令的功能是从起始地址到终止地址反汇编目标码,缺省值是接上一个U命令或从CS:0100H地址开始。例如:-U显示器上将显示程序的内存地址、指令机器码的汇编源程序三列对照清单。7,用DEBUG的Trace命令单步跟踪程序。命令格式:T =起始地址指令条数注意:=符号不能缺该命令的功能是从指定的起始地址开始逐条执行指令,每

8、执行完一条指令,屏幕显示所有寄存 器内容和下一条指令地址和指令。若=起始地址缺省,则T命令从CS: IP地址开始执行指令。例如:-T/重复这一过程,即可看到每条指令执行后,所有寄存器和标志寄存器的标志位内容。此时,要检 查内存单元的数据,可用DEBUG的Dump命令,命令格式:D起始地址终止地址该命令的功能是从起始地址到终止地址,连续显示存贮器单元的内容。若地址缺省,则接上一 个D命令或从DS: 0100H地址开始显示。例如:-D/参考程序:MOVAX, 2000;AL=MOVDS, AX;DS=NOTAX;AX=XORAX, AX;AX=DECAX;AX=INCAX;AX=MOVBX, 20

9、30;BH=MOVSI, BX;SI=MOVSI, BL;2030H=MOVWORD PTRSI, 10F;2030H=2031H=MOVDI, SI;DI=MOVDI+50, BH;DI+50H=MOVBH, SI;BH=MOVBL, DI+50;BL=MOVSP, 5000PUSHAX;AX= SS: 4FFEH=SS: 4FFFH=PUSHBX;BX= SS: 4FFCH= SS: 4FFDH=POPAX;AX=POPF;F=NEGBX;BX=XCHG BX, AX;BX=STD;F=STI;F=CLD;F=CLI;F=ADC DI, 2050;DI=F=ADC SP, DI;SP=F=

10、ADC AX, 1500;AX=F=SUB AX, BX;AX=BX=SHL AH, 1;AH=RCL AX, 1;AX=SHR BH, 1;BH=RCR BL, 1;BL=MOV CL, 4MOV DX, 80F0ROL DX, CL;DX=CL=INT 20;CS=IP=五、实验报告要求1. 整理每条指令执行的结果,填到打印清单的右半部分(应注意内存数据检查的正确性)。2. 比较实验记录与理论分析的结果是否相同,若有不同,找出差别及问题所在。3 .总结本次实验的体会。实验二程序的基本结构练习一、实验目的1. 熟悉IBM PC机的基本指令。2. 继续熟悉计算机键盘及各功能键(参阅DOS操作手

11、册)。3. 继续学习DEBUG命令。4. 验证指令的功能。二、实验原理在DEBUG状态下,分别输入下面各程序段,每输入完一个程序段,用G命令进行连续方式执 行程序,在连续执行时,要记录程序的执行结果。参考程序:1.在内存10000H单元开始,建立00H0FH00H 31个数,要求00H0FH数据逐渐增 大,0FH00H逐渐减小。该程序从内存CS:0100H地址开始输入。首先运行A100命令进入输入汇 编语句状态。13A2:0100MOVAX, 100013A2:0103MOVDS, AX13A2:0105MOVSI, 013A2:0108MOVCL, 0F13A2:010AXORAX, AX1

12、3A2:010CMOVSI, AL13A2:010EINCSI13A2:010FINCAL13A2:0111DECCL13A2:0113JNZ010C13A2:0115MOVCX, 1013A2:0118MOVSI, AL13A2:011AINCSI13A2:011BDECAL13A2:011DLOOP011813A2:011FINT20注:转段指令的符号地址直接用绝对偏移地址,该地址在用A命令汇编输入时,可以看到程 序全部运行完之后,可用DEBUG的Dump命令查看建立的数据块内容。例如:-D1000: 00 1E2.把上一个程序的执行结果(建立的31个字节数据块,其首地址在10000H),

13、分几种方式传送 到以下指定的区域。(a)该程序从内存CS:0150H开始输入。把数据块传送到5050H开始的存贮区域中。首先运行A150命令进入输入汇编语句状态。然后将如下程序输入。DEBUG下不支持符号地 址,如PPEA:标号等,在命令A下输入程序时,不能输入标号(如PPEA:),在用到标号的指令 (如LOOP,JNZ等),在其后直接输入要跳转的目的地址。MOVAX, 1000MOVDS, AXMOVSI, 0MOVDI, 5050MOVCX, 1F;数据块长度是31PPEA:MOVAL, SIMOVDI, ALINCSIINCDILOOP PPEAINT20检查内存数据块的传送情况,可用“

14、D”命令。(b) 用串传送指令MOVSB,把数据块传送到5150H开始的区域,该程序从内存CS:0200H开 始输入。MOVAX, 1000MOVDS, 5150MOVCX, 1FCLDPPEB: MOVSBDEC CXJNZ PPEBINT 20检查程序最后的执行结果,可用“D”命令,例如:-D1000: 5150/(c) 用重复串操作指令“REP MOVSB”把数据块传送到5250H开始的区域。该程序从CS: 250H地址开始输入。MOV AX, 1000MOV DS, 5250MOV CX, 1FCLDREP MOVSB检查程序的最后执行结果时,可用:-D1000: 5250H(d)用串

15、操作的减量工作方式,把数据块传送到501FH开始的区域。该程序从CS: 0300H开 始输入。MOV AX, 101FMOV DS, 501FMOV CX, 1FSTDREP MOVSBINT 20检查程序的最后执行结果,用D命令:-D1000: 5000/三、实验仪器1. IBM-PC微机或兼容机一套。2.准备一 U盘,用于存放你的程序。四、实验步骤参照实验一的步骤,按照本实验程序的内容,分别输入各段程序,并单步和连续执行程序, 记录每条指令的执行结果和每个程序段的最后结果。在作单步操作或用G命令设段点操作时,在 暂停处,可以检查所有寄存器和有关内存单元的内容,这不会影响程序的继续执行。若想

16、把源数据块重新换一批数据,可以用DEBUG的Fill命令填充新的数据。例如:-F1000: 00 L1F 33 /从1000: 0000H开始的31个字节被替换成33H。五、实验预习要求1. 继续阅读PC微机DOS操作手册有关命令说明。2. 认真阅读DEBUG调试程序的命令说明。3. 仔细阅读本实验给出的各程序段。4. 写出每个程序段的结果数据(分析结果),并说明结果所在的位置(寄存器或存贮器)。六、实验报告要求1. 整理每个程序段在实验时的记录内容。2. 比较每个程序段的特点。3. 分析本次实验出现的问题,找出问题所在。实验三汇编编译器的使用及程序调试一、实验目的1. 、掌握Masm的使用;

17、掌握Link的使用;掌握Debug或Deb2000的使用;熟悉一种界面操 作下的集成汇编语言编译器。二、实验要求:1根据实验目的,认真完成实验中给出的任务;2根据实验过程和结果,完成实验报告;3在实验报告中应认真写出自己的实验心得和体会;4鼓励同学进行交流,但是禁止抄袭!5每人一组,独立完成。三、实验原理及内容:1、实验内容:本实验是汇编语言学习的第一个实验,要求利用汇编语言实现一个Dos界面下 的最简单的“Hello Worl程序,只要可以实现在屏幕上输出一行字符即可;2、实验原理:一般的汇编程序包括两个部分:数据段和代码段(有的程序还会有堆栈段),每个部分都有 比较固定的格式; 汇编程序的

18、输入和输出实现相对比较麻烦,需要调用Dos中断来实现,希望学习输入和 输出中断是如何实现的; 对于在字符界面下的汇编程序从asm源代码到生成可执行exe文件中间有多个步骤,需 要用到masm、link,需要熟练掌握; 汇编语言的调试相对也比较麻烦,需要用到Debug或Deb2000命令,希望掌握常用的Debug或Deb2000选项,能够看懂反汇编的结果。四、实验软硬件环境:奔腾系列机器,操作系统为Dos或者Windows系列,相关的汇编语言编译 工具(MASM、LINK和DEBUG)以及集成编译器。五、实验步骤和方法:本实验重点在于熟悉汇编语言编译器的使用及程序的调试,实验内容相对比较简单,但

19、是中 间需要大家熟练掌握其中涉及到的每一个步骤,为后续实验打下良好的基础。下面是以MASM 5.0,在winxp环境下,按照给定的任务为例进行的步骤说明(由于这是第 一个汇编程序,我们提供一个最基本的源程序供大家参考;):1、将包括MASM、LINK以及DEBUG或Deb2000的文件架MASM拷贝到计算机C盘的根 目录下;2、打开记事本,输入如下代码:DATAS SEGMENT ;数据段msg db Hello World!”, 13,10,”$”此处输入数据段代码DATAS ENDSSTACKS SEGMENT 堆栈段;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ;

20、代码段ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXLEA DX,msg ;此处输入代码据段代码mov ah,9INT 21hMOV AH,4CHINT 21HCODES ENDSEND START保存为firPro.asm,保存位置为“C:masm”。注意:后缀名一定要为.asm”,否则,可能出现错误!使文件显示后缀名以便修 改的方法如下图示:a)打开资源管理器,选择文件夹选项,如图1-1所示;b)将“隐藏已知文件类型的扩展名”选项前的去掉,如图1-2所示;c)将文件名“firPro.txt”重命名为“firPro.

21、asm,即可。我的文档文件直)编辑但)查看世)。后退 伤地址鱼)们我的文档 文件夹工具(T)映射网貉驱动器断开网貉驱动器但). 同步.文件夹选项迫). files一-二3囹片极律 曰文本分类 摆我的视频 臼我的下载列表: 吕我的音乐 一I我接收到的文件-1-图1-1打开文件夹选项留桌面H(B我的文档+ 全方位了解服务器CPU. files螺图片收藏一!文本分类,倒费馈土lil晰(1) 在“运行”窗口键入“cmd”,回车,打开字符界面,进入masm文件夹下,如图1-3所示;况;C:TINDOTSsy3te&32cBd. exe-口 XC: Mriasridip驱动器C中的卷是WINXP 卷的序列

22、号是33F2-08F32006-02-232006-02-2318:1618:16-1996-05-1216:2815.830 CREF.EXE1996-05-1216:289,499 ERROUT.EXE1996-05-1216:2812,149 EXEMOD.EXE1996-05-1216:2814,803 EXEPACK.EXE1996-05-1216:2832,150 LIB.EXE1996-05-1216:2839,100 LINK.EXE1996-05-1216:2824,199 MAKE.EXE1996-05-1216:2865,557 MASM.EXE1996-05-1216:

23、289,216 README.DOC1996-05-1216:2810.601 SETENU.EXE2006-02-2318:16code2006-02-2318:23362 f irPro-asnC:nasin的目录11个文件 233,466字节3个目录6,919,176,192可用字节C: Sjnasml(2)键入masm firPro.asm,并回车,如图1-4所示。其中:Object filename是编译为目标文件的名称,直接回车,表示默认和源文件同名,只是后缀名不同,本试验中均为默认;编译之后文件夹中出现一个新文件:firPro.obj,如图1-5所示:图1-4 masm后的结果仁

24、厂 C:INDOSsyst e32cd. eze|n x8888863?2222212223 1 6666688839,100 LINK.EKE24,199 MAKE.EKE65,557 MASM.EKE9,216 README.DOC10,601 SETENU.EKE code362 firPro.asm148 FIRPBO.OBJ233,614 bytes,922,313,728 bytes freeC:Xmasmniasni f irPro .asmMicrosoft R) Macro Assembler Uersion 5.00Copyright C: TINDOTSsyst e32c

25、*d. exeC:masiTidiFUolume in drive C is WINXPUolune Serial Niinber is 33F2-08F3Directory of C:inasmC:nasni886666666666888mmmmm66888888888863711222222222212223.15,830 CREF.EXE 9,499 ERROUT.EXE12.149 EXEMOD.EXE14.803 EXEPACK.EXE32.150 LIB.EXE 39,100 LINK.EXE 24.199 MfiKE.EXE 65.557 MASM.EXE9,216 README

26、.DOC 10,601 SETENU.EXE code362 firPro-asm148 何 IRPR6:QBJFile233,614 bj/tesDir 6,920,921,088 bytes free(3)键入link firPro.obj,回车,如图1-6所示:其中:Run File是可执行的目标文件名,直接回车,表示默认和源文件同名,只是后缀名不同。 编译之后文件夹中出现一个新文件:FIRPRO.exe,如图1-7所示:(4)键入可执行文件名FIRPRO,回车,显示的运行结果如图1-8所示:(5)利用Debug,进行反汇编,键入:Debug firpro.exe,回车,如下图1-9所示

27、:(6) 在出现的光标后,键入。,出现反汇编后的结果,如图1-10所示:(7)键入4,回车,推出反汇编程序,如图1-11所示:至此,我们对MASM、LINK以及DEBUG的使用方法已经有了比较清楚的了解。另外,我们还提供了另外一个集成的编译环境,“Masm for Windows集成实验环境”,大家可 以仿照上述步骤,熟悉一下所提供的集成试验环境。希望大家在熟悉了最基本的masm、link以及Debug的基础之上再去使用所提供的集成试验 环境!c土 C:INDOSsyste32c*d. exe j |6666666688888888888637222222221222312.149 EXEMO

28、D.EXE14,803 EXEPACK.EXE32.150 LIB.EXE39,100 LINK.EXE24,199 MAKE.EXE65,557 MASM.EXE9,216 README.DOC10,601 SETENU.EXE code362 firPro.asm148 FIRPnO.OBJ88666666666688886688888888886379C:Xmasnlink FIRPRO.OBJMicrosoft Ouerlay Linker Uersion 3.60Copyright Microsoft Corp 1983-1987. All rights peserued.Run F

29、ile FIRPRO.EXE:List File NUL.MAP3:Libraries .LIB:LINK : warning L4021: no stack segmentC:Xmasm图1-6 link命令的执行应 C:TIND0TSsysteM32cMd.exeUolume in driue C is UINKPUolume Serial Number is 33F2-08F3Directory of C:Xmasm.15,830 CREF.EXE9,499 EEROUT-EXE12.149 EXEMOD.EKE 14,803 EXEPACK.EXE32.150 LIB.EXE 39,1

30、00 LINK.EXE 24,199 MAKE.EXE 65,557 MASM.EXE9,216 README.DOC 10,601 SETENU.EKE code362 firPro.asm148 FIRPRO.OBJ 545 FIRPRO.EXE13 File234,159 bytes3 Dir6,918,242,304 bytes freeC:masm_应 C:ISDOSsystexeDirectoryof C:masii2006-02-2318162006-02-231816 1996-05-12162815,830CREF.EXE1996-05-1216289,499ERROUT.E

31、XE1996-05-12162812,149EXEMOD.EXE1996-05-12162814,803EXEPACK.EXE1996-05-12162832,150LIB.EXE1996-05-12162839,100LINK-EXE1996-05-12162824,199MAKE.EXE1996-05-12162865,557MASM.EXE1996-05-1216289,216README.DOC1996-05-12162810,601SETENU.EXE2006-02-231816code2006-02-231823362f irPro.asm2006-02-231827148FIBP

32、RO.OBJ2006-02-231829545FIBPRO.EXE1L3File234,159 bytes3Dir 6,918,242,304 bytes freeC:nasnirPro Hello World!图1-8-可执行文件的执行结果|-|口|刈C:Xmasm_匚C: Iin)OSsyst e*32c*d. exe - debug f irPro. exe2006-02-232006-02-2318181616-1996-05-12162815,830 CREF.EXE1996-05-1216289,499 ERROUT.EXE1996-05-12162812,149 EXEMOD.E

33、XE1996-05-12162814,803 EXEPACK.EXE1996-05-12162832,150 LIB.EXE1996-05-12162839,100 LINK.EXE1996-05-12162824,199 MAKE.EXE1996-05-12162865,557 MASM.EXE1996-05-1216289,216 README.DOC1996-05-12162810,601 SETENU.EXE2006-02-231816code2006-02-231823362 firPro.asm2006-02-231827148 FIRPRO.OBJ2006-02-23182954

34、5 FIRPRO.EXE13 File234,159 bytes3 Dir6,918,242,304 bytes freeC:XmasmfirPro Hello World?C:Xmasmdebug f irPro.exe图1-9反汇编之后的结果CAC:INDOSsyste32cd. eze - debug firPro.ezeSI2006-02-232006-02-232006-02-2318 :23362f irPro.asm18:27148FIRPRO.OBJ18:29545FIRPRO.EXE13 File234,159 bytes3 Dir6,918,242,304 bytes fr

35、eeC: masif irPro 4ello World?C:Xmasm debug firPro.exe-u0B4F:0000B84E0BMOUAX,0B4E0B4F:00038 EDSMOUDS, AX0B4F:00058D160000LEADX,00000B4F:0009B409MOUAH, 090B4F:000BCD21I NT210B4F:000DB44CMOUAH,4C0B4F:000FCD21I NT210B4F:0011BE220BMOUSU0B220B4F:001487C0XCHGAX,AX0B4F:00162274E1ANDDH, SI-1F0B4F:00198B9EFEF

36、EMOUBX,BP+FEFE0B4F:001DD1E3SHLBX,10B4F:001FD1E3SHLBX,1展 C: WIliDOS.syste*32cMd. exe-|x9233:18iFile Dir542434522FIRPRO.EXE159 bytes304 bytes freeC: masnif irProHello World?C: Xmasnidebug f irProOOEONONOCNOHHMMLMIMIMKAMSSDS, AXDX,0000AH, 0921AH,4C21SU0B22AX,AXDH,ESI-1FBX,EBP+FEFEBX,1BX,1Pu0B4F:0000 B8

37、4E0B0B4F:0003 8EDS0B4F:0005 8D1600000B4F:0009 B4090B4F:000B CD210B4F:000D B44C0B4F:000F CD210B4F:0011 BE220B0B4F:0014 87C00B4F:0016 2274E10B4F:0019 8B9EFEFE0B4F:001D D1E30B4F:001F D1E3F,八响g.图1-11推出反汇编的命令四、实验预习要求:认真阅读实验指导书附录部分的内容,了解最基本的汇编语言的知识, 包括8088/8086的体系结构和指令系统,在以后的实验中将会不断的用到相关的指令, 在实验课中给出的课件中的相

38、关内容也请大家仔细研读。根据实验过程和实验结果完 成实验报告,并按时上交五、思考题:1、在图1-4中,masm filename.asm后,如果不是连续回车,而是输入字符串结果会有什 么不同;2、在图1-11中,每行的类似于“0B4F:xxxx表示什么意思?3、在图1-11中,为什么首行和源程序不同,而又有那些是相同的,可否给出一些原因? 注意:思考题不做硬性要求。实验四分支程序设计一、实验目的:通过上机编程,熟悉利用汇编语言设计不同种类分支程序的方法,掌握汇编 语言中实现分支程序的相关汇编指令。二、实验要求:(1)设计并实现一个求解一组无符号字节序列中的最大值和最小值的汇编程序;(2)每人一

39、组,独立完成;(3)根据实验目的,认真完成实验中给出的任务;根据实验过程和结果,完成实验报 告并及时上交相关文档;在实验报告中应认真写出自己的实验心得和体会;鼓励 同学进行交流,但是禁止抄袭!三、实验原理及内容:在实际问题中,需要对不同情况做不同的处理,这就需要使用到分支结构。汇编语言中 的分支程序是利用条件转移指令或者跳转表,使程序在执行到某条指令后,根据运行结果是 否满足一定条件来改变程序执行的顺序,然后执行不同的条件下对应的指令。如果进行的是 逻辑分支,可以用每次分两支的方法来达到程序多分支的目的。一般而言,分支程序的结构 通常有三种形式:不完全分支、完全分支和多分支,如图所示:在本实验

40、中,我们以求解一组无符号字节序列中的最大值和最小值的问题进行讲解分支 程序的设计和实现。最终结果是序列中的最大数和最小数,我们可以将寄存器BX的高位和 低位分别用于存放最大数和最小数,然后,将序列中的两个数存入其中,再将序列中的其他 数分别与BH和BL中的数进行比较,如果大于BH或者小于BL,则将寄存器中的数用当前 取出的数进行替换,完全比较之后,BH和BL中数即为整个序列中的最大数和最小数。四、实验软硬件环境:奔腾系列机器,操作系统为Dos或者Windows系列,相关的汇编语言 编译工具(MASM、LINK和DEBUG)以及集成编译器。五、实验步骤和方法:本实验重点算法的理解以及相关指令的灵

41、活应用。(1)分析问题,设计算法。;(2)根据上述算法,编制程序流程图,如图4-1所示;*图4-1程序流程图(3)(4)(5)(6)(7)根据流程图, 程序汇编为目标文件.昨 目标文件.obj链接为可执行文件.exe。; 使用Debug调试运行程序,设置断点,查询相关寄存器内容,调试直至得到正确的结果。 根据实验过程和实验结果完成实验报告,并按时上交。注意:在程序设计中,注意相关的寄存器的用途,如CX的作用,SI的作用,以及汇编语言中, 一个寄存器的高低位可以分开使用的特点。六、实验预习要求:预习相关的汇编语言指令,着重是理解相关寄存器的特定用途,口: SI、CX等,以及寄存器的高低位可以分开使用的特点。学校印刷的标准报告纸写实验报告。七、思考题:(1)总结汇编语言中

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号