目录 上一页 下一页 下一章

-110- PC机汇编语言实战精解

ES:DI寄存器组合、DF标志。同时还有一个指令前缀--REP。
  我们来讨论最后一个问题:如何在一个字符串中间插入一个新字符串?
  不知道大家能否独立地编制出一般方法的程序,笔者在下面给出了一个:
INSSTR.ASM
data

string
buffer
substrg
data

code

main














main

move_str









not_end:
segment
assume
db'The sa
db 9 dup
db'sunshi
ends

segment
assume
proc
mov
mov
mov
mov
int
mov
call
int
mov
mov
call
int
mov
int
endp

proc
push
push
mov
add
cmp
jnz
mov
mov
jmp


ds:data
me is presented to all
(?)
ne',0



cs:code
far
ax,data
ds,ax
dx,offset string
ah,9
21h
bx,9
move_str
21h
bx,offset substrg
di,9
insert_str
21h
ah,4ch
21h


near
si
ax
si,offset string
si,bx
byte ptr [si],'$'
not_end
al,byte ptr [si]
byte ptr [si+8],al
return



those who love sunshine',0dh,0ah,24h







;初始化DS寄存器指向数据段

;显示源字符串


;在源字符串的第九个字符位置插入新串
;调用MOVE_STR子过程空出新串的位置
;显示源字符串
;BX寄存器指向将插入的子串
;DI寄存器指向插入点
;调用INSERT_STR将子串插入源串
;显示处理后的字符串
;结束程序



;MOVE_STR子过程
;保存SI寄存器
;保存AX寄存器
;SI寄存器指向源字符串
;计算字符串的分离点
;分离点是字符串结尾吗?
;若不是结尾转NOT_END
;取得最后的'$'字符
;将此字符后移8个字节
;返回主过程


Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章