i tak pogrubione bity tworzą razem wartość 12, z ktorą jest w pierwszej lini zamieszczonego kodu porównywany akumulator. funkcja test sprawdza, czy ta para bitów tworzy razem tą dwunastke, ale dzieje się to dla mnie na niezrozumiałej zasadzie - bowiem moim zdaniem porównując 12 z obecnoscia obu tych bitów powinna sie zapalić flaga zera (no bo porownanie dziala na zasadzie odejmowania arytmetycznego), a dzieje sie zupelnie na odwrót.. Dlaczego?
@FailedNormie no dobra, to rozumiem. Gdybym chciał przeczytać tylko jeden bit (powiedzmy ostatni), to flaga ZERA ustawiła by się momencie, gdy wynik tej operacji jest zerem. Natomiast jak to sie ma do porównywania PARY bitów na raz?
To co @FailedNormie podał jest fajnym przykładem na to jak to zrobić wykorzystując TEST, ale tak szczerze, to bym raczej tu na czytelność postawił, i zrobił po prostu tak:
and ax, 0Ch ; ew wczesniej zachować ax gdzieś cmp ax, 4 je costam16 cmp ax, 8 je costam32 cmp ax, 0Ch je costam64
Skąd ludzie w Polsce mają na Tesle, nowe AUDI, BMW, MErcedesy? Ja zarabiam 14 tys. netto i stać mnie jedynie na stare Reno. PRzyznajcie się, skąd macie kasę...
Jak dokładnie działa funkcja TEST w asemblerze 8086?
Mam taki króciutki fragment kodu:
w ax siedzi obecnie 16 bitowa wartosc, informujaca o obecnosci badz braku komponentów komputera (np. koprocesora, liczby pamieci ram itd.)
Na bitach 1010001011011100 mieści się informacja dot. pamięci RAM.
00 - blad odczytu
01 - 16 kb RAM
10 - 32 kb RAM
11 - 64+kb RAM
i tak pogrubione bity tworzą razem wartość 12, z ktorą jest w pierwszej lini zamieszczonego kodu porównywany akumulator.
funkcja test sprawdza, czy ta para bitów tworzy razem tą dwunastke, ale dzieje się to dla mnie na niezrozumiałej zasadzie - bowiem moim zdaniem porównując 12 z obecnoscia obu tych bitów powinna sie zapalić flaga zera (no bo porownanie dziala na zasadzie odejmowania arytmetycznego), a dzieje sie zupelnie na odwrót.. Dlaczego?
#programowanie #assembler #asembler
Komentarz usunięty przez moderatora
Komentarz usunięty przez moderatora
Komentarz usunięty przez moderatora
ew. czy rozpatrywanie 0008h, a po nim 0004h osobno da mi ten sam rezultat co jednakowe 0000Ch??
Komentarz usunięty przez moderatora
Komentarz usunięty przez moderatora
Komentarz usunięty przez moderatora
no bo zobacz, załóżmy mamy sobie taki ciag:
AX = 10010100
Twoj plan polega na tym, aby zanegowac AX czyli:
AX = 01101011
sprawdzić bit 3 i 4
i powrocic do AX = 10010100
przy czym Twoja instukcja zadziala na JZ, a nie JNZ - czyli zrobiles dokladnia to samo sprawdzanie, tylko zrobiles to w odwrotny sposob :D
Komentarz usunięty przez moderatora
To gdybyśmy badali tylko jeden bit, to też musimy odwracać?
Komentarz usunięty przez moderatora
and ax, 0Ch ; ew wczesniej zachować ax gdzieś
cmp ax, 4
je costam16
cmp ax, 8
je costam32
cmp ax, 0Ch
je costam64