求汇编高手!!!微机原理课程设计,查找字符串中给定字符首次出现的位置
要求字符给定,从键盘输入单个字符,enter键结束并显示该字符首次出现的位置。最好执行过。。送分多多哦!!跪求!!!...
要求字符给定,从键盘输入单个字符,enter键结束并显示该字符首次出现的位置。最好执行过。。送分多多哦!!跪求!!!
展开
1个回答
展开全部
调试通过!
DATAS SEGMENT
str1 db 'this is a computer$'
str2 db 0dh,0ah,'$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov ah,1 ;等待输入
int 21h
push ax
t1:
mov ah,7
int 21h
cmp al,0dh
jnz t1
lea dx,str2 ;回车换行
mov ah,9
int 21h
pop ax
lea si,str1
s1: ;查找
cmp byte ptr[si],'$'
jz s5
cmp al,[si]
jz s2
inc si
jmp s1
s2: ;找到输出
mov ax,si
inc ax
xor dx,dx
xor cx,cx
s3:
mov bl,10
div bl
inc cx
mov dl,ah
mov ah,0
push dx
cmp al,0
jnz s3
s4:
pop dx
add dl,30h
mov ah,2
int 21h
loop s4
jmp s6
s5: ;未找到输出
mov dl,'N'
mov ah,2
int 21h
s6:
mov ah,0
int 16h
MOV AH,4CH
INT 21H
CODES ENDS
END START
DATAS SEGMENT
str1 db 'this is a computer$'
str2 db 0dh,0ah,'$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov ah,1 ;等待输入
int 21h
push ax
t1:
mov ah,7
int 21h
cmp al,0dh
jnz t1
lea dx,str2 ;回车换行
mov ah,9
int 21h
pop ax
lea si,str1
s1: ;查找
cmp byte ptr[si],'$'
jz s5
cmp al,[si]
jz s2
inc si
jmp s1
s2: ;找到输出
mov ax,si
inc ax
xor dx,dx
xor cx,cx
s3:
mov bl,10
div bl
inc cx
mov dl,ah
mov ah,0
push dx
cmp al,0
jnz s3
s4:
pop dx
add dl,30h
mov ah,2
int 21h
loop s4
jmp s6
s5: ;未找到输出
mov dl,'N'
mov ah,2
int 21h
s6:
mov ah,0
int 16h
MOV AH,4CH
INT 21H
CODES ENDS
END START
更多追问追答
追问
你有汇编语言的软件吗?我想安装,我的电脑是windows7的系统,64位的。
追答
win7的我不知道用什么软件,我用的是masm for windows.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询