Asembler: Różnice pomiędzy wersjami

Z Nonsensopedii, polskiej encyklopedii humoru
M (Dodaję szablon {{stopka}})
 
(Nie pokazano 35 wersji utworzonych przez 27 użytkowników)
Linia 1: Linia 1:
{{programowanie}}
'''Asembler''' – z [[Język polski|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.
'''Asemblery''' ([[Język angielski|ang.]] „nie wiem o co biega”, pot. Assembler) – wielgachna rodzina [[Język programowania|języków programowania]] wymyślonych w celu utrudniania życia ludzkości. Programy zapisane w asemblerach są wręcz nieludzko długie, w związku z czym wykorzystywane są głównie przez [[hacker|prawdziwych hakerów]] i ich organy nabyte, potocznie zwane [[komputer osobisty|komputerami]].


== Hello World ==
Z informacji, jakich udało nam się uzyskać od [[FBI]] (Franek bije indianina), plany wdrożenia systemu asemblera zaczęto wprowadzać w [[Stany Zjednoczone Ameryki Północnej|USA]] z niezbyt zadowalającym rezultatem. Na 1000 pacjetów przeżywa 3 (sic!).
<syntaxhighlight lang="asm">
==Hello World==
TITLE hello-w
ss stos
algin 1,1
algin 1,1
int zero
int zero
dodawaj tekst
add tekst
.code
.code
wyswietl tekst
text tekst
wyswietl:
pop stos,viewer
view tekst
goto przypisz
goto wyswietl
.data
kielich=kradnij(kielich)
kieliszek=kielich(zdrobienie,for (wino or winko))
kufel=kubek(szklany,duży,for (piwo(jasne or ciemne) or piwko(jasne or ciemne)))
beka=znaczenie(2(kradnij(beka,drewniana)),1(beknij(głośno)))
beczka=beka(zdrobnienie,znaczenie(2))
szklanka=kradnij(szklanka))
szklaneczka=zdrobnienie(szklanka))
tekst=[[Hello World]]
tekst=[[Hello World]]
txt = tekst
txt = tekst
Linia 18: Linia 34:
txt Hello
txt Hello
nop
nop
push
push dx
mov tekst,dx
nop
nop
push
push
open piwo
wlej kufel,piwo
pij kufel
push ax
add ax,bx
int 21h
pop dx
int 10h
newlist lista,dx
open wódka
wlej wódka,szklaneczka
pij szklaneczka
add szklaneczka,bx
add bx,ax
add dx,ax
push dx
pop bx
push cx
pop dx
pop dx
pop dx
mov bx,ax
add ax,cx
add ax,dx
int 21h
open bimber
wlej bimber,beczka
pij beczka
add ax,cx
add cx,dx
add dx,cx
add ax,dx
mov dx,cx
push cx
pop dx
pop dx
pop dx
pop cs
pop ds
pop ds
pop es
pop ds
pop es
open wino
wlej wino,kieliszek
pij kieliszek
nop
nop
push
push
exe Hello
exec Hello
nop
nop
push
push
Linia 32: Linia 95:
nop
nop
Lista:
Lista:
Hello
(1)=:=Hello
World
(2)=:=World
nop
nop
push
push
Linia 48: Linia 111:
nop
nop
push
push
create LIST,Lista2
aint i
char znak
Przypisz:
i=znak(number)
znak-i
add Lista2(i),znak
push znak
goto przypisz
end
Lista: Lista
Lista: Lista
</syntaxhighlight>


== Przykład programowania systemu ==
== Przykład programowania systemu ==
Linia 61: Linia 135:


W asemblerze rozwiązanie tego samego problemu wygląda tak:
W asemblerze rozwiązanie tego samego problemu wygląda tak:
<syntaxhighlight lang="asm">

.data
.data
align 1024
align 1024
Linia 305: Linia 379:
int 21h
int 21h
nop
nop
</syntaxhighlight>

== Zobacz też ==
* [[C (język programowania)|C]]
* [[C++]]
* [[Fortran]]
* [[Brainfuck]]


{{stopka}}
[[Kategoria:Językoznawstwo]]
[[Kategoria:Języki programowania]]


[[en:Assembly language]]
[[ru:Ассемблер]]
[[ru:Ассемблер]]

Aktualna wersja na dzień 02:07, 21 gru 2021

Ten artykuł jest częścią cyklu naukowego języki komputerowe.

Języki programowania:


Inne języki komputerowe:


edytuj ten szablon

Asemblery (ang. „nie wiem o co biega”, pot. Assembler) – wielgachna rodzina języków programowania wymyślonych w celu utrudniania życia ludzkości. Programy zapisane w asemblerach są wręcz nieludzko długie, w związku z czym wykorzystywane są głównie przez prawdziwych hakerów i ich organy nabyte, potocznie zwane komputerami.

Hello World[edytuj • edytuj kod]

 TITLE hello-w
 ss stos
 algin 1,1
 int zero
 add tekst
 .code
 text tekst
 wyswietl:
 pop stos,viewer
 view tekst
 goto przypisz
 goto wyswietl
 .data
 kielich=kradnij(kielich)
 kieliszek=kielich(zdrobienie,for (wino or winko))
 kufel=kubek(szklany,duży,for (piwo(jasne or ciemne) or piwko(jasne or ciemne)))
 beka=znaczenie(2(kradnij(beka,drewniana)),1(beknij(głośno)))
 beczka=beka(zdrobnienie,znaczenie(2))
 szklanka=kradnij(szklanka))
 szklaneczka=zdrobnienie(szklanka))
 tekst=[[Hello World]]
 txt = tekst
 .code
 nop
 nop
 nop
 nop
 nop
 txt Hello
 nop
 push dx
 mov tekst,dx
 nop
 push
 open piwo
 wlej kufel,piwo
 pij kufel
 push ax
 add ax,bx
 int 21h
 pop dx
 int 10h
 newlist lista,dx
 open wódka
 wlej wódka,szklaneczka
 pij szklaneczka
 add szklaneczka,bx
 add bx,ax
 add dx,ax
 push dx
 pop bx
 push cx
 pop dx
 pop dx
 pop dx
 mov bx,ax
 add ax,cx
 add ax,dx
 int 21h
 open bimber
 wlej bimber,beczka
 pij beczka
 add ax,cx
 add cx,dx
 add dx,cx
 add ax,dx
 mov dx,cx
 push cx
 pop dx
 pop dx
 pop dx
 pop cs
 pop ds
 pop ds
 pop es
 pop ds
 pop es
 open wino
 wlej wino,kieliszek
 pij kieliszek
 nop
 push
 exec Hello
 nop
 push
 push
 push
 int linie
 push
 nop
 Lista:
 (1)=:=Hello
 (2)=:=World
 nop
 push
 nop
 nop
 push
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 nop
 push
 create LIST,Lista2
 aint i
 char znak
 Przypisz:
 i=znak(number)
 znak-i
 add Lista2(i),znak
 push znak
 goto przypisz
 end
 Lista: Lista

Przykład programowania systemu[edytuj • edytuj kod]

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

Zobacz też[edytuj • edytuj kod]