6 лекция

Содержание:

.globl	_start

.data
numm:	.ascii	"                              \n" 
lnumm = . - numm

.text
_start:
	movabsq		$12345678901234567890,	%rax
	xorl		%ecx, 	%ecx
	movq		$10,	%rbx
	
loop:
	xorq		%rdx,	%rdx
	div			%rbx   			#частное b + остаток d
	pushq		%rdx
	incl		%ecx
	testq		%rax,	%rax		
	jnz			loop			#если не ноль
	
	movq		$numm,	%rdi
2:
	popq		%rax			#вв младшем байте циферка, которую мы должны напечатаь
	addb		$0x30,	%al		#преобразуем в десятичную\двоичную??
	stosb

	movq		%rcx,	%rax
	xorq		%rdx,	%rdx
	movl		$3,		%ebx
	div 		%rbx
	#testb		%dl,	%dl
	cmp			$1,		%dl
	jnz 		3f
	

	movb		$0x20,	%al		#печатаем пробел каждые 3 символа
	stosb

3:
	decl		%ecx
	jnz			2b

	mov $1, %eax
	mov $1, %edi
	mov $numm, %rsi
	mov $lnumm, %edx
	syscall
	
	mov $60, %eax
	mov $1, %edi
	syscall

.globl	_start

base_number		= 16
digit_in_group  = 4

.data
numm:	.ascii	"                              \n" 
lnumm = . - numm

.text
_start:
	movabsq		$12345678901234567890,	%rax
	xorl		%ecx, 	%ecx
	movq		$base_number,	%rbx
	
loop:
	xorq		%rdx,	%rdx
	div			%rbx   			#частное b + остаток d
	pushq		%rdx
	incl		%ecx
	testq		%rax,	%rax		
	jnz			loop			#если не ноль
	
	movq		$numm,	%rdi
2:
	popq		%rax			#в младшем байте циферка, которую мы должны напечатаь
	
	cmpb		$9,		%al
	jbe			3f
	addb		$7,		%al
	

3:		
	addb		$0x30,	%al		#преобразуем в десятичную\двоичную??
	stosb

	movq		%rcx,	%rax
	xorq		%rdx,	%rdx
	movl		$digit_in_group,		%ebx
	div 		%rbx
	#testb		%dl,	%dl
	cmp			$1,		%dl
	jnz 		3f
	

	movb		$0x20,	%al		#печатаем пробел каждые 3 символа
	stosb

3:
	decl		%ecx
	jnz			2b

	mov $1, %eax
	mov $1, %edi
	mov $numm, %rsi
	mov $lnumm, %edx
	syscall
	
	mov $60, %eax
	mov $1, %edi
	syscall