Asembler
Z Nonsensopedii, polskiej encyklopedii humoru
Wersja z dnia 12:41, 20 lip 2007 autorstwa Laurusnobilis (dyskusja • edycje) (robot dodaje: en:Assembly language)
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!).
Hello World
algin 1,1 int zero dodawaj tekst .code wyswietl tekst tekst=Hello World txt = tekst .code nop nop nop nop nop txt Hello nop push nop push nop push exe Hello nop push push push int linie push nop Lista: Hello World nop push nop nop push nop nop nop nop nop nop nop nop push Lista: Lista
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