汇编中的lea si,string1是什么意思?把下边这个程序给解释一下:data segmentstring1 db 'Hello World!'len equ $-string1string2 db len dup(?)data endscode segmentmain proc farassume cs:code,ds:data,es:datastart:mov ax,datamov ds,axmov
来源:学生作业帮助网 编辑:作业帮 时间:2024/08/29 04:50:16
汇编中的lea si,string1是什么意思?把下边这个程序给解释一下:data segmentstring1 db 'Hello World!'len equ $-string1string2 db len dup(?)data endscode segmentmain proc farassume cs:code,ds:data,es:datastart:mov ax,datamov ds,axmov
汇编中的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 segmentstring1 db 'Hello World!'len equ $-string1string2 db len dup(?)data endscode segmentmain proc farassume cs:code,ds:data,es:datastart:mov ax,datamov ds,axmov
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里面去.利用的是重复前缀和数据串操作指令movsb
lea 是取操作数2的地址,放到操作数1中
这个程序的目的是将一个字符串,复制到另一个字符串中。