Asembler średnia arytmetyczna

Asembler średnia arytmetyczna
0

siemanko. Mam 2 programiki napisane w asemblerze w których specjalnie zostało nasadzone kilka błędów. I wszystko byłoby dobrze gdybym umiał te błędy odnaleść i poprawić. Licze na waszą pomoc.
Oto te nieszczęsne programy

Program obliczajacy srednia arytmetyczna liczb w tablicy

Kopiuj
  .MODEL  TINY

Kod             SEG

                ORH     .120h
                ASSUM   CS:Kod, DS:Dane, SS:Stos

Start:
                jmp     Petla

DL_TABLICA      EQU     12
Tablica         DB      01h, 02h, 00h, 10h, 12h, 33h
                DB      15h, 09h, 11h, 08h, 0Ah, 00h
Srednia         DB      !

Poczatek:
                xor     bl, bl
                mov     bx, SEGMEMT Tablica
                mov     ch, DL_TABLICY

Petla:
                add     al, [bh]
                lop     Poczatek
                dec     bx

                mov     ah, Srednia
                div     DL_TABLICY

                mov     ax, 4C76h
                int     21h

Kod             ENDSEG

                END     Stop

no i drugi...

Program obliczajacy wzor: a*(b-c)/d

Kopiuj
 .MODEL  SMALLER

Dane            SEGMN

a               =       20
b               DW      10
c               DB      5
d               EQU     3
Wynik           DB      ?

Kod             END_SEGMN

Dane            SEGMN

                ASJUME  CS:Start, DS:Kod, SS:Stos

Start:
                mov     ds, OFSET Dan
                mov     ax, ds

                sub     ds, WORD PTR c
                mov     ah, b
                div     d

                mov     al, Wynik
                mul     a

                mov     ax, 4C0Gh
                int     21h

Kod             ENDSEGMN

Stosik          SEG     STAKC

?               DB      100h DUP [?]

Stosk           SEGEND

                END     Poczatek

z góry wielkie dzięki i pozdro:)

edytowany 4x, ostatnio: Shalom
VA
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 14 lat
0

pierwszy program:
1 błąd: "ORH .120h" zamiast "ORG 120h"
2 błąd: "Srednia DB !" zamiast "Srednia DB ?"
3 błąd: "DL_TABLICA EQU 12" zamiast "DL_TABLICY EQU 12"
4 błąd: "END Stop" zamiast "END Start"

0

dzieki ale ten programik już rozpykałem. z tym drugim mam troszke problemów. pozdro

Nevar
  • Rejestracja:około 22 lata
  • Ostatnio:ponad 6 lat
0

Jeżeli to program na zaliczenie przedmiotu czy coś w tym stylu to powiedz prowadzącemu, że jest debilem.

Kopiuj
;Program obliczajacy wzor: a*(b-c)/d

 .MODEL  SMALL

Dane            SEGMENT

a               dw       20
b               dW      10
c               dw      5
d               dw     3
Wynik           dw      ?

Dane            ENDS

Kod            SEGMENT

                ASSUME  CS:Kod, DS:Dane, SS:Stosik

Start:
                mov     ax, Dane
                mov     ax, ds

                mov   ax, b
                sub     ax,  c
                div     d
                mul     a
                mov   Wynik, ax

                mov     ax, 4C00h
                int     21h

Kod             ENDS

Stosik          SEGMENT     STACK

               DB      100h DUP (?)

Stosik           ENDS

                END     Start

0

powiem mu to na pewno. dzięki wielkie, życie mi ratujecie:)

0

przepraszam za odkopanie kotleta ale czy bylaby mozliwosc rozwiazania do tego 1 programu? Bo tych bledow w nim jest ciut wiecej niz juz tutaj podano. Generalnie wiekszosci sie pozbylem ale program albo wykonuje mi sie w nieskonczonosc albo po drobnych zmianach nie wyswietla niczego oprocz pustej linii. zadanie jest takie samo jak w 1 poscie tylko ze oprocz znalezienia bledow mamy przedstawic dzialajaca wersje. z gory dzieki

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
0

