9. diel - Assembler - Ďalšie inštrukcie pre prácu s číslami

V minulej lekcii, Assembler - Podmienené a nepodmienené skoky , sme si povedali niečo o nepodmienených a podmienených skokoch, pomocou ktorých môžeme vytvoriť podmienky a cykly známe z vyšších jazykov.

V assembler tutoriále budeme inštrukciami ADC a SBB sčítať a odčítať veľké čísla. K násobenie a delenie použijeme inštrukcie MUL, IMUL, DIV, IDIV. Spomenieme si tiež LEA.

Sčítanie a odčítanie veľkých čísel

Zo školy si určite všetci pamätáme, ako sa sčítavajú dve čísla. Napíšeme si ich pod sebou a sčítame jednotlivé číslice sprava doľava. Ak je súčet číslic väčší než 9, prenáša sa jednička do vyššieho rádu.

Na počítaču slúži k prenosu jedničky bit CF (Carry Flag) v registri EFLAGS.

Inštrukcia ADC (Add With Carry)

Inštrukcie ADC sa od inštrukcia ADD líši iba v tom, že k výsledku navyše pripočíta jednotku, pokiaľ je nastavený príznak CF.

Príklad - Súčet dvoch 64-bitových čísel

Na nasledujúcom príklade si ukážeme, ako možno sčítať dve 64-bitová čísla v 32-bitovej aplikácii (v kompilátora MASM):

x1  dq 1234567890123
x2  dq 45678901345
y   dq ?

mov eax,dword ptr x1
add eax,dword ptr x2
mov dword ptr y,eax
mov eax,dword ptr x1+4
adc eax,dword ptr x2+4
mov dword ptr y+4,eax

Direktívou DQ definujeme 64-bitové globálne premenné. V premenných x1 a x2 sú


 

...koniec náhľadu článku...
Pokračuj ďalej

Vedomosti v hodnote stoviek tisíc získaš za pár eur

Došiel si až sem a to je super! Veríme, že ti prvé lekcie ukázali niečo nového a užitočného.
Chceš v kurze pokračovať? Prejdi do prémiovej sekcie.

Obsah článku spadá pod licenciu Premium, kúpou článku súhlasíš s Prevádzkovými podmienkami.

Čo od nás v ďalších lekciách dostaneš?
  • Prístup k jednotlivým lekciám podľa spôsobu obstarania.
  • Kvalitné znalosti v oblasti IT.
  • Zručnosti, ktoré ti pomôžu získať vysnívanú a dobre platenú prácu.

Popis článku

Požadovaný článok má nasledujúci obsah:

V assembler tutoriále budeme inštrukciami ADC a SBB sčítať a odčítať veľké čísla. K násobenie a delenie použijeme inštrukcie MUL, IMUL, DIV a IDIV.
Článok pre vás napísal Petr Laštovička
Avatar
Autor se věnuje vývoji webových aplikací v ASP.NET a aplikací pro Windows v C++ nebo C#.
Aktivity