Bytebeat

From Noisebridge
(Difference between revisions)
Jump to: navigation, search
(Created page with ' ; noise.asm -- just fooling around :-) ; mct and leif, ; Sun Feb 19 19:08:13 PST 2012 ; ; Build with: ; ; nasm -felf32 noise.asm ; ld -melf_i386 -o noise …')
 
Line 1: Line 1:
 +
<nowiki>
  
 
  ; noise.asm -- just fooling around :-)
 
  ; noise.asm -- just fooling around :-)
 
  ; mct and leif, ; Sun Feb 19 19:08:13 PST 2012
 
  ; mct and leif, ; Sun Feb 19 19:08:13 PST 2012
  ;
+
  ;  
 
  ; Build with:
 
  ; Build with:
  ;
+
  ;
 
  ;      nasm -felf32 noise.asm
 
  ;      nasm -felf32 noise.asm
 
  ;      ld -melf_i386 -o noise noise.o
 
  ;      ld -melf_i386 -o noise noise.o
Line 10: Line 11:
 
  ; Run with:
 
  ; Run with:
 
  ;
 
  ;
  ;       ./noise | aplay
+
  ;       ./noise | aplay
 
+
  
 
  global _start
 
  global _start
Line 27: Line 27:
 
         _start: mov esi, 0
 
         _start: mov esi, 0
  
                 ;int 3  
+
                 ;int 3
  
 
         .loop:  
 
         .loop:  
Line 35: Line 35:
  
 
                 mov eax, edi
 
                 mov eax, edi
                 cwd  
+
                 cwd
 
                 mov bx, 4
 
                 mov bx, 4
 
                 div bx  ; dx := (x >> 13) % 4
 
                 div bx  ; dx := (x >> 13) % 4
Line 57: Line 57:
 
                 inc esi
 
                 inc esi
 
                 jmp .loop
 
                 jmp .loop
 +
</nowiki>

Revision as of 20:20, 19 February 2012


 ; noise.asm -- just fooling around :-)
 ; mct and leif, ; Sun Feb 19 19:08:13 PST 2012
 ; 
 ; Build with:
 ;
 ;       nasm -felf32 noise.asm
 ;       ld -melf_i386 -o noise noise.o
 ;
 ; Run with:
 ;
 ;       ./noise | aplay

 global _start

 section .data

 section .bss

         var:    resb 1  ; one bye variable

 section .text

         ; f(x) = (x >> 10 ^ x>>((x>>13)%4)) % 256

         _start: mov esi, 0

                 ;int 3

         .loop: 

                 mov edi, esi
                 shr edi, 13 ; edi := x >> 13

                 mov eax, edi
                 cwd
                 mov bx, 4
                 div bx  ; dx := (x >> 13) % 4

                 mov eax, esi
                 mov cx, dx
                 shr eax, cl   ; eax := x >> ((x >> 13) % 4)

                 mov edi, esi
                 shr edi, 10   ; edi := x >> 10

                 xor eax, edi
                 mov [var], al

                 mov eax, 4      ; sys_write
                 mov ebx, 1      ; stdout
                 mov ecx, var    ; buffer
                 mov edx, 1      ; length
                 int 80h         ; syscall

                 inc esi
                 jmp .loop
 
Personal tools