Asembler

Z Nonsensopedii, polskiej encyklopedii humoru

Asembler – z polskiego „niewiem o co biega”. Jest to język programowania wymyślony, ażeby utrudniać życie ludzkości. O co z tym wszystkim biega? A więc od początku 2009 roku, gdy pan L. dojdzie do władzy, ma nastąpić masowe wszczepianie chipów do głów nastolatków, którzy dzięki temu będą mniej wulgarni i będą podlegać władzy pana L.

Z informacji, jakich udało nam się uzyskać od FBI (Franek bije indianina), plany wdrożenia systemu asemblera zaczęto wprowadzać w USA z niezbyt zadowalającym rezultatem. Na 1000 pacjetów przeżywa 3 (sic!).

Przykład programowania systemu

Tak problem wygląda dla zwyczajnego człowieka:

        Wino za 2 zł
    Kiełbasa za 5 zł
 +     Fajki za 4 zł
--------------------
    W sumie:   11 zł

W asemblerze rozwiązanie tego samego problemu wygląda tak:

.data
  align 1024
  wino     dw 2   ;    1
  kiełbasa dw 5   ;    2
  fajki    dw 4   ;    3
  w_sumie  dw ?   ;    |
  dodaj    dd 0   ;    |
  ile      dw 3   ;  <-
.code
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  nop
  jmp start
 dodawaj proc near
  nop
  push ax
  nop
  sub ax,ax
  nop
  push ds
  nop
  mov ds, seg w_sumie
  nop
  push dx
  nop
  mov dx, offset w_sumie
  nop
  mov ds:dx, ax
  nop
  mov dx, offset ile
  nop
  push ecx
  nop
  mov cx, ds:dx
  nop
  int cyferka=0
  cyferka+1=
  drukuj
  lista:
  0+0
  888=888 
  mov dx, offset wino
  nop
  dec dx
  nop
  align 4096
  lista:
   nop
   inc dx
   nop
   call proc
   nop
   inc dx
   nop
  loop lista
  nop
  pop ecx
  nop
  pop dx
  nop
  pop ds
  nop
  pop ax
  nop
  ret
 dodawaj endp
 dodaj proc near
  nop
  push ecx
  nop
  xor ecx, ecx
  nop
  mov cx, ds:dx
  nop
  jmp bbb
 align 3
 aaa:
  nop
  mov bx, ds:dx
  nop
  align 65536
  dodawanie:
   nop
   inc bx
   nop
  loop dodawanie
  nop
  mov ds:dx, bx
  nop
  pop dx
  nop
  pop bx
  nop
  jmp ccc
 align 49
 bbb:
  nop
  push bx
  nop
  push dx
  nop
  mov dx, offset w_sumie
  jmp aaa
 align 107
 ccc:
  pop ecx
  nop
  ret
 endp dodaj
 pisz proc near
  nop
  push bp
  nop
  mov bp, 3
  nop
  push ax
  nop
  inc bp
  nop
  inc bp
  nop
  push bx
  nop
  inc bp
  nop
  inc ah
  nop
  inc bp
  nop
  inc ah
  nop
  inc bp
  nop
  sub bx, bx
  nop
  inc bp
  nop
  push ecx
  nop
  inc bp
  nop
  mov ecx, 1
  nop
  inc bp
  nop
  inc ecx
  nop
  inc ecx
  nop
  inc ecx
  nop
  inc bp
  nop
  add ecx,2
  nop
  inc bp
  nop
  inc ecx
  nop
  inc ecx
  nop
  inc ecx
  nop
  inc ecx
  nop
  inc ecx
  nop
  inc ecx
  nop
  align 32768
  znak1:
   nop
   and ah, 0
   nop
   or  ah, 1
   nop
   add dl, ah
   nop
   shl ah, ah
   nop
   add dl, ah
   nop
   inc dl
   nop
  loop znak1
  nop
  xor ah, ah
  nop
  int 21h
  nop
  add ecx, bp
  nop
  dec ecx
  nop
  align 8192
  znak2:
   nop
   dec dl
   nop
   dec dl
   nop
   dec dl
   nop
   dec dl
   nop
  loop znak2
  nop
  pop ecx
  nop
  pop bx
  nop
  pop ax
  nop
  pop bp
  nop
  ret
 endp pisz
 align 2048
 start:
  nop
  nop
  nop
  nop
  nop
  nop
  call dodawaj
  nop
  mov dl, 1
  nop
  call pisz
  nop
  call pisz
  nop
  mov ax,4c00h
  nop
  int 21h
  nop