|
发表于 2019-5-12 16:35:27
|
显示全部楼层
本楼为最佳答案
本帖最后由 jackz007 于 2019-5-21 17:34 编辑
- stack segment para stack
- dw 80h dup(0)
- stack ends
- data segment para 'data'
- d1 db 0dh , 0ah ,'a string for testing.' , 0dh , 0ah , ' , 00
- d2 equ $ - d1
- data ends
- code segment 'code'
- assume cs:code , ds:data , ss:stack
- main proc far
- mov ax,data
- mov ds,ax
- mov es,ax
- mov al,'s' ; 准备使用 scasb 指令从 es:di 开始搜索字符 's'
- mov cx,d2 ; d2 = 整个目标字符串的长度
- mov di,offset d1 ; di 指向目标字符串
- cld ; 搜索方向为从前向后
- repne scasb ; 搜索过程持续到找到为止
- jnz m1 ; 如果最终没有找到就跳走
- sub byte ptr es:[di-1],' ' ; es:[di - 1]指向找到的字符,把它变成大写
- m1: mov dx,offset d1 ; 让 ds:dx 指向目标字符串
- mov ah,09h ; 准备用 ah = 09h 的DOS中断显示目标字符串
- int 21h ; DOS 中断调用
- mov ax,4c00h ; 准备退出程序
- int 21h ; DOS 中断调用
- main endp
- code ends
- end main
复制代码 |
|