汇编中的lea si,string1是什么意思?
发布网友
发布时间:2022-09-12 03:43
我来回答
共2个回答
热心网友
时间:2024-03-16 00:11
data segment
string1 db 'Hello World!' ;定义字符串
len equ $-string1 ;取字符串string1的长度
string2 db len p(?) ;定义第二个字符串
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里面去。利用的是重复前缀和数据串操作指令movsb
热心网友
时间:2024-03-16 00:11
lea 是取操作数2的地址,放到操作数1中
这个程序的目的是将一个字符串,复制到另一个字符串中。