汇编 main.s文件中程序,实现将数据段中变量src_str的内容拷贝到变量dst_str
-刚接触不会,请教!!main.s文件中程序,实现将数据段中变量src_str的内容拷贝到变量dst_strAREAmy_prog,CODE,READONLYENTRY。...
-刚接触不会,请教!!
main.s文件中程序,实现将数据段中变量src_str的内容拷贝到变量dst_str
AREA my_prog,CODE,READONLY
ENTRY
。。。。。
AREA my_dt,DATA,READWRITE
src_str DCB "EmbeddedSystem\0"
dst_str SPACE 32
END 展开
main.s文件中程序,实现将数据段中变量src_str的内容拷贝到变量dst_str
AREA my_prog,CODE,READONLY
ENTRY
。。。。。
AREA my_dt,DATA,READWRITE
src_str DCB "EmbeddedSystem\0"
dst_str SPACE 32
END 展开
展开全部
CLD #清除direct flags
mov esi, src_str #源操作数地址送到 [DS] esi 寄存器
mov edi, dst_str #目的操作数送到 [ES] edi 寄存器
LOOP: # 标签lable, LOOP
loadsb #将源操作数[DS] esi中的字符串,按照字节,一个一个字节送到 AL寄存器
stosb # 将AL中的一个字节字符送到目的操作数寄存器 [ES] edi
testb AL, AL # 判断AL中字符是不是NULL, 如果是,则表示已经复制到了字符串末尾,退出
JNZ LOOP # 如果AL中不是NULL,那么表示还没复制完,跳转到LOOP,继续复制
# 否则,复制完成,退出
以上只是大概流程,不同的汇编编译器,具体字符串名称,和格式略有不同。但是意思是一样的。
你也可以使用 REP; MOVSB 指令对实现,不过这需要先计算字符串长度。
mov esi, src_str #源操作数地址送到 [DS] esi 寄存器
mov edi, dst_str #目的操作数送到 [ES] edi 寄存器
LOOP: # 标签lable, LOOP
loadsb #将源操作数[DS] esi中的字符串,按照字节,一个一个字节送到 AL寄存器
stosb # 将AL中的一个字节字符送到目的操作数寄存器 [ES] edi
testb AL, AL # 判断AL中字符是不是NULL, 如果是,则表示已经复制到了字符串末尾,退出
JNZ LOOP # 如果AL中不是NULL,那么表示还没复制完,跳转到LOOP,继续复制
# 否则,复制完成,退出
以上只是大概流程,不同的汇编编译器,具体字符串名称,和格式略有不同。但是意思是一样的。
你也可以使用 REP; MOVSB 指令对实现,不过这需要先计算字符串长度。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询