汇编 main.s文件中程序,实现将数据段中变量src_str的内容拷贝到变量dst_str

2024-11-01 14:42:19
推荐回答(1个)
回答1:

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 指令对实现,不过这需要先计算字符串长度。