Skoro się pozbyłeś, to dawaj kod z błędami „pozbytymi”. To wyżej nie nadaje się do czytania.

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 4 godziny
0
Kopiuj
.MODEL  TINY

Kod             SEG

                ORG     100h
                ASSUM   CS:Kod, DS:Dane, SS:Stos

Start:
                jmp     Poczatek

DL_TABLICY      EQU     12
Tablica         DB      01h, 02h, 00h, 10h, 12h, 33h
                DB      15h, 09h, 11h, 08h, 0Ah, 00h
Srednia         DB      ?

Poczatek:
                xor     ax, ax
                mov     bx, OFFSET Tablica
                mov     cx, DL_TABLICY

Petla:
                add     al, [bx]
                adc     ah,0
                inc     bx
                loop    Petla

                mov     bh, DL_TABLICY
                div     bh
                mov     Srednia, al

                mov     ax, 4C76h
                int     21h

Kod             ENDSEG

                END     Start

Trochę lepsza wersja. Nie testowałem.

Nevar:
mul powinien być przed divem.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Shalom
VA
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 14 lat
0

Wpierw kilka ważnych uwag:

  1. Sądząc po dyrektywie org myślę, że to ma być program .COM. Jeśli tak to wszystkie rejestry segmentowe trzeba (a przynajmniej powinno się) ustawić na ten sam segment.
    W twoim jednak przypadku ds i ss są ustawione na NIEISTNIEJĄCE SEGMENTY!
    Powinno być
    ASSUM CS:Kod, DS:Kod, SS:Kod
    stos jest liczony od końca segmentu więc póki twój program jest mały nie powinno być problemów jak damy go na ten sam segment;)

  2. Jak ci się wydaje co robią poniższe dwie instrukjce?

Kopiuj
mov ax, 4C76h
int 21h

Bo według mnie i według opisów w necie (jakie dla pewności wyszukałem: http://rudy.mif.pg.gda.pl/~bogdro/dos/dos_int.htm#int21h ) jest to zamknięcie programu z kodem powrotnym 76h (a nie wypisywanie tekstu tak jak to powinno chyba być w tym miejscu programu)

  1. Offsety zwykle powinno przechowywać się w rejestrach si i di ("source index" i "destination index") bo po to one w sumie są a nie w bx jak u ciebie

  2. Nie wiem czy o tym wiesz ale jest takie coś w asemblerze co można nazwać "segmentami domyślnymi". Chodzi o to że zapis np. [si] w rzeczywistości oznacza ds:[si] itp. Podstawowe domyślne segmenty:
    [si]->ds:[si]
    [di]->es:[di]
    [sp]->ss:[sp]

Kod trochę poprawiony:

Kopiuj
.MODEL  TINY

Kod             SEG

                ORG     100h
                ASSUM   CS:Kod, DS:Kod, SS:Kod

Start:
                jmp     Poczatek

DL_TABLICY      EQU     12
Tablica         DB      01h, 02h, 00h, 10h, 12h, 33h
                DB      15h, 09h, 11h, 08h, 0Ah, 00h
Srednia         DB      ?

Poczatek:
                xor     ax, ax
                mov     si, OFFSET Tablica
                mov     cx, DL_TABLICY

Petla:
                add     al, [si]
                adc     ah,0
                inc     si
                loop    Petla

                mov     bl, DL_TABLICY
                div     bl
                mov     Srednia, al

;
;   tu musisz dodac zamiane liczby na tekst i jej wypisanie (int 21h ah=09h!!!)
;

                mov     ax, 4C00h
                int     21h

Kod             ENDSEG

                END     Start
edytowany 1x, ostatnio: Shalom
TK
  • Rejestracja:ponad 15 lat
  • Ostatnio:prawie 14 lat
0

Co do segmentow w plikach com to mysle, ze ich ustawienie ma niewielkie znaczenie, poniewaz to tylko pliki .com, nie .exe.
Natomiast co do offsetow to masz racje ale rownie dobrze mogby je dac i w zmiennej :)

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
0

ASSUME niczego nie ustawia, segmenty trzeba ustawić samodzielnie za pomocą instrukcji. np. tak:

