目录 上一页 下一页 下一章

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

  可见这个问题的核心是两次将字符串移动位置。我们刚刚学过CMPS指令,它可以直接比较在存储器中的两串数据,那么有没有串指令可以直接在内存中移动数据串呢?
  回答是肯定的。请看程序INSSTR1.ASM:
INSSTR1.ASM
data

string
buffer
substrg
data

code

main














main
move_str










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
push
push
push
mov
mov
mov
mov
add

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



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

near
ax
cx
si
di
es
ax,data
es,ax
si,offset string+55
di,si
di,bx


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







;初始化DS寄存器

;DX寄存器指向字符串STRING
;显示字符串

;BX寄存器设置字符串中间空出的字符数
;调用MOVE_STR子过程分离字符串
;显示分离后的字符串
;BX寄存器指向子串
;DI寄存器设置插入点
;调用INSERT_STR子过程插入子串
;显示完整的字符串
;结束程序


;MOVE_STR子过程
;保存将要使用的寄存器




;设置ES寄存器指向数据段

;SI寄存器指向源字符串末尾

;DI寄存器指向源串末尾后第八个字节处

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章