汇编BinarySearch二分查找.docx

上传人:b****6 文档编号:13871249 上传时间:2023-06-18 格式:DOCX 页数:11 大小:181.04KB
下载 相关 举报
汇编BinarySearch二分查找.docx_第1页
第1页 / 共11页
汇编BinarySearch二分查找.docx_第2页
第2页 / 共11页
汇编BinarySearch二分查找.docx_第3页
第3页 / 共11页
汇编BinarySearch二分查找.docx_第4页
第4页 / 共11页
汇编BinarySearch二分查找.docx_第5页
第5页 / 共11页
汇编BinarySearch二分查找.docx_第6页
第6页 / 共11页
汇编BinarySearch二分查找.docx_第7页
第7页 / 共11页
汇编BinarySearch二分查找.docx_第8页
第8页 / 共11页
汇编BinarySearch二分查找.docx_第9页
第9页 / 共11页
汇编BinarySearch二分查找.docx_第10页
第10页 / 共11页
汇编BinarySearch二分查找.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

汇编BinarySearch二分查找.docx

《汇编BinarySearch二分查找.docx》由会员分享,可在线阅读,更多相关《汇编BinarySearch二分查找.docx(11页珍藏版)》请在冰点文库上搜索。

汇编BinarySearch二分查找.docx

汇编BinarySearch二分查找

一、实验目的

1.熟悉汇编语言程序设计的开发环境、格式以及汇编过程;

2.熟练掌握Debug命令的U命令、D命令、R命令、G命令、T命令、Q命令等;

3.掌握分支程序的设计方法。

二、实验原理及基本技术路线图(方框原理图)

1.Debug常用命令简介:

D命令:

格式:

D[range]或D[address],显示部分存储区的内容;

U命令:

格式:

U[address],将内存某一区的机器码,用此命令反汇编为源程序;

R命令:

格式:

R[Registername],显示和修改各寄存器的内容;

G命令:

格式:

