; Да се напише подпрограма, която да връща в регистър EAX IP-адреса (IPv4), ; получен от низа тип ASCIIZ с начален адрес, подаден в регистър RDI. Низът е ; в десетичен формат с разделител между байтовете точка (пример: 192.92.129.2). option prologue:none, epilogue:none .code getipstr proc _getipstr proc MOV RSI,RDI ; Началният адрес е удобно да бъде в RSI заради LODSB .repeat XOR EAX,EAX ; Нов текущ байт - започни натрупването от нула CDQ .repeat IMUL EDX,EDX,10; Удесетори декущата стойност ADD DL,AL; Добави цифрата към нея LODSB ; Зареди поредния символ и приеми, че е цифра SUB AL,'0';Преобразувай от ASCII в двоичнодесетичен .until (below?) ; Цифра? Продължи със следващия символ от низа SHL ECX,8 ; Направи място за текущия байт MOV CL,DL ; и го запиши най-отдясно в IP-адреса .until (AL == -'0') ; Ако този байт е бил нулев терминатор, XCHG EAX,ECX ; върни IP-адреса в EAX RET _getipstr endp getipstr endp end