我遇到了彙編代碼問題。我是一個彙編程序的新手,所以我自己很難解決它。彙編程序任務 - 陣列的最小值和最大值
任務是:「查找數組的最小和最大元素。」
我已經完成的所有工作是搜索最大元素。我找不到,如何檢查最小的元素,以及我應該在哪裏進行驗證。或者,可能,我應該在找到最大元素後第二次遍歷元素?
代碼:
#include <conio.h>
#include <stdio.h>
#include <iostream.h>
void main() {
int N = 10, i;
clrscr();
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'似乎是正確的地方。 – 2010-01-20 12:04:08
謝謝你的幫助。我已經理解了算法,如何實現這種驗證,但不幸的是我無法編寫代碼來使此代碼可行。 – Alex 2010-01-20 12:25:31