Autor: Grzegorz Szyszlo (znik_at_avalon.wbc.lublin.pl)
Data: Fri 11 Apr 1997 - 14:17:42 MET DST
tabor_at_infoserv.ii.uj.edu.pl (TABOR) wrote:
> Ponizsza funkcja assemblerowa rozpoznaje typ procesora. Znam na tyle
>assembler, ze rozumiem poszczegolne operacje, ale sensu calosci
>zupelnie nie "jarze"
temat jest raczej na grupe programming pl.comp.programming , ale
moze uda mi sie cos wyjasnic.
>GetCPUType proc far
> xor ax, ax #wyzerowanie akumulatora
> push ax #odlozenie akumulatora na stos
> popf #to co odlozyl akumulator, jest zdejmowane do flag
> pushf #spowrotem odlozenie flag. po co ? bo nie wszystkie
bity flag maja swoje zatrzaski. te bez zatrzaskow
sie nie wyzeruja (wartoscia z AX), przez co
beda mialy wartosc '1'.
> pop ax #to co bylo odlozone z flag jest odczytywane
do akumulatora. po co ? zeby te glupie bity
posprawdzac
> and ax, 0f000h #no wlasnie. masz sprawdzanie. zerowanie bitow, ktore
sa w kazdym typie procesora
> cmp ax, 0f000h #a teraz sprawdzenie, czy wystepuje brak bitow flag,
ktore sa charakterystyczne dla xt'kow .
> jnz getcpu_2 ; skocz jesli nie 8088,80188,8086,80186
#no i zmiataj stad jesli to nie ^^^^^^^^^^^^^^^^^
i tak dalej. nie chce mi sie reszty komentowac.
w kazdym badz razie w nowszych procesorach slowo stanu juz nie ma 16bitow,
lecz 32. dlatego tam sa inne pushy i popy.
> Interesuja mnie rowniez informacje o kodach rozkazow:
> xadd dx, dx
> setb ah
> smsw dx
tego nie wiem.
-- oOOo /===================================\ /=====\__/=====/ http://avalon.wbc.lublin.pl/~znik | | Grzegorz Szyszlo mailto:ZNIK_at_avalon.wbc.lublin.pl | \===================================================/ polecam http://www.agh.edu.pl/ogonki/ mime.html
To archiwum zostało wygenerowane przez hypermail 2.1.7 : Tue 18 May 2004 - 16:01:52 MET DST