主题:请各位高手帮忙
ally530
[专家分:0] 发布于 2005-12-01 11:41:00
数据段中首地址mess1的数据区存放一个为35的字符串,用movsd指令来把它们传到附加段中的缓冲区mess2中去.
回复列表 (共3个回复)
沙发
泥巴石头 [专家分:0] 发布于 2005-12-01 19:52:00
俺不是高手,俺是菜鸟.
俺们上一周做过这个习题.
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]
板凳
flymoon99 [专家分:0] 发布于 2005-12-01 20:53:00
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 楼
jinyuxlc [专家分:120] 发布于 2005-12-13 13:59:00
《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
我来回复