汇编语言题目

wolverineFY 2017-06-28 01:59:16
用汇编语言找字符串中的指定字符 :

基本功能:1 做一个操作界面,提示操作:输入一串字符串、输入所查找的字符或字符串

等;2 显示出查找到的数目;3 用不同颜色或闪烁标示出所找到的字符或字符串;

求助请问这个代码为什么只能让第一个匹配的字符串变色???求教


assume cs:code,ds:data
data segment
msg1 db 256 dup(?)
msg2 db 256 dup(?)
msg3 db 0
data ends
code segment
start: mov ax,data
mov ds,ax
mov cx,0
lea di,msg1
lea si,msg2
input: mov ah,01h ;键盘输入单字节并回显
int 21h
mov [di],al ;将输入ascii码数值赋予指针
mov [si],al
inc di ;指针地址加一
inc si
inc cx ;计数加一
cmp al,0dh ;判断输入是否结束(0dh是回车)
jnz input
mov al,'$'
mov [si],al
mov dl,0ah ;换行
mov ah,02h
int 21h
xor ax,ax ;将ax清零
mov ah,01h
int 21h
lea si,msg3 ;si赋值为比较变量
mov [si],al
mov bl,30h
mov bh,30h
lea di,msg2
k2: cmp al,[di] ;比较字符串变量
jnz k1 ;不相等跳出循环
inc bl ;记录相等字符个数

k1: inc di
loop k2
mov ah,02h ;显示输出单字符
int 21h
mov dl,bl ;将查找字符个数输出
int 21h
mov ax,0
mov bx,0
mov cx,0
mov dx,0
lea si,msg3
lea di,msg1
w:
mov al,[si]
cmp al,[di]
jnz q
call disp ;调用变色的程序

q: inc di
inc cl
mov al,'$'
cmp [di],al

jnz w
dly_qrtr proc near ;延时子程序
push cx
push dx
mov dx,60000
d11:mov cx,8000
d12:loop d12
dec dx
jnz d11
pop dx
pop cx
ret
dly_qrtr endp
exit:mov ah,4ch
int 21h
disp proc near
push ax
push bx
push cx
push dx
push di
push si
mov bh,0
mov dh,0
mov dl,cl
mov ah,02
int 10h
mov al,[si]
mov bl,19 ;颜色选择
mov cx,1 ;变色
mov ah,09
int 10h
call dly_qrtr ;调用延时程序
pop si
pop di
pop dx
pop cx
pop bx
pop ax
ret
disp endp
code ends
end start




...全文
439 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