【问题标题】:when I remove this "WORD 13" it is working fine, but I want to move the whole 'str1当我删除这个“WORD 13”时它工作正常,但我想移动整个'str1
【发布时间】:2019-11-18 19:48:37
【问题描述】:
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

【问题讨论】:

  • 你还没有问过问题。
  • 大概你将不得不调整lengthof str1

标签: string assembly x86 masm irvine32


【解决方案1】:

MASM 的lengthof 计算什么?只是 2 字节的 word 并忽略单独一行上的 byte 数组?

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

或者您可以在末尾添加一个标签并使用str1_len equ end-start 自己计算大小,而不是依赖 MASM 将标签数据特别视为“变量”的魔法。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 2015-03-09
    • 2014-10-07
    • 2013-02-20
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多