004第四章缓汇编语言程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
004第四章缓汇编语言程序设计

1)BX←外循环比较(轮数)计数值; 2)SI←数据表首址偏移量; 3)CX←内循环比较(次数)计数值; 4)DX←存交换标志初值; 5)比较相邻两数,若顺序对不交换,否则,转8); 6)若顺序不对两数据交换位置; 7)DX←交换标志; 8)SI←SI+1修改数据地址; 9)CX←CX-1内循环比较次数计数器减1,若不为0转5); 10)检查交换标志若为初值,转12); 11)BX←BX-1外循环比较轮数计数器减1,若不为0转2); 12)结束。 CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STAK START:MOV AX,DATA MOV DS,AX MOV BX,LEN-1 ;BX←比较轮数 LOP0:MOV SI,LEN-1 ;SI←第N个数在数据表中的偏移量 MOV CX,BX ;CX←比较次数计数值 MOV DX,SI ;DX←置交换标志为第N个数 在数据表中偏移量 LOP1:MOV AL,TABLE[SI] CMP AL,TABLE[SI-1] ;比较相邻两数 JGE NEXT MOV AH,[SI-1] ;交换两数 MOV [SI-1],AL MOV [SI],AH MOV DX,SI ;DX←发生交换处的位置 NEXT:DEC SI ;修改数据地址 LOOP LOP1 ;一轮比较完吗? CMP DX,LEN-1 ;本轮发生交换吗? JZ STOP ;已全部排好序,转程序结束 DEC BX ;所有轮都比较完否? JNZ LOP0 ;未完继续 STOP:MOV AH,4CH INT 21H CODE ENDS END START 2.查找 (1)直接查表法 按照被查询的数据和它在表格中位置之间存在的规律进行查询。 (2)顺序查表法 对于无序数据进行检索,通常采用顺序检索的方法。它将关键字与数据项中的数据逐个比较,若找到则检索成功,否则检索失败。 (3)对分查找 用于有序表中 设升序查找表: d1,d2,……dN/2,……, dN-1, dN 查找值:X 搜索区间第1 个数下标,记为L=1 搜索区间最后1 个数下标,记为R=N 搜索区间 搜索区间中间数下标,记为J=(L+R)/2 L=1,R=N 对分查找算法流程 J=(L+R)/2 比较(dJ , X) dJ = X ? dJ X ? R←J L←J L = J ? 找到 末找到 结 束 Y Y N N Y N 【例4.25】一有序数组:0、11、15、21、34、57、60、78、90、97共10个元素,数的排列序号为0~9,从中搜索数据78,若找到,记下搜索次数,未找到,标记为全1。 数据定义: DSEG SEGMENT BUFF DB 0,11,15,21,34,57,60,78,90,97 COUNT EQU $-BUFF PTRN DW ? ;存放查找次数或未找到标记 KEY EQU 78 ;查找关键字 DSEG ENDS 有序查找表 CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG MAIN PROC FAR START:PUSH DS MOV AX,0 PUSH AX MOV AX,DSEG MOV DS,AX MOV SI,OFFSET BUFF ;区间上限送SI MOV CX,COUNT MOV DX,1 ;查找次数 MOV AX,SI ADD AX,CX ;求区间下限 MOV DI,AX ;下限送DI MOV AL,KEY ;关键字送AL COUNT1:MOV BX,SI ADD BX,DI SHR BX,1 ;j=BX/2 CMP AL,[BX] ;关键字与dj比较

您可能关注的文档

文档评论(0)

181****7523 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档