Surinkimas - dauginimas iš konstanta

Jūs galite atlikti dauginimą naudodami daugialypės terpės instrukcijas, pvz., Imul ir mul, surinkimo kalbos kode, kaip Mul name_register. Procesorius viduje daugina programavimo kodus, atskirdamas dydžių parametrus, pvz., „Eax“, „ax“ ir „al“, ir tada išsaugo rezultatą „eax“ arba „ax“ kaip „žemą“, o rezultatus - „edx“ arba „dx“ kaip „reikšmingiausius“. paskutinį kartą įrašytas, jei daugiklis yra didesnis nei baitas.

Kadangi daugialypės terpės failai yra didžiuliai atmintyje, jums gali tekti perkelti vertes į „eax“, kad jas būtų galima padauginti iš registro, o registro rezultatas turi būti „eax“, su ankstesne verte perrašyta. Nepaisant to, jei reikia dauginti registrą pastoviu, įterpkite rezultatą į registrą ir tada naudokite nuorodą su instrukcija „lea“.

Trumpas intro

Asamblėjos kalbos yra žemo lygio kalbos, skirtos programuoti kompiuterius ir pirmą kartą sukurtos 1950-aisiais. Jie dažniausiai vadinami antrosios kartos programavimo kalbomis. Svarbus asamblėjos kalbos bruožas yra tai, kad jie pašalino daug klaidų ir laiko reikalaujančių operacijų, reikalingų pirmosios kartos programavimui.

Daugyba surinkime

Asamblėjoje galite dauginti du numerius naudodami instrukcijas mul (unsigned numbers) ir Imul. Jie naudojami taip:

 mul name_registry 

Procesorius padidina „eax“ arba „ax“ arba „al“ (priklausomai nuo registro dydžio, kuris pateikiamas parametruose) turinį ir išsaugo rezultatą „eax“, „ax“, „edx“ arba „dx“.

Naudojant mul yra gana varginantis, nes turėsite perkelti padaugintą reikšmę į eax, vertė, padauginti į kitą registrą, ir registras, turintis rezultatą, turi būti eax.

Tačiau, jei norite tiesiog padauginti registrą pastoviu ir pateikti rezultatą pasirinktame registre, galite naudoti nuorodą su instrukcija „lea“ (įkelti efektyvų adresą). Ši instrukcija naudojama atkurti atmintyje esančių duomenų adresą.

 lea destination_registry, [memory_address]; įdėkite atminties_pavadinimą į paskirties vietą 

Didelis šio privalumas yra tas, kad naudojant konstantą nereikia naudoti papildomo atminties adreso. Įsivaizduokite, kad norite dauginti ecx 7 ir išsaugoti rezultatą ebx, komanda būtų:

 lea ebx, [ecx * 7] 

Pastaba: negalite padauginti dviejų registrų, naudodami šį nuorodą.

Ankstesnis Straipsnis Kitas Straipsnis

Geriausi Patarimai