回 帖 发 新 帖 刷新版面

主题:请各位高手帮忙

数据段中首地址mess1的数据区存放一个为35的字符串,用movsd指令来把它们传到附加段中的缓冲区mess2中去.

回复列表 (共3个回复)

沙发

俺不是高手,俺是菜鸟.
俺们上一周做过这个习题.
dseg segment
     mess1 db "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
dseg ends
eseg segment
     mess2 db ?
eseg ends
cseg segment
     assume ds:dseg,cs:cseg,es:eseg
start:
     mov ax,dseg
     mov ds,ax
     mov ax,eseg
     mov es,ax
     mov si,offset mess1
     mov di,offset mess2
     mov cx,35
     rep movsb
     mov ah,4ch
     int 21h
cseg ends
     end start

是不是这个?
[em1][em1][em1][em1][em1]

板凳

dseg segment
     mess1 db "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
dseg ends
eseg segment
     mess2 db ?
eseg ends
cseg segment
     assume ds:dseg,cs:cseg,es:eseg
start:
     mov ax,dseg
     mov ds,ax
     mov ax,eseg
     mov es,ax
     mov si,offset mess1     
     mov di,offset mess2
     mov cx,35               ;CX是在串处理时用作隐藏计数器的,
     rep movsb               ;重复串操作直到计数器CX的内容变成0为止
     mov ah,4ch
     int 21h
cseg ends
     end start
;嘿嘿,我刚才正问过这题目,里面有些东西刚弄懂,也来解释下,嘎嘎

3 楼

《IBM-PC汇编语言程序设计》第二版(清华大学出版社)中有明确的例子如下:
在数据段中有一个字符串,其长度为17,要求把他们转送到附加段中的一个缓冲区中
data segment       ;define data segment
   mess1   db    'personal computer $'
data ends
extra segment      ;define extra segment
   mess2   db    17 dup(?)
extra ends
;******************************************************
code  segment      ;define code segment
   assume cs:code,ds:datarea,es:extra
   .
   .
   .
;set ds register to current data segment
   mov ax.datarea   ;data segment addr
   mov ds.ax        ;into ds register
;set es register to current extra segment
   mov ax.extra     ;extra segment addr
   mov es.ax        ;into es register
   .
   .
   .
   lea si,mess1
   lea di,mess2
   mov cx,17
   cld
   rep movsb
          .
          .
          .
code  ends       ;end of code segment

我来回复

您尚未登录,请登录后再回复。点此登录或注册