Asembler: Różnice pomiędzy wersjami
Z Nonsensopedii, polskiej encyklopedii humoru
M (+ ru) |
M (Dodaję szablon {{stopka}}) |
||
(Nie pokazano 40 wersji utworzonych przez 31 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 mi się uzyskać od [[FBI]] ( Franek bije indianina ) plany wdrożenia systemu asemblera zaczęto wprowadzać w [[USA]] z niezbyt zadawalającym rezultatem. Na 1000 pacjetów przeżywa 3 (sic!). |
|||
<syntaxhighlight lang="asm"> |
|||
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 |
|||
</syntaxhighlight> |
|||
== Przykład programowania systemu == |
== Przykład programowania systemu == |
||
Linia 7: | Linia 128: | ||
Tak problem wygląda dla zwyczajnego człowieka: |
Tak problem wygląda dla zwyczajnego człowieka: |
||
Wino za |
Wino za 2 zł |
||
Kiełbasa za |
Kiełbasa za 5 zł |
||
+ Fajki za |
+ Fajki za 4 zł |
||
-------------------- |
-------------------- |
||
W sumie: |
W sumie: 11 zł |
||
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 56: | Linia 177: | ||
mov cx, ds:dx |
mov cx, ds:dx |
||
nop |
nop |
||
int cyferka=0 |
|||
cyferka+1= |
|||
drukuj |
|||
lista: |
|||
0+0 |
|||
888=888 |
|||
mov dx, offset wino |
mov dx, offset wino |
||
nop |
nop |
||
Linia 252: | 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ń 01: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]
Zobacz więcej artykułów w portalu o informatyce.