汇编中的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
把下边这个程序给解释一下:
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是什么意思?](/uploads/image/z/2528347-67-7.jpg?t=%E6%B1%87%E7%BC%96%E4%B8%AD%E7%9A%84lea+si%2Cstring1%E6%98%AF%E4%BB%80%E4%B9%88%E6%84%8F%E6%80%9D%3F)
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
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