Kopiuj
Start:
   push cs
   pop ds
   push cs
   pop es
   ...
TK
  • Rejestracja:ponad 15 lat
  • Ostatnio:prawie 14 lat
0

Spoko, kierowalem sie wypowiedzia Valdemart'a poniewaz nie pisalem nigdy w Tasm'ie, a w Nasm sie nie spotkalem z assume lub nie bylo mi nigdy spotkanie z nia potrzebne ;)

VA
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 14 lat
0
t0m_k napisał(a)

Co do segmentow w plikach com to mysle, ze ich ustawienie ma niewielkie znaczenie, poniewaz to tylko pliki .com, nie .exe.

No znaczenie jest w sumie niewielkie ale to co on tam zrobił to po prostu zwala z nóg:) żeby ustawić ds na nieistniejący segment... to już lepiej assum ds:nothing zrobić niż takie coś;)

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:2 minuty
1
t0m_k napisał(a)

Spoko, kierowalem sie wypowiedzia Valdemart'a poniewaz nie pisalem nigdy w Tasm'ie, a w Nasm sie nie spotkalem z assume lub nie bylo mi nigdy spotkanie z nia potrzebne ;)

Nasm, Fasm, Yasm nie mają ASSUME i bardzo dobrze. Ich składnia jest bardziej przejrzysta niż "starych" asemblerów.

VA
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 14 lat
0

W plikach com jest co do segmentów jeszcze jedna ciekawa rzecz: podczas ładowania wszystkie segmenty są domyślnie ustawiane na ten sam co cs w niektórych systemach więc i na to można zwrócić uwagę ;-)

S6
  • Rejestracja:około 13 lat
  • Ostatnio:prawie 13 lat
  • Postów:1
0

Witam, pozwolę sobie odkopać temat.

mam takie pytanie odnośnie tego kodu :

Kopiuj
 .MODEL  TINY
 
Kod             SEG
 
                ORG     100h
                ASSUM   CS:Kod, DS:Kod, SS:Kod
 
Start:
                jmp     Poczatek
 
DL_TABLICY      EQU     12
Tablica         DB      01h, 02h, 00h, 10h, 12h, 33h
                DB      15h, 09h, 11h, 08h, 0Ah, 00h
Srednia         DB      ?
 
Poczatek:
                xor     ax, ax
                mov     si, OFFSET Tablica
                mov     cx, DL_TABLICY
 
Petla:
                add     al, [si]
                adc     ah,0
                inc     si
                loop    Petla
 
                mov     bl, DL_TABLICY
                div     bl
                mov     Srednia, al
 
;
;   tu musisz dodac zamiane liczby na tekst i jej wypisanie (int 21h ah=09h!!!)
;
 
                mov     ax, 4C00h
                int     21h
 
Kod             ENDSEG
 
                END     Start
 

Czy duzo trzeba tutaj poprawic zeby to chodzilo ?

edytowany 1x, ostatnio: Shalom
D9
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:5
1

Znów odkop i prośba o pilną pomoc - zupełnie nie potrafię odpalić programu 1 - stanąłem na tym samym co w poście wyżej... Ktoś coś może pomóc?
Kompilator wyrzuca problem 20 błędów - pierwszy jest z undefined PETLA.

Pomocy!

Już zrobione :)

W Segment zamiast seg i ends na koncu i poszlo :P

EDIT: chyba poszło - na tyle na ile w debbugerze się odnajduje

Shalom
Oj, chyba będzie waruneczek...
Shalom
o rly? nawet z tym "assum" się kompiluje? ;]
D9
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:5
0

a mógłby ktoś opisać która linijka za co odpowiada?

Najbardziej zależy mi na dokładnym wytłumaczeniu pierwszej częśći tj.

Kopiuj
.MODEL  TINY
 
Kod             SEG
 
                ORG     100h
                ASSUM   CS:Kod, DS:Kod, SS:Kod
 
Start:
                jmp     Poczatek
 
DL_TABLICY      EQU     12
Tablica         DB      01h, 02h, 00h, 10h, 12h, 33h
                DB      15h, 09h, 11h, 08h, 0Ah, 00h
Srednia         DB      ?
 
