global main extern printf struc timespec ; структура, в которой линукс хранит время. Тут нужна для удобства в будущем .tv_sec: resq 1 .tv_nsec: resq 1 endstruc %include "timer.inc" section .note.GNU-stack section .data example: times 128 db 127 section .bss ; uses timespec model start: resq 2 finish: resq 2 deltatime: resq 2 section .text %define CLOCK_REALTIME 0 %macro TIME_10000 0-1+ ; принимает команду, которую будет пытаться обмерить по времени mov rax, 228 ; Время начала mov rdi, CLOCK_REALTIME mov rsi, start syscall mov rcx, 10000 %%loop %1 loop %%loop mov rax, 228 ; Время конца mov rdi, CLOCK_REALTIME mov rsi, finish syscall ; считаем секунды mov rax, [finish + timespec.tv_sec] sub rax, [start + timespec.tv_sec] mov [deltatime + timespec.tv_sec], rax ; считаем наносекунды mov rax, [finish + timespec.tv_nsec] sub rax, [start + timespec.tv_nsec] mov [deltatime + timespec.tv_nsec], rax %endmacro main: ; В качестве базы возьму inc ; регистровая inc ecx mov rax, example xor rbx, rbx ; косвенно-регистровая inc byte [rax] ; "Индексно-базовая", хотя у меня почти все может быть базой inc byte [rax + rbx] ; "Индексно-базовая" со смещением inc byte [rax + rbx + 122] ret