我正在使用教科书中的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 ==========
答案 0 :(得分:1)
我将ASCII水平制表符9添加到spacer的末尾,这消除了对spacer_choice过程的需要。
Spacer现在声明为:spacer BYTE ",", 9, 0