Poczatek:
                xor     ax, ax
                mov     si, OFFSET Tablica
                mov     cx, DL_TABLICY

Wiem że kolejno wygląda to mniej więcej tak:

Kopiuj
.MODEL  TINY
 
Kod             SEGMENT									;poczatek segmentu Kod
 
                ORG     100h							;organizacja 100h, informacja, że będzie to program typu .COM
                ASSUME   CS:Kod, DS:Kod, SS:Kod			;segment kodu - Kod, segment danych - Kod, segment stosu - Kod
 
Start:													;funckja Start
				jmp     Poczatek						;przeskocz to funkcji Poczatek, aby ominąć deklaracje danych
 
DL_TABLICY      EQU     12								;przypisanie DL_TABLICY=12
Tablica         DB      01h, 02h, 00h, 10h, 12h, 33h	;deklaracja tablicy Tablica o 12 elementach
                DB      15h, 09h, 11h, 08h, 0Ah, 00h
Srednia         DB      ?								;deklaracja zmennej Srednia z niewiadomą wartością
 
Poczatek:												;funkcja Poczatek
                xor     ax, ax							;czyszczenie rejestru ax
                mov     si, OFFSET Tablica				;przypisanie do si początku zmiennej Tablica
                mov     cx, DL_TABLICY					;przypisanie do cx wartości zmiennej DL_TABLICY, czyli 12 

ale na tym moja wiedza się kończy, a zakres wymagany na zajęciach jest o wiele większy. Jeśli nikt nie chce pomóc to chociaż wskażcie literaturę po Polsku w której miałbym sensownie to potłumaczone.
Bo nam jako podręcznik na zajęciach wskazano... manul intela.

edytowany 2x, ostatnio: Shalom
Shalom
!nie
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0
  1. Ten kod nadal jest po prostu błędny.
  2. Start i Poczatek to nie są funkcje. Poza tym mniej więcej dobrze napisałeś.

Co do literatury to rozumiem że jesteś w szkole podstawowej i skoro "pani nie podała podręcznika" to nie wiesz co ze sobą zrobić? Odpuść sobie studiowanie i informatykę, bo ewidentnie nie jest to dla ciebie....


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
D9
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:5
0
  1. skoro są błędy to może raczyłbyś je wskazać?
    Tak, Pani nie podała więc nie wiem, a na nasze różne propozycje kurczowo upierała się że się nie da nauczyć bo wszystko jest do d...
    Więc pytam tu - osób które miały z tym styczność i wiedzą która pozycja będzie pomocna...

BTW szybko wysnuwasz wnioski :) dwa posty i już wiesz co powinienem a czego nie...

edytowany 1x, ostatnio: disater984
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0
  1. hohoho rubaszny śmiech, raczyłbym wskazać? Ależ jak najbardziej, za odpowiednią opłatą. Bo widzisz czym innym jest prośba o pomoc a czym innym jest żebranie o gotowca (chociaż ewenementem jest żebranie o gotowca kiedy w tym temacie padły już informacje jak ten kod poprawić).
  2. I ma racje, bo polskie książki są zwykle bezużyteczne. Popatrz na to: http://www.csi.ucd.ie/staff/jcarthy/home/alp/
  3. Czy szybko wysnuwam? Przez miesiąc nie potrafisz poprawić błędów w kilkunastu linijkach kodu prostego jak budowa cepa, mając pod nosem temat gdzie wyjaśniono co jest w tym kodzie nie tak.
    BTW, tak dla ustalenia uwagi, moja pierwsza styczność z asemblerem to było takie zadanie (blog nie jest mój, ale zadanie to samo bo ta sama uczelnia):
    http://slonka.net/pl/programy/assembler-skrót-klucza-publicznego-w-postaci-grafiki-ascii
    (do wykonania w ciągu pierwszego miesiąca nauki asemblera)

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
D9
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:5
0

Am... czyli żebraniem o gotowca jest pytanie gdzie jest błąd jeśli go widzisz bo ja nie dostrzegam(z racji braków wiedzy)? Świetna logika.
Za opłatą? TO po co jest to forum w sumie?

