F1 Help! La solución que buscabas

Desarrollo, programación, tips, consejos y soluciones para los usarios de PC

domingo, 20 de septiembre de 2009

Contador de Bits

Este codigo cuenta los bits prendido (en uno) de un entero, programado en Assembler, Sintaxys AT&T.
.data
s: .string "%d \n"
l: .long -1
.text

.global main
main:
movl $0,%ebx #ebx es nuestro contador
movl $0,%ecx #ecx es nuestro contador de ciclos
movl l,%eax #carga el long en memoria
rotador:
inc %ecx # i++
ror %eax # rota el eax
adc $0, %ebx # suma el carry
cmp $32,%ecx
jnz rotador
#jmp rotador
return:
pushl %ebx
pushl $s
call printf
addl $8, %esp
movl $0, %eax
ret

Podemos cambiar las siguientas lineas:
return:
pushl %ebx
pushl $s
call printf
por: movl %ebx, %eax y podemos usar esta linea como una funcion

No hay comentarios: