汇编语言:折半查找

    技术2025-06-22  6

    折半查找的汇编语言实现(masm)

    .386 .model flat,stdcall option casemap:none includelib msvcrt.lib include msvcrt.inc printf PROTO C :ptr sbyte, :VARARG scanf PROTO C :dword,:vararg .data dArray byte 15,27,39,40,68,71,82,100,220,235 ;数组中的元素,按从小到大顺序排列好 Items equ ($-dArray) Element byte 82 ;需要查找的数 Index dword ? Count dword ? szFmt byte 'Found,Index=%d Count=%d Elememt=%d',0ah,0 szErrMsg byte 'Not found',0ah,0 .code main proc xor eax,eax mov Index,-1 mov Count,0 mov esi,0 mov edi,Items-1 mov al,Element Compare: cmp esi,edi jg NotFound mov ebx,esi add ebx,edi shr ebx,1 inc Count cmp al,dArray[EBX] jz Found ja MoveLow mov edi,ebx dec edi jmp Compare MoveLow: mov esi,ebx inc esi jmp Compare Found: mov Index,ebx xor eax,eax mov al,dArray[ebx] invoke printf,offset szFmt,Index,Count,eax ret NotFound: invoke printf,offset szErrMsg,Count,eax ret main endp end main

     

    Processed: 0.013, SQL: 9