汇编--BinarySearch(二分查找)_第1页
汇编--BinarySearch(二分查找)_第2页
汇编--BinarySearch(二分查找)_第3页
汇编--BinarySearch(二分查找)_第4页
汇编--BinarySearch(二分查找)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、一、实验目的熟悉汇编语言程序设计的开发环境、格式以及汇编过程;熟练掌握Debug命令的U命令、D命令、R命令、G命令、T命令、Q命令等;掌握分支程序的设计方法。二、实验原理及基本技术路线图(方框原理图)Debug常用命令简介:D命令:格式:D range或D address,显示部分存储区的内容;U命令:格式:U address,将内存某一区的机器码,用此命令反汇编为源程序;R命令:格式:RRegister name,显示和修改各寄存器的内容;G命令:格式:G=addressaddressaddress.,执行需运行的程序,并对调试的程序进行断点测试跟踪;T命令:格式:T=addressVal

2、ue,执行以CS:IP中指定开始的一个或几个指令,并显示出执行每条指令后所有寄存器的内容;Q 命令: 格式: Q, 退出 DEBUG 状态, 说明: Q 命令不保留正在内存中运行的文件,若保留需用 W 命令, DEBUG 返回到命令处理程序,然后显示出正常的命令提示。折半查找流程图具有分支结构的程序叫做分支程序。设计分支程序时最好先用流程图画出程序流向,这样思路清晰,也利于编码实现,实现分支时要用到转移指令。以下为折半查找的流程图:三、所用仪器、材料(设备名称、型号、规格等).操作系统平台: Windows Server 2003.汇编环境:Microsoft MASM 5.0.文本编辑器:记

3、事本四、实验方法、步骤.将MASM5.0的文件置于目录下;.将masm.exe和link.exe所在目录(C:assemblyMASM5)添加到Path环境变量中;.用记事本在下新建一个BS.asm文件,打开BS.asm,输入汇编程序代码;.运行一个命令行窗口,将当前目录切换到,然后输入命令:masm BS.asmEnter,来汇编程序,根据汇编结果查看程序代码是否有语法错误,如有,则更正保存后重新汇编,直至没有错误为止,此时会生成BS.obj文件;.输入命令:link BS.obj Enter,观察输出结果,如果没有错误,则生成 BS.exe文件;.输入命令:debug BS.exe Ent

4、er,调试程序,并记录运行过程;.完成实验报告。五、实验过程原始记录(数据、图表、计算等)1.将C:assemblyMASM5目录添加到Path环境变量中:2.新建BS.asm文件,输入汇编程序代码:程序源码:STACKSGSTACKSGDATA BUFSEGMENT STACK SDW 64 DUP(ST) ENDSSEGMENTDB30H,31H,32H,33H,34H,35H,36HDB37H,38H,39H,41H,42H,43H,44H,45H;有序表COUNTEQU$-BUF ;表项数CHARDB?; 要查找的数MARKDW0; 查找次数PROMPT DB NO FOUND$ ;

5、没找到提示信息DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATA, SS:STACKSGMAINPROC FARMOV AX,DATAMOV DS,AXMOV AH,1 ; 输入要查找数的字符INT 21HMOV CHAR,AL ; 保存要找的数LEA SI,BUF ; 表起始地址, 初始化区间下限( 左)MOV CX,COUNTMOV DX,SIADD DX,CX ; 最后数的地址加 1MOV DI,DX ; 初始化区间上限( 右)MOV DX,0CMPAL,SI; 判边界元素MOV BX,SIJBNOFID; 小于表中最小数转未找到JEFOUND ; 是表中

6、最小数转找到;判边界元素;大于表中最大数转未找到;是表中最大数转找到;初始化查找次数;要查找的数CMP AL,DI-1MOV BX, DIJANOFIDJEFOUNDMOV DX,1MOV AL,CHARC1:LESS:NEXT:NOFID:FOUND:MOV BX,SIADD BX,DISHR BX,1CMP AL,BXJZ FOUNDPUSHFCMP BX,SIJZ NOFIDPOPFJL LESSMOV SI,BXJMP SHORT NEXTMOV DI,BXINC DXJMP C1LEA DX,PROMPTMOV AH,9INT 21HJMP SHORT EXITMOV MARK,DX

