; Да се напише подпрограма, която да връща в регистър RAX цялата част на ; квадратния корен на числото в регистрите RSI:RDI, която цяла част е равна на ; броя последователни нечетни числа, които могат да се извадят от това число. option prologue:none, epilogue:none .code sqrt128 proc _sqrt128 proc MOV RAX,-1 ; Задай начална стойност -1 на 65-битовия умалител MOV RDX,RAX ; в RDX:RAX .repeat ADD RAX,2 ; Получи следващото нечетно число ADC RDX,0 SUB RDI,RAX ; Извади младшите думи SBB RSI,RDX ; Извади старшите думи .until (carry?) ; Ако още няма пренос, направи следващата итерация SHRD RAX,RDX,1;Раздели така получения умалител на 2 RET ; RAX = броя извадени последователни нечетни числа _sqrt128 endp sqrt128 endp end