czy mi się wydaje , czy asembler naprawdę nie ma poleceń mnożenia i dzielenia, tylko trzeba samemu sobie napisać? [hurra]
Assembler w Procesorach x86 ma instrukcje mnozenia poszukaj na necie
NP:
mnozenie:
mov al,10h
mov ah,50h
mul ah
wynik, czyli 500h bedzie zapisany w ax
dzielenie:
mov ax,37
mov dl,12
div dl
wynik, czyli 3 znajdzie sie w al, natmiast reszta z dzielenia, czyli 1 w rejestrze ah
Ja jeszcze coś dodam :
Mnożenie:
MUL (BYTE) - mnoży AL. * (BYTE) wynik w AX
MUL (WORD) ? mnoży AX * (WORD) wynik w DX:AX
Gdy procesor 386 lub wyższy:
MUL (DWORD) ? mnoży EAX * (DWORD) wynik w EDX : EAX
Dzielenie :
Div (BYTE) - dzieli AX / (BYTE) wynik : AL -całości AH- Reszta
DIV (WORD) - dzieli DX : AX / (WORD) wynik : AX ? całości DX ? Reszta
Gdy procesor 386 lub wyższy :
DIV (DWORD) ? dzieli EDX : EAX / (DWORD) wynik : EAX ? całości; EDX ? Reszta
Jeśli mnożysz przez Potęgę dwójki np. 256 to 2 do potęgi 8 w skrócie 2^8 wystarczy że wykonasz przesunięcie na bitach SHL AX, 8 pomnoży AL. Przez 256 i wynik będzie w AX
Podobnie jest w drugą stronę jeśli chcemy podzielić przez np. 8 czyli 2^3 to wykonujemy przesunięcie w drugą stronę czyli w prawo SHR AX, 3 podzieli AX przez 8 i wynik umieści w AX
Dream Maker - zadajesz dziesiątki idiotycznych pytań a chcesz napisać własny kompilator? [rotfl]
Też zaczynałem Asma w Twoim wieku, ale nikogo nie stręczyłem pytaniami czy jest instrukcja do mnożenia... sam to znalazłem. Znajdź sobie jakiś kurs, przeczytaj go, pisz testowe aplikacje - nawet takie, które mają kilkanaście instrukcji i badaj jak działają. Dopiero potem przy poważniejszych problemach uderzaj na forum.
Aha... i odpuść sobie pisanie swojego kompilatora...
kto ci powiedział, że chcę?? po prostu chcę się nauczyć asma, to takie dziwne? :-|
//sam tak napisałeś w jednym z wątków - m.M