汇编语言中的循环
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
【讨论】:
谢谢。我很感激你的时间。但它给出了许多错误。请帮助我编写无错误代码。esi
和 edi
需要增加 2。而且,如果 1 可以,有 3 个计数器似乎有点矫枉过正。
@Micheal,我说这是一般的伪代码,鉴于 OP 似乎是初学者,我不打算在 mov 中引入地址偏移量。不过我会修复错误,谢谢!
先生,它给出了许多语法错误。第 5 行(缺少运算符)、6(缺少运算符)、12(未定义符号)、13(未定义符号)、19(语法错误)、20(语法错误)。
放心,我知道答案。以上是关于汇编语言中的循环的主要内容,如果未能解决你的问题,请参考以下文章