Tak uz si sa dal na asm ? Si robis srandu, nie ?

Scitanie aj odcitanie sa na 68k robi rovnako aj so znamienkom aj bez znamienka.
Cize ked das 126+3, tak vysledok je stale 129 ($81).
Zalezi na tebe s akymi hodnotami robis (ci so znamienkom=signed alebo bez znamienka=unsigned).
V Cecku si si dal bud BYTE alebo UBYTE.
V Asm, ak mas na mysli so znamienkom kontrolujes si V priznak. Ak mas na mysli bez znamienka kontrolujes si C priznak v SR.
K tej 1) :
Ked mas rozsah od -128 do +127, tak 126+3 = -127 preto lebo si presiahol hornu hranicu rozsahu (overflow) a zvysok priratavas od spodnej hranice rozsahu. Keby si mal 126+4, tak ti vyjde -126, 126+5=-125, atd...
Keby si bol v rozsahu, napr 123+3=126, tak ti nenastavi priznak pretecenia (overflow = V)
k tej 2):
Priznak prenosu sa nemeni z C na V ! Len sa nastavuje priznak V (pretecenie) a N (negativne). Je to koli tomu ako som pisal na zaciatku, 68k procesor scita 126+3 a vysledok je 129 a nastavi priznaky. Zalezi na programatorovi ako s tym nalozi, ci to bude brat ako 129 alebo ako -127.
Ked si das napr. 254+3, tak ti vyjde 1 a nastavi sa priznak C a priznak X, lebo si prekrocil rozsah 255.
Neviem ako si dostal -255, ked robis v rozsahu od 0 do 255.

Plati, co si sa docital aj v AR: Rozdiel je len ten, akym sposobom hodnoty INTERPRETUJEME !
Zase ti mozem odporucit, ak uz mas nainstalovany AsmOne alebo AsmPro, sprav si jednoduchy program, skompiluj a spust ho a pozri si hodnoty v registroch a priznaky...
Neviem naco ti to tu vlastne pisem, aj tak sa na to vyprdnes ako na C....
Au revoir !
PS: Mal si dat nadpis: "Assembler - Lisiakova logika"
Vložit komentář: