-
-
[旧帖]
[求助] 新学碰到问题求解
0.00雪花
-
发表于:
2009-8-13 21:43
2792
-
[旧帖] [求助] 新学碰到问题求解
0.00雪花
现在学汇编。看了书上的想稍微改改。
编译后执行说无效指令,debug 还只会用个-t的命令,但看了下全不是我写的那些指令。不知道怎么回事。。。
我改的就是想在原来例子的那个折半查找具体到查定义好的数组和数字。
编译过了。但exe文件执行不了。
烦帮 找找原因。我看了好久没看出问题。
dseg segment
low_idx dw ?
hight_idx dw ?
dseg ends
eseg segment
str dw 12,11,22,33,44,55,66,77,88,99,111,222,333
st1 dw 55
eseg ends
cseg segment
b_search proc far
assume cs:cseg,ds:dseg,es:eseg
;push ds
;push ax
mov ax,dseg
mov ds,ax
mov ax,eseg
mov es,ax
mov ax,st1
mov di,offset str
cmp ax,es:[di+2]
ja chk_last
lea si,str+2
je exit
stc
jmp exit
chk_last:
mov si,es:[di]
shl si,1
add si,di
cmp ax,es:[si]
jb search
je exit
stc
jmp exit
search:
mov low_idx,1
mov bx,es:[di]
mov hight_idx,bx
mov bx,di
mid: mov cx,low_idx
mov dx,hight_idx
cmp cx,dx
ja no_match
add cx,dx
shr cx,1
mov si,cx
shl si,1
compare:
cmp ax,es:[bx+si]
je match
ja higher
mov hight_idx,cx
jmp mid
higher:
inc cx
mov low_idx,cx
jmp mid
no_match:
stc
match : ;display
mov ah,9
mov dx,si
int 21
exit:
pop ds
MOV AH,1
INT 21H
MOV AH,4CH
INT 21H
ret
b_search endp
cseg ends
end
[课程]FART 脱壳王!加量不加价!FART作者讲授!