Assembly: Hogyan lehez itt a JNZ helyett JZ-t használni?
Szóval a feladat a következő:
CÍMKE:
.....
JNZ CÍMKE
Itt a JNZ-t ki kellene cserélni JZ-re, úgy, hogy a program működése ne változzon.
Nem vagyok otthon az assemblyben, de általánosan:
JNZ label1
...helyett
JZ next
JUMP label1
:next
Használnak még emberek assemblyt? Cool. Én vagy 2 éve nem használtam, de azelőtt is évek maradtak ki.
A válasz szerintem is az, amit az első írt, bár a mnemonic az JMP, az általam ismert assembly nyelvekben.
A JZ és a JNZ csak a zero flag-et nézi, tehát ha az előző művelet eredménye nulla, akkor JZ-re ugrik, ha nem nulla, akkor JNZ-re ugrik.
De pl:
xor ax,ax
jz label
Ez garantáltan ugrani fog, mert a ax regiszter nulla lesz és így a zero flag be lesz állítva.
"bár a mnemonic az JMP"
Igen, bocsánat, ezért is írtam, hogy sajna nem assembly-zek, szóval tekintsük ezt valami pszeudo-kódnak. :)
" Az a vicc, hogy első órán el is mondták, hogy nem nagyon használják már,"
Be is baxna, ha ma már nem használnák.
Ekkora baromságot!
Mondjuk ez a konkrét kérdés talán nem is az assembly gyakorlatban hasznos, hanem olyan, mint egy általános logikai feladat.
Egyébként szerintem sem árt legalább alapszinten ismerni, egyrészt a logika miatt (pl. mit is csinál egy fordító optimalizálás), másrészt ha valamiért egy disassemblerrel rá kell nézni egy kódrészletre, akkor legalább kb. értsük, mit csinál, harmadrészt ha valaki ebbe az irányba folytatja a tanulást, akkor ahhoz legyen egy alap. (Mert igen, van ahol használják.)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!