汇编语言中的循环

Posted

技术标签:

【中文标题】汇编语言中的循环【英文标题】:Loops in Assembly Language 【发布时间】:2016-10-16 07:58:05 【问题描述】:

假设 A=1,2,3,4 和 B=2,3,4,5 是两个数组。我们如何使用循环来初始化它们?我们如何添加这些数组的相应元素并使用循环将它们存储到第三个数组中?我的汇编器是masm615。

include irvine32.inc

.data

word ayyay1 5 dup(?)

word ayyay2 5 dup(?)

.code

main proc

top:

----------

----------

loop top

call dumpregs

exit 

main endp   

end main

【问题讨论】:

添加您尝试开发的代码,以便我们了解您了解多少。 您不需要使用循环,因为您知道需要在数组中的值。为什么不用你所拥有的初始化 ayyay1 和 ayyay2? 是的,我知道我们可以在不使用循环的情况下初始化它们,但我要求我自己了解“我们如何使用循环来初始化两个数组以及添加它们对应的元素”。 【参考方案1】:

未经测试但总体指导:

include irvine32.inc

.data

word ayyay1 5 dup(?)
word ayyay2 5 dup(?)

.code

main proc

  lea  edi, [ayyay1]
  lea  esi, [ayyay2]
  mov  ax, 1
  mov  bx, 2
  mov  cx, 4

top:
    mov word [edi],ax
    mov word [esi],bx
    inc ax 
    inc bx
    add edi,2  ; add to point to next word location
    add esi,2  ; add to point to next word location
loop top

call dumpregs

exit

main endp

end main

【讨论】:

谢谢。我很感激你的时间。但它给出了许多错误。请帮助我编写无错误代码。 esiedi 需要增加 2。而且,如果 1 可以,有 3 个计数器似乎有点矫枉过正。 @Micheal,我说这是一般的伪代码,鉴于 OP 似乎是初学者,我不打算在 mov 中引入地址偏移量。不过我会修复错误,谢谢! 先生,它给出了许多语法错误。第 5 行(缺少运算符)、6(缺少运算符)、12(未定义符号)、13(未定义符号)、19(语法错误)、20(语法错误)。 放心,我知道答案。

以上是关于汇编语言中的循环的主要内容,如果未能解决你的问题,请参考以下文章

关于汇编语言中的LOOP指令

汇编学习-分支与循环

汇编语言 循环控制指令

写一段 ARM汇编程序:循环累加队列myarray中的所有元素,直到碰上零值元素,结果放在r4中.

如何在 x86 汇编语言中创建嵌套循环

汇编语言编一个八个灯,由左至右循环闪烁的程序~~~谢谢