Összeadás művelet
ADD: Az ADD utasítás hozzá adja a forrás operandus értékét a cél operandushoz. A két operandus mérete meg kell, hogy egyezzen. Az utasítás szintaxisa:
ADD cél, forrás
A forrás tartalma változatlan marad, az cél operandus értéke pedig maga az összeg lesz. A lehetséges operandusok halmaza megegyezik a MOV utasítás esetén tárgyaltakkal.
Példák:
MOV EAX, 3h ; EAX = 3h
ADD EAX, 5h ; EAX = EAX + 5h = 3h + 5h = 8h
ADD EAX, EBX ; EAX = EAX + EBX
ADD AX, BX ; AX = AX + BX
ADD EAX, BX ; Helytelen! Méretbeli különbségek!
ADAT1 DD 912, 920, 928, 936, 944 ; adatszegmens tartalma
MOV ESI, offset ADAT1 ; ESI regisztert ráállítjuk az ADAT1-re
MOV EAX, 5d ; EAX = 5
ADD EAX, [ESI] ; EAX = EAX + [ESI] = 5 + 912 = 917
Ha egy 8 bites és egy 16 bites, vagy egy 16 bites és 32 bites számot szeretnénk összeadni előjelhelyesen, akkor assemblyben a 8 és 16 bites pár esetén a 8 bites operandust 16 bitesre, a 16 és 32 bites pár esetében pedig a 16 bites operandust 32 bitesre kell konvertálnunk.
Az ADD utasítás módosítja a Z, C, A, S, P és O flag értékét a STATUS regiszterben, viszont mi csak a C, az O és az S flag értékeivel foglalkozunk. Az összeadás során ügyelni kell a túlcsordulásokra. 8, 16 és 32 biten is különböző intervallumban tudunk tárolni előjeles számokat. Az egyszerűség kedvéért most figyeljük csak 8 biten a flag-ek viselkedését.
Ahhoz, hogy Visual Studio-ban előhozzuk a flag értékeket, Debug módban nyissuk meg a Regisztereket megjelenítő ablakot, majd az ablakon belül jobb egérgombbal kattintva, az előugró menüsorból válasszuk ki a Flags menüpontot.