G[=address][address[address..],执行需运行的程序,并对调试的程序进行断点测试跟踪;

T命令:

格式:

T[=address][Value],执行以CS:

IP中指定开始的一个或几个指令,并显示出执行每条指令后所有寄存器的内容;

Q命令:

格式:

Q,退出DEBUG状态,说明:

Q命令不保留正在内存中运行的文件,若保留需用"W"命令,DEBUG返回到命令处理程序,然后显示出正常的命令提示。

2.折半查找流程图

具有分支结构的程序叫做分支程序。

设计分支程序时最好先用流程图画出程序流向,这样思路清晰,也利于编码实现,实现分支时要用到转移指令。

以下为折半查找的流程图:

开始

输入要查找的数CHAR

CHAR=BUF[MID]

MIN≤MAX

Y

N

结束

Y

N

N

MID=(MAX+MIN)/2

初始化MAX、MIN

CHAR<BUF[MID]

Y

MAX=MID-1

查找次数加1

MIN=MID+1

查找次数加1

输出未找到

输出BUF[MID],并输出查找次数

三、所用仪器、材料(设备名称、型号、规格等)

1.操作系统平台:

WindowsServer2003

2.汇编环境:

MicrosoftMASM5.0

3.文本编辑器:

记事本

四、实验方法、步骤

1.将MASM5.0的文件置于C:

\assembly\目录下;

2.将masm.exe和link.exe所在目录(C:

\assembly\MASM5)添加到Path环境变量中;

3.用记事本在C:

\assembly\下新建一个BS.asm文件,打开BS.asm,输入汇编程序代码;

4.运行一个命令行窗口,将当前目录切换到C:

\assembly\,然后输入命令:

masmBS.asm[Enter],来汇编程序,根据汇编结果查看程序代码是否有语法错误,如有,则更正保存后重新汇编,直至没有错误为止,此时会生成BS.obj文件;

5.输入命令:

linkBS.obj[Enter],观察输出结果,如果没有错误,则生成BS.exe文件;

6.输入命令:

debugBS.exe[Enter],调试程序,并记录运行过程;

7.完成实验报告。

五、实验过程原始记录(数据、图表、计算等)

1.将C:

\assembly\MASM5目录添加到Path环境变量中:

2.新建BS.asm文件,输入汇编程序代码:

程序源码:

STACKSGSEGMENTSTACK'S'

DW64DUP('ST')

STACKSGENDS

DATASEGMENT

BUFDB30H,31H,32H,33H,34H,35H,36H

DB37H,38H,39H,41H,42H,43H,44H,45H;有序表

COUNTEQU$-BUF;表项数

CHARDB?

;要查找的数

MARKDW0;查找次数

PROMPTDB'NOFOUND$';没找到提示信息

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACKSG

MAINPROCFAR

MOVAX,DATA

MOVDS,AX

MOVAH,1;输入要查找数的字符

INT21H

MOVCHAR,AL;保存要找的数

LEASI,BUF;表起始地址,初始化区间下限(左)

MOVCX,COUNT

MOVDX,SI

ADDDX,CX;最后数的地址加1

MOVDI,DX;初始化区间上限(右)

MOVDX,0

CMPAL,[SI];判边界元素

MOVBX,SI

JBNOFID;小于表中最小数转未找到

JEFOUND;是表中最小数转找到

CMPAL,[DI-1];判边界元素

MOVBX,DI

JANOFID;大于表中最大数转未找到

JEFOUND;是表中最大数转找到

MOVDX,1;初始化查找次数

MOVAL,CHAR;要查找的数

C1:

MOVBX,SI;循环入口

ADDBX,DI

SHRBX,1;折半

CMPAL,[BX];比较

JZFOUND;找到转

PUSHF

CMPBX,SI;指针=下限吗?

JZNOFID;若等于表示未找到,转

POPF

JLLESS;可能在左半区转

MOVSI,BX;可能在右半区,调整下限

JMPSHORTNEXT

LESS:

MOVDI,BX;调整上限

NEXT:

INCDX;查找次数加1

JMPC1

NOFID:

LEADX,PROMPT;显示未找到提示信息

MOVAH,9

INT21H

JMPSHORTEXIT

FOUND:

MOVMARK,DX;保存查找次数

PUSHDX

MOVAH,2;显示找到的数

MOVDL,[BX]

INT21H

MOVCL,10

POPAX

DIVCL;把查找次数转换成十进制数

ORAX,3030H;转换成ASCII码

MOVDL,AL

PUSHAX

MOVAH,2;显示查找次数的高位

INT21H

POPAX

MOVDL,AH

MOVAH,2;显示查找次数的低位

INT21H

EXIT:

MOVAX,4C00H

INT21H

MAINENDP

CODEENDS

ENDMAIN

3.汇编源程序:

4.连接生成可执行文件:

5.调试程序:

(1)程序前奏部分(执行了第一句MOVAX,0BCB,当前(AX)=0BCB)

(2)输入要查找的数3,当前AL的值为33H(3的ASCII码)

(3)判断3是否小于或等于最小值,显然不成立,继续判断3是否大于或等于最大值

(4)以上判断均不成立,则置查找次数为1,进入二分查找程序段

(5)第一次比较判断可能在左半区,调整上限,查找次数加1

(6)转入第二次比较

(7)第二次比较后找到了

(8)进入FOUND程序段

(9)找到之后,显示找到的数3

(10)分别显示查找次数的高位0和低位2

(11)程序退出

六、实验结果、分析和结论(误差分析与数据处理、成果总结等。

其中,绘制曲线图时必须用计算纸)

1.从本次实验我体会到:

分支程序在设计之前流程图可以明确我们的编程思路,代码书写会比较流畅。

另外代码书写时要严格注意格式,否则代码较长时,会造成思路混乱,好好代码书写习惯是写好程序的前提。

2.DEBUG命令在汇编程序之后对程序的调试中非常有用,适当使用不同的命令,可以加快我们的调试速度,提高编程效率。

最常用的U命令、G命令、T命令和Q命令必须熟练掌握。

在调试中,适时的使U命令反汇编程序,可以查看当执行到哪一段代码了;G命令可以让我们执行自定义的代码段;G命令和T命令结合使用可以查看当寄存器值的变化和程序逻辑的正确性;当发现程序有逻辑错误时,可以使用Q命令退出程序修改代码,再进行调试。

其他的命令如:

R命令、D命令等也可以使我们的调试更加高效快速。

3.编写程序时,要密切关注寄存器的状态以及各条语句对标志位的影响(如果程序中用到的话)。

另外在编写指令时要尽量选择最优的,刚开始可能写的不是很好,但经常练习就会体会到同种功能的不同语句的区别。

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

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2