主题:帮忙改一道小程序
hanhaixingyun777
[专家分:50] 发布于 2007-04-24 22:54:00
在字符串查找一字符,字符串在数据段定义,要查找的字符在程序执行的时候从键盘输入,并指出找到的位置。
我写的程序得不到要求的结果,请高手指导指导
data segment
mess db 'computer $'
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
lea si,mess
mov cx,8
mov ah,1
int 21h
cld
repnz scasb
jz yes
jmp disp
yes: dec si
mov al,[si]
mov dl,'y'
disp:mov ah,2
int 21h
mov ah,4ch
int 21h
code ends
end start
回复列表 (共6个回复)
沙发
小牛斑斑 [专家分:1210] 发布于 2007-04-26 18:22:00
mov ah,1
int 21h
从键盘输入是用
mov ah,0ah
int 21h
命令吧
板凳
sjs0714 [专家分:280] 发布于 2007-04-26 19:29:00
mov ah 1
int 21h
3 楼
塞北江南 [专家分:1350] 发布于 2007-04-29 11:12:00
data segment
mess db 'computer $'
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov es,ax ;SCANS指令的被查找对象应该在ES:DI指向的位置
lea di,mess
mov cx,8
mov ah,1
int 21h
cld
repne scasb
jz yes
mov dl,'n' ;没找到,显示‘n’
jmp disp
yes: dec di
mov dx,di
add dl,30h ;若找到,则显示位置,从0开始的
disp:mov ah,2
int 21h
mov ah,4ch
int 21h
code ends
end start
5 楼
塞北江南 [专家分:1350] 发布于 2007-04-30 12:02:00
不用客气
6 楼
bobyellow [专家分:100] 发布于 2007-05-04 14:42:00
3楼的好像不可以把,
你讲的理论:"SCANS指令的被查找对象应该在ES:DI指向的位置"
是正确的,但不能编译运行!
data segment
mess db 'computer$'
data ends
printData segment
IsIn db 'the char is in the string$'
NotIn db 'the char is not in the string$'
printData ends
code segment
assume cs:code,es:data
start:mov ax,data
mov es,ax
mov ax,printData
mov ds,ax
lea di,mess
mov cx,8
mov ah,1
int 21h
cld
repnz scasb
jz yes
jmp No
yes:
mov dl,0dh
mov ah,02h
int 21h
lea dx,IsIn
mov ah,09h
int 21h
mov dx,di ;用于显示在地址几个位子
add dl,30h
jmp disp
No:
mov dl,0dh
mov ah,02h
int 21h
lea dx,NotIn
mov ah,09h
int 21h
disp:
mov ah,2
int 21h
mov ah,4ch
int 21h
code ends
end start
运行过了且通过运行了
我来回复