Ich muss das folgende Problem lösen:
Ich muss 4 Arrays im Speicher, jedes Array hat 10 Zahlen, die die Größe von einem Byte sind.
Jetzt muss ich den Weg finden zu überprüfen, ob eine der Zahlen aus einer Zeichenfolge ein Paar in einer anderen Zeichenfolge haben, und wenn sie es tun, muss ich diese Antworten auf Stack setzen.Wie Elemente von zwei Arrays in Assembly zu vergleichen?
Das ist, was ich bisher getan:
arr1 db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
arr2 db 2, 11, 12, 13, 14, 15, 16, 17, 18, 19
arr3 db 1, 20, 21, 22, 23, 24, 25, 26, 27, 28
arr4 db 1, 29, 30, 31, 32, 33, 34, 35, 36, 37
lea si, arr1
lea di, arr2
mov al, 0
mov bl, 0
mov cx, 10
loopOne:
loopTwo:
cmp [si+al],[di+bl]
je done
inc al
loop loopTwo
inc bl
mov al, 0
loop loopOne
done:
mov dl, si+al
inc 21h
ret
Ich emu8086 verwenden.
EDIT:
Dies ist, wie es in Java aussehen würde:
public class Main {
public static void main(String[] args) {
int[] arr1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] arr2 = { 1, 11, 12, 13, 14, 15, 16, 17, 18, 19};
int[] arr3 = { 1, 20, 21, 22, 23, 24, 25, 26, 27, 28};
int[] arr4 = { 1, 29, 30, 31, 32, 33, 34, 35, 36, 37 };
int a = 0; //counter of matches in every pair of arrays
for (int i = 0; i < arr1.length ; i++) {
for(int j = 0; j < arr2.length ; j++){
if(arr1[i] == arr2[j]){
a++;
}
}
}
//instead of printing, the number of matches (a) should be pushed on to stack
System.out.println("Number of matches: " + a);
a = 0;
for (int i = 0; i < arr1.length ; i++) {
for(int j = 0; j < arr3.length ; j++){
if(arr1[i] == arr3[j]){
a++;
}
}
}
System.out.println("Number of matches: " + a);
a = 0;
for (int i = 0; i < arr1.length ; i++) {
for(int j = 0; j < arr4.length ; j++){
if(arr1[i] == arr4[j]){
a++;
}
}
}
System.out.println("Number of matches: " + a);
a = 0;
for (int i = 0; i < arr2.length ; i++) {
for(int j = 0; j < arr3.length ; j++){
if(arr2[i] == arr3[j]){
a++;
}
}
}
System.out.println("Number of matches: " + a);
a = 0;
for (int i = 0; i < arr2.length ; i++) {
for(int j = 0; j < arr4.length ; j++){
if(arr2[i] == arr4[j]){
a++;
}
}
}
System.out.println("Number of matches: " + a);
a = 0;
for (int i = 0; i < arr3.length ; i++) {
for(int j = 0; j < arr4.length ; j++){
if(arr3[i] == arr4[j]){
a++;
}
}
}
System.out.println("Number of matches: " + a);
a = 0;
}
}
Können Sie einen Java-Code hinzufügen, der zeigt, was Sie versuchen zu tun. Es ist mir immer noch nicht klar. – Johan