7、PUSH DXMOV AH,2MOV DL,BXINT 21HMOV CL,10POP AXDIV CLOR AX,3030H; 循环入口折半比较找到转指针=下限吗?若等于表示未找到 , 转可能在左半区转可能在右半区,调整下限调整上限查找次数加 1; 显示未找到提示信息; 保存查找次数; 显示找到的数; 把查找次数转换成十进制数; 转换成 ASCII 码MOV DL,AL PUSH AXMOV AH,2;显示查找次数的高位INT 21H POP AX MOV DL,AHMOV AH,2;显示查找次数的低位INT 21HEXIT:MOVAX,4C00HINT 21HMAINENDPCODEEND

8、SEND MAIN3.汇编源程序:4.连接生成可执行文件:5.调试程序:(1)程序前奏部分(执行了第一句MOV AX, 0BCB ,当前(AX)=0BCB )(2)输入要查找的数 3,当前AL的值为33H (3的ASCII码)(3)判断3是否小于或等于最小值,显然不成立,继续判断3是否大于或等于最大值(4)以上判断均不成立,则置查找次数为1,进入二分查找程序段弋 C: VI9D015syteB32CHV. ex - deh*a& BS. exeJnl0ECD:0033 8BPE 0ECD=6035 03PF HBCD:R07 D1EB 0BGD=0039 3A07 aBCD:003B 741B

9、 tlGD:0S3D ?C 0BCD=003E 3BDE 0BCD:0040 740C 0BCD:0042 9D 0ECD:0043 7C04 -g 0033UDR p odhhz HASG Jsp p UNZOL FC Jp JBX,SI MDI 以1 HL# LEX SS5QBrSI 电4E电函号fiX=A133 EK=S08FDS=OBCB ES=0ER2 aBGD:0B33 8BDE(5)第一次比较判断可能在左半区,调整上限,查找次数加1MDUCK =flflBF DK=fififl1 =BPrT I!IJ=MIWMVSF=fiHBfi BP=FIFIfiFI SI =000301 =

10、BFI3FJJ*=0033 NU UP EI NG NZ AC PE CV-Jal 1C :ex* 一 debu ES. exePBCD:0056 EE21JMF007?BCD:0058 89161000HOU口飒QLDXMNCD:眄SG 52PUSHAXQBCD:005D E4O2MOURIH P 020BCD:0B5F 9A17NOUBL, X10BGD:0061 GD211HT210BCD:0063 B13ANOUCLM0BCD:0065 58POPAXQBCD:00G6 F6F1DIUCL0BCE:RO68 DD303gOR叽3田阴日 004CAX =0133 BK=0067 CK=0

11、SSF BK=0002| SP=RflR0 BF=0000 SI =8908 DI =F1FI37D=QBCB E=0EBJ KEEC3JP=604CNU UP EI PL M2; NA PQ CVSBGD = 004G EBE5 QIMP0出不(6)转入第二次比较手 匚二工副0155网1_32匚,11.驾电-debug; KS.|0BCD = 004(r EBE5JHF 0033eT eJnXI司fiK=0133DG=BBCB E=0EB30BCD:0B33 SBDECK =08GFSF=HH 8G BP=0600 81=8000 DI =0037=GBC3 CS=0ECD IP=033 N

12、U UP EI PL MZ MA P0 CVMOU B,SILU(7)第二次比较后找到了(8)进入FOUND程序段(9)找到之后,显示找到的数 3(10)分别显示查找次数的高位0和低位2(11)程序退出六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算纸)从本次实验我体会到:分支程序在设计之前流程图可以明确我们的编程思路,代码 书写会比较流畅。另外代码书写时要严格注意格式,否则代码较长时,会造成思路混乱, 好好代码书写习惯是写好程序的前提。DEBUG 命令在汇编程序之后对程序的调试中非常有用,适当使用不同的命令,可以加快我们的调试速度,提高编程效率。最常用的 U 命令、 G 命令、 T 命令和 Q 命令必须熟练掌握。在调试中,适时的使U 命令反汇编程序,可以查看当执行到哪一段代码了; G 命令可以让我们执行自定义的代码段; G 命令和 T

温馨提示

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

评论

0/150

提交评论