- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 5.2.2 分支结构设计方法 一般利用条件转移指令来产生。 (1)单条件,测试某次运算结果(P88) A、ZF,0或相等:JZ(JE)、JNZ(JNE) B、SF,符号:JS、JNS C、OF,溢出:JO、JNO D、PF,奇偶位:JP、JNP E、CF,进位:JB()、JNAE(≯=)或JC JNB(≮)、JAE(≥)或JNC * (2)根据无符号数比较结果进行转移(P89) A、JB()、JNAE(≯=)或JC JNB(≮)、JAE(≥)或JNC B、CF∨ZF=1:JBE(≤)、JNA(≯) C、CF∨ZF=0:JNBE(≮=)、JA() * (3)根据有符号数比较结果进行转移(P89) A、SF∧OF=1:JL()、JNGE(≯=) B、SF∧OF=0:JNL(≮)、JGE(≥) C、(SF∧OF)∨ZF =1:JLE(≤)、JNG(≯) D、(SF∧OF)∨ZF =0:JNLE(≮=)、JG() * (4)测试CX或ECX的值为0转移指令(P91) A、(CX)=0:JCXZ B、(ECX)=0:JECXZ * 例5.9:在附加段中,有一个按从小到大排列的无符号数数组,其首地址放在DI寄存器中,数组中的第一个单元存放着数组长度。在AX中有一个无符号数,要求在数组中查找(AX),如找到,则使CF=0,并在SI中给出该元素在数组中的偏移地址;如未找到,则使CF=1。 思路: 1、因为已排序,采用折半查找法以提高查找效率。 2、先取中间元素,如果相等则查找成功;如果比中间元素大,则再取高半部的中间元素进行比较;如果比中间元素小,则再取低半部的中间元素进行比较。 3、重复2过程直到查找成功或最终未找到该数为止。 4、顺序查找法平均N/2次,折半法平均比较次数为log2N * 长度为n的有序数组r中,查找元素k的折半查找算法: 1、初始化被查找数组的首尾下标,low←1,high←n 2、若lowhigh,则查找失败,置CF=1,退出程序。否则,计算中点:mid←(low+high)/2 3、k与中点元素r[mid]比较。若k=r[mid],则查找成功,程序结束;若kr[mid],则转步骤4;若kr[mid],则转步骤5。 4、低半部分查找(lower),high←mid-1,返回步骤2,继续查找。 5、高半部分查找(higher),low←mid+1,返回步骤2,继续查找。 * SEARCH 初始化low,high Lowhigh? SI←所查找元素的偏移地址 EXIT CF←1(SETC) 查找不成功 =查找成功 mid←(low+high)/2 ≤ high←mid-1 LOWER (AX)=r[Mid]? COMPARE low←mid+1 HIGHER * 以下为程序的实现: ;SEARCH_HALF-EX5_9 ;Search an ordered list in the extra segment for the word ; value contained in AX ;Inputs:EX:DI=starting address of the list ; First location=Length of list(words) ;Results:If the value is in the list, ; CF=0 ; SI=Offset of matching element, ; If the value is not in the list, ; CF=1 ; SI=Offset of last element compared ;************************************************************** dseg segment ;define data segment LIST dw 12,11,22,33,44,55,66,77,88,99,111,222,333 low_idx dw ? high_idx dw ? AX_VALUE dw 55 dseg ends * ;************************************************************** cseg segment ;define code segment ;------------------------------------------------------------------------- assume cs:cseg,ds:dseg,es:dseg b_search p
文档评论(0)