我已经在我的程序集类中给出了一个赋值,用于创建一个简单的程序来查找给定用户输入的球体的体积,我必须显示一条消息,然后显示一个小数量的体积...我来了使用以下代码但不幸的是我被遗留的地方所困扰,以及如何调用它们。任何人都知道我搞砸了哪些以及如何解决它?
Grade2z = as.data.frame(scale(Grade2[ ,9:14]))#create new dataframe that ONLY has the scaled CBM and aR scores
colnames(Grade2z) = c("Fallz", "Winterz", "Springz", "aRFallz", "aRWinterz", "aRSpringz")
Grade2 = merge(Grade2, Grade2z)
答案 0 :(得分:3)
来自Irvine32.asm:
;-----------------------------------------------------
WriteDec PROC
;
; Writes an unsigned 32-bit decimal number to
; the console window. Input parameters: EAX = the
; number to write.
所以而不是:
mov edx, OFFSET volumeNumber
call WriteDec
你应该使用:
mov eax, volumeNumber
call WriteDec
同样适用于volumeFraction
。
答案 1 :(得分:1)
由于代码粗糙,您的程序只能处理小于16的半径。
mov radius, al
mul radius
mul radius
第一次乘法结果是在AX中,但第二次乘法只使用AL!由于AL寄存器的16 * 16已经很大,因此最终可用的数字范围非常有限。
问题继续第三次乘法。这里因为 piMul 被定义为dword mul
使用EAX,但只有AX具有来自前一代码的定义值。
mul piMul
您可以定义 radius dword并写入
mov radius, eax
imul eax, radius
imul eax, radius
mul piMul
div piDiv
此外,迈克尔说 WriteDec 期望数字本身而不是数字的地址。因此,请删除 OFFSET 标记。