当我删除此“ WORD 13”时,它工作正常,但我想移动整个'str1

问题描述 投票:0回答:1
include irvine32.inc

.data
str1 WORD 13
     BYTE 'Source String',0
desti BYTE 80 DUP(?)

.code
main PROC
mov esi,offset str1
inc esi
mov edi,offset desti
call dumpregs
mov ecx, lengthof str1
rep movsb

mov edx,offset desti
call WriteString
call crlf

exit 
main ENDP
END main
string assembly x86 masm irvine32
1个回答
1
投票

MASM的lengthof计算什么?仅2字节word而忽略了单独行上的byte数组?

您可以进行byte 13, 0, 'Source String',0以获取内存中相同的数据字节,但让MASM将整个内容视为一个“变量”。

或者,您也可以在标签的末尾加上str1_len equ end-start来自己计算尺寸,而不是依靠MASM的魔力将标签数据特别视为“变量”。

[任何时候您想要做的事都不是MASM期望的,通常都必须解决它。例如dword ptr从声明为不同大小的“变量”中加载4个字节。

© www.soinside.com 2019 - 2024. All rights reserved.