高手大哥大姐们,求命呀!求求小弟吧!
我用汇编做了一个程序:做一个电话本,先接收输入50个人名,然后再输入该人的电话号码,输入完后再进行排序,最后还可以查找该人或其电话号码!
可是现在我第一步都实现不了呀!
下面是从那个完整得程序中取得一部分,也既接收输入得一部份,这里是先将姓名放在一个临时区里面!
下面是代码:
在这里我用了一个call showmess 来跟踪程序得运行到的位置,其中
mov bh,0
mov bl,act_name
mov cx,21
sub cx,bx
b20:
mov star_name[bx],20h
inc bx
;call showmess
loop b20
这部分是用来将不足够20个字节人名的部分填上空白!
现在得问题是我发现其根本就没有运行到这里来!而且呢act_name这个值好像也没有让INT21这个中断收到,因为我发现我可以输入大约255个字符光标才不动了!再按回车就死了!
你们机子上有MASM 得话就可以帮我调试一下吧!谢谢谢谢谢谢谢谢!
大哥大姐们!
你们说说我应该怎么做呀!
小弟在这里先谢谢了!
data segment
namepar label byte
max_name db 21
act_name db ?
star_name db 21 dup(?)
show db 'I am here',24h
huanhan db 13,10,24h
mess1 db 'Input name:',24h
tel_tab db 50 dup(28 dup(' ') )
data ends
prognam segment
main proc far
assume cs:prognam, ds: data, es:data
push ax
push bx
push cx
push dx
mov ax,data
mov ds,ax
mov es,ax
cld
lea di,tel_tab
call input_name
call showmess
Exit:
pop ax
pop bx
pop cx
pop dx
ret
main endp
input_name proc near
;call showmess
mov ah,09
lea dx,mess1
int 21h
;call crlf
;call showmess
mov ah,0ah
lea dx,namepar
int 21h
call crlf
;call showmess
mov bh,0
mov bl,act_name
mov cx,21
sub cx,bx
b20:
mov star_name[bx],20h
inc bx
;call showmess
loop b20
ret
input_name endp
crlf proc near
mov ah,09
lea dx,huanhan
int 21h
ret
crlf endp
showmess proc near
mov ah,09
lea dx,show
int 21h
call crlf
ret
prognam ends
end