global _start

section .text

_start:

	mov	eax, 0b10010100101100110111110110111110
	;  эти битики будут выведены на печать
	
	mov	ecx, 0b00011000000110000001100000011000
	; Четыре недозаполненных ascii кодов символов '0' или '1', в который из флага переноса заталкивается битик 0 или 1

	%rep 8
	mov	ebx, ecx
	%rep    3
		shr	eax, 1 ; Захавываем битик в флаг переноса
		rcl	ebx, 1 ; Запихиваем из флага переноса в недозаполненные ascii коды
		rol	ebx, 7 ; Проматываем на следующий кусок
	%endrep
	shr	eax, 1
	rcl	ebx, 1 ; На последней стадии все то же самое, только проматывать уже не надо

	push ebx ; Теперь все битики всунуты, пихнем содержимое регистра в стек
	%endrep


    
	mov	eax, 04h ; write()
	mov	ebx, 01h ; stdout
	mov	ecx, esp ; распечатаем из стека
	mov	edx, 32  ; 32 символа
	int	80h
	
	mov	eax, 01h ; exit()
	xor	ebx, ebx ; errno
	int	80h