Twoją pomocą jest dopisywanie komentarzy o warunkach i tego że dziwne że mi odpaliło. Cała tutaj pomoc uzyskana.
Z wcześniejszych stron nie wyciągam nic do podanego wyżej przykładu bo po zmianach takich jakie zrobiłem program działa i wykonuje się prawidłowo. Nie rozumiem pewnych mechanizmów - co rozumiem to wykomendowałem. Poprosiłem o ewentualnie dodatkowe informacje istotne dla danych punktów :)
I średnio rozumiem zarzut o "żebranie o gotowca" bo ja zwyczajnie proszę o pomoc. Widzisz błędy - to je wskaż. Nie oczekuje że masz mi je poprawiasz, ja ich nie widzę, program wykonuje się prawdiłowo (wylicza prawdiłowo) więc sądziłem że program działa prawidłowo...

Twoje podejście jest irytujące.

edytowany 1x, ostatnio: disater984
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0
  1. Och bo widzisz problem w tym że to nie są kody które napisałes i zrobiłeś w nich błędy. Dostałeś błędne kody od prowadzącego i twoim zadaniem było je poprawić. Ergo prosisz tutaj o odrobienie za ciebie pracy domowej i juz za to twoje posty powinny polecieć do kosza, bo regulamin jasno stwierdza że jest zakaz umieszczania takich próśb.
  2. Forum jest żeby dyskutować (bo to forum dyskusyjne) i czasami POMAGAĆ ludziom. Pomagać to nie znaczy odwalać za kogoś całą robotę.
  3. Zauważ że ostatni kod który wstawiłeś jest inny niż poprzednie i on ma prawo się skompilować a może i zadziałać. Gdybys wstawił tyko ten kod i spytał o konkretne kilka linijek których z niego nie rozumiesz, to ta rozmowa toczyłaby się inaczej...
  4. Jak już napisałem wcześniej - twoje komentarze mają sens, oprócz tych o "funkcjach" których tam nie ma (etykietka do której skaczesz to nie jest funkcja), i tej o "przypisaniu początku tablicy", bo przypisujesz tam offset (czyli adres w danym segmencie) pod jakim znajdują się dane opatrzone etykietą "tablica". Więc przypisujesz adres.

"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 1x, ostatnio: Shalom
D9
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 10 lat
  • Postów:5
0
  1. Nigdzie nie poprosiłem o zrobienie tego za mnie a o jakąkolwiek pomoc, jeśli ktoś poprawi to świetnie, jeśli ktoś powie gdzie błąd też dobrze :)
    A jak nawet tego nie wiecie (tudzież Twoje wiem ale nie powiem...) - niech wskaże choćby literaturę gdzie dowiem się o tego typu podstawach.
  2. Patrz wyżej, nigdzie nie oczekiwałem zrobienia za mnie programu...
  3. Owszem, bo dostaliśmy dwa programy - .exe i .com i teraz właśnie z tym mam problem. Tak jak pisalem - program kompiluje sie i dziala poprawnie (tak, przeliczalem z 16 i wynik sie zgadza). Jeśli widzisz w nim błędy to je wskaż bo ja ich nie dostrzegam.
  4. Wiem że moje komentarze mają sens - i rozumiem mniej więcej to co napisałem. Owszem, mogę się mylić choćby tak jak z tą funkcją bo nie znam jeszcze dobrze terminilogia, ale wiem w praktyce że dana komenda dodaje wartością taką do takiej. Ale sprwadzający wymaga więcej, więc poprosiłem o napisanie czegoś więcej - inne podstawowe informacji których ja nie mam.
    Skąd komputer wie skąd pobierać dane któe są w segmencie. Gdzie one znajdują się w pamięci? Co ile występują? Pytania mnie rozwalają bo jak przychodzi do odpowiedzi to choć wiem co program robi i jak to nic z typowo architektury komputerowej nie umiem. Materiałów na uczelni brak - na wykładzie mamy o historii komputerów :)
edytowany 1x, ostatnio: disater984
Shalom
"materiałów brak" - hahahahaha, no tak, bo ten asembler ma raptem 34 lata więc nie powstały jeszcze na jego temat żadne materiały ;]
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)