作业帮 > 综合 > 作业

汇编中的lea si,string1是什么意思?

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/30 21:41:46
汇编中的lea si,string1是什么意思?
把下边这个程序给解释一下:
data segment
string1 db 'Hello World!'
len equ $-string1
string2 db len dup(?)
data ends
code segment
main proc far
assume cs:code,ds:data,es:data
start:mov ax,data
mov ds,ax
mov es,ax
lea si,string1
lea di,string2
cld
mov cx,len
rep movsb
mov ah,4h
int 21h
main endp
code ends
end start
汇编中的lea si,string1是什么意思?
data segment
string1 db 'Hello World!' ;定义字符串
len equ $-string1 ;取字符串string1的长度
string2 db len dup(?) ;定义第二个字符串
data ends
code segment
main proc far
assume cs:code,ds:data,es:data
start:mov ax,data
mov ds,ax
mov es,ax ;使当前数据段和当前附加段重叠
lea si,string1 ;将string1的偏移地址放到si中,使si指向string1
lea di,string2 ;将string2的偏移地址放到的di中,使di指向string2
cld ;使方向标志DF=0,每处理完一个数据,地址自动增量
mov cx,len ;为后面的循环做准备
rep movsb ;带重复前缀的数据串操作指令,意思是当cx不为零时,就把当前数据段si指出的那个字节送到当前附加段di指出的那个位置.前面当前数据段和当前附加段已经设置重叠了
mov ah,4h ;这里错误,应该是mov ah,4ch
int 21h ;程序结束,返回操作系统
main endp
code ends
end start
这个程序完成的功能是将string1的内容复制到string2里面去.利用的是重复前缀和数据串操作指令movs