【发布时间】:2010-01-20 11:57:41
【问题描述】:
我遇到了汇编代码问题。我是汇编程序的新手,所以我自己似乎很难解决它。
任务是:“找到数组的最小和最大元素。”
我已经完成的只是搜索最大元素。我不知道如何检查最小元素以及我应该在哪里进行此类验证。或者,也许,我应该在找到最大元素后第二次遍历元素?
代码:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
void main() {
int N = 10, i;
clrscr();
// on this platform, int is 16-bit
int a[] = { 1, 4, -6, 12, -25, 10, 3, -4, 15, 7}, MAX, MIN, RESULT;
__asm{
mov cx, N
lea si, a
lodsw
mov bx, ax
mov dx, ax
dec cx }
m:
__asm{
lodsw
cmp dx, ax
jge m1
mov dx, ax
}
m1:
__asm{
loop m
mov MAX, dx
}
cout << "Max = " << MAX;
//cout << "Min = " << MIN;
getch();
}
【问题讨论】:
-
最好在计算最大值的同一循环中计算最小值,也就是说,对于每个元素,当你将它放在寄存器中时,同时测试它的最小值测试它的最大值。在标签
m1似乎是正确的地方。 -
感谢您的帮助。我已经了解算法,如何实现这种验证,但不幸的是我无法编写代码来使这段代码可行。
标签: c++ algorithm assembly x86-16