| 
 | 
 
 
发表于 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
 
  复制代码 |   
 
 
 
 |