【发布时间】:2015-03-24 21:53:10
【问题描述】:
我正在尝试使用 x86 程序集 (TASM) 创建一个程序,该程序穿过 2 组数组并使用 for 循环在两个数组之间进行基本添加。但是,我从未在汇编中使用过 for 循环或数组,所以我对如何实现它感到很困惑。
假设我有这个 pusodo 代码:
for i := 0 to n-1 do
s := a[ i] + b[ i];
...
endfor;
到目前为止,这是我的代码,它分别采用 si and di 中的 array a and b 和 cx 中的 n 大小,我将如何在我的代码中实现上述 pusodo 代码?
m dw ?
s dw ?
.code
extrn putint: proc
public maxp_ip
maxp_ip proc ;(n)
; computes the max-plus inner product between two vectors a and b of length n
; input: CX = n
; SI = a
; DI = b
; output: AX = m
; save regs
push si
push di
push ax ; assigned to m
push bx ; assigned to s
push cx
; m := -32768
mov m, -32768
; for i := 0 to n-1 do
请注意,上面的代码不是我的全部代码,只是我想要实现 for 循环和加法的部分。另外,你能否用示例代码解释一下我将如何做到这一点(我是一个视觉学习者,所以我需要看看如何做到这一点,抱歉)。谢谢。
【问题讨论】:
-
首先使用
if和goto重写for循环。那应该稍后直接映射到组装。如果您是视觉学习者,请绘制流程图。
标签: arrays for-loop assembly x86