在变量之间移动字符串

时间:2015-11-09 01:15:50

标签: string assembly cpu-registers masm32 irvine32

我正在使用教科书中的Irvine32库编写MASM程序。我想排列我的打印列,但我找不到任何关于如何使用制表符终止字符串,{/ 1}为C / C ++,所以我做了一个程序,确定了多少小数位number具有并相应地分配/t字符串变量。

我的问题是在尝试分配spacer一个新字符串时,我收到了错误。我试过了

spacer

mov spacer, "New String",0

以及为变量分配mov spacer, "New String" 并为该变量以及变量"New String"分配spacer。我现在已将变量OFFSET移至OFFSET,但我无法将edx移动到另一个变量中。

我非常感谢帮助和任何信息,以帮助更好地理解为什么这在装配或MASM中不起作用。感谢

有问题的程序:

edx

输出:

; Define the spacer based on the places in x
spacer_choice proc

    cmp x, 10
    JB SC1

    cmp x, 100
    JB SC2

    mov edx, OFFSET hundo_spacer
    JMP SC3

    SC1:
        mov edx, OFFSET one_spacer
        JMP SC3

    SC2:
        mov edx, OFFSET ten_spacer
        JMP SC3

    SC3:
        mov spacer, OFFSET edx
        RET
spacer_choice endp

完整代码:

1>------ Build started: Project: MASM4, Configuration: Debug Win32 ------
1>  Assembling composite.asm...
1>composite.asm(209): error A2032: invalid use of register
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations\masm.targets(50,5): error MSB3721: The command "ml.exe /c /nologo /Sg /Zi /Fo"Debug\composite.obj" /Fl"MASM4.lst" /I "c:\Irvine" /W3 /errorReport:prompt  /Tacomposite.asm" exited with code 1.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

1 个答案:

答案 0 :(得分:1)

我将ASCII水平制表符9添加到spacer的末尾,这消除了对spacer_choice过程的需要。

Spacer现在声明为:spacer BYTE ",", 9, 0