Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 需要装配编程帮助(TASM)-展位';s算法_Algorithm_Assembly_Low Level_Tasm - Fatal编程技术网

Algorithm 需要装配编程帮助(TASM)-展位';s算法

Algorithm 需要装配编程帮助(TASM)-展位';s算法,algorithm,assembly,low-level,tasm,Algorithm,Assembly,Low Level,Tasm,我编写了一个算法来模拟Booth的算法,只使用Add、Sub和Logical运算符并返回十六进制值。我的Tasm编译器不断向我抛出这些错误。当我试图修改代码时,它仍然不起作用。谁能帮我一下吗 (29)行上的额外字符 (38)非法即时交易 (44)非法即时交易 (52)欠精符号:RES2 (126)应为指针类型 我的asm有点生疏,但您可以尝试以下更改: 第29行: mov ax,@data ; should pick up the address of the data segment 或者

我编写了一个算法来模拟Booth的算法,只使用Add、Sub和Logical运算符并返回十六进制值。我的Tasm编译器不断向我抛出这些错误。当我试图修改代码时,它仍然不起作用。谁能帮我一下吗

(29)行上的额外字符
(38)非法即时交易
(44)非法即时交易
(52)欠精符号:RES2
(126)应为指针类型


我的asm有点生疏,但您可以尝试以下更改:

第29行:

mov ax,@data  ; should pick up the address of the data segment
或者:

mov ax, seg prompt   ; seg takes only one variable, not multiple...
第38行:

mov [n1],bl      ; memory addresses need square brackets
第44行:

mov [n2],bl      ; memory addresses need square brackets
第52行:

mov dx,offset res    ; don't know where res2 came from
第126行-我不确定这里发生了什么

代码中的错误:


此行完全无效:

mov ax,seg prompt,prompt2,res,ans,hold,n1,n2.
它必须是公正的:

move ax,data
您还应该在
开始:
之前包含以下内容:

assume cs:code, ds:data, ss:stack
这些也是无效的,因为您想定义内存变量,我想:

n1=0
n2=0
应该是:

n1 db 0
n2 db 0
当您访问
n1
n2
时,请以这种方式编写,Stobor已经指出:

mov [n1],bl
mov [n2],bl
所有变量引用都是通过汇编中的“寻址”来完成的,因此方括号中的

而且您根本没有定义
RES2
,正如已经在评论中指出的那样

希望这有帮助

另见:


如果有不清楚的地方,请在此处添加注释。

如果您能帮我们一点忙,并向我们展示代码中的行号,那就太好了。第四个错误很快就能发现,您键入了res2,但您只有res。这一行完全无效:
mov ax,seg prompt,prompt2,res,ans,hold,n1,n2
。它必须是
移动ax,数据
。你也应该使用
假设cs:code,ds:data,ss:stack
我只是想问一下,为什么是asm??只要用C写你需要的东西,如果需要的话,反编译它。如果你真的关心性能,就用C写,分析它,找到瓶颈,然后用asm写C代码的那部分。这将节省您几天的工作。考虑到您所说的,我修改了代码,但mov[n1],bl mov[n2],bl仍然给我:>下面是我对第一个错误所做的修改:mov ax,seg提示符;,prompt2,res,ans,hold,n1,n2 mov ax,seg prompt2 mov ax,seg res mov ax,seg ans mov ax,seg hold mov ax,seg n1 mov ax,n2 mov ds,ax您不需要那么多“
mov ax,
”命令。。。这些命令的目的是将数据段的地址加载到ds寄存器。。。只需要一个。谢谢您的输入。当我在“开始”之前添加“假设cs:code,ds:data,ss:stack”时,我得到了许多(12)个相同类型的错误“未定义的符号:code”。
mov [n1],bl
mov [n2],bl