04.05.2009., 23:36
|
#3
|
E Pluribus UNIX
Datum registracije: Oct 2002
Lokacija: M82
Postovi: 6,750
|
Citiraj:
Autor hydek
imam problem, i to malo veći
znaci kroz nekakve procedure naći aritmetičku sredinu...
Fino odradim max član, pa min član.
Max spremim u bl (8bitni su brojevi), a min u bh...
Problem nastaje kada zelim ispisati (izračunati) aritmetičku sredinu (min i max clana), te mi uporno ispisuje 6 (kao brojeve unesem 1, 2, 3, 4, 5)...
Jel tko zna bar u čemu je problem...
|
Gdje ti je kod?
Pogledaj ovo:
Code:
$ cat arithmetic.c
#include <stdio.h>
int ax, dl, ah, al, ah_b, al_b;
int main() {
__asm__(
"mov $0, %ax \n"
"mov $1, %dl \n"
"add %dl,%al \n"
"mov $2,%dl \n"
"add %dl,%al \n"
"mov $3,%dl \n"
"add %dl,%al \n"
"mov $4,%dl \n"
"add %dl,%al \n"
"mov $5,%dl \n"
"add %dl,%al \n"
"mov %al, al_b \n"
"mov %ah, ah_b \n"
"mov $9,%dl \n"
"div %dl \n"
"mov %dl, dl \n"
"mov %al, al \n"
"mov %ah, ah \n"
);
printf("Before division:\tAL %d\tAH %d\nDivided by:\t\tDL %d\nAfter division:\t\tAL %d\tAH %d\n", al_b, ah_b, dl, al, ah);
return 0;
}
$ gcc -O2 -fomit-frame-pointer -W -Wall -g arithmetic.c -o arithmetic.asm
$ ./arithmetic.asm
Before division: AL 15 AH 0
Divided by: DL 9
After division: AL 1 AH 6
za float division, tj.
Code:
Before division: AL 15 AH 0
Divided by: DL 5
After division: AL 3 AH 0
u tvom konkretnom slucaju, kako bi i trebalo biti...
Dakle, treba nam tvoj kod da vidimo gdje je zapelo...
|
|
|