Wyświetlanie zawartości bufora w kolejności odwrotnej

Wyświetlanie zawartości bufora w kolejności odwrotnej
0

Witam,jak w temacie mam za zadanie wyświetlić zawartość bufora w kolejności odwrotnej.
Dodam,że piszę w masmie.
Oto kod:

Kopiuj
 ;Aplikacja korzystająca z otwartego okna konsoli
.386
.MODEL flat, STDCALL
;--- stale ---
STD_INPUT_HANDLE                     equ -10
STD_OUTPUT_HANDLE                    equ -11
;--- funkcje API Win32 ---
;--- z pliku  user32.inc ---
CharToOemA PROTO :DWORD,:DWORD
;--- z pliku kernel32.inc ---
GetStdHandle PROTO :DWORD
ReadConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
WriteConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
ExitProcess PROTO :DWORD
wsprintfA PROTO C :VARARG
lstrlenA PROTO :DWORD
;-------------
includelib .\lib\user32.lib
includelib .\lib\kernel32.lib
;-------------
_DATA SEGMENT
    hout    DD    ?
    hinp    DD    ?
    naglow    DB    "Autor aplikacji Jan Masztalski.",0
    ALIGN    4    ; przesuniecie do adresu podzielnego na 4
    rozmN    DD    $ - naglow    ;liczba znaków w tablicy
    zaprA    DB    0Dh,0Ah,"Proszę wprowadzić znaki znaki do bufora: ",0
    ALIGN    4
    rozmA    DD    $ - zaprA    ;liczba znaków w tablicy
    zaprB    DB    0Dh,0Ah,"Bufor po wprowadzeniu danych: ",0
    ALIGN    4
    rozmB    DD    $ - zaprB    ;liczba znaków w tablicy
    zaprC    DB    0Dh,0Ah,"Bufor po zmianach: ",0
    ALIGN    4
    rozmC    DD    $ - zaprC    ;liczba znaków w tablicy
    ALIGN    4
    rout    DD    0 ;faktyczna liczba wyprowadzonych znaków
    rinp    DD    0 ;faktyczna liczba wprowadzonych znaków
    lZnakow    DD    0 
    bufor    DB    128 dup(?)
    rbuf    DD    128
    bufor2    DB    128 dup(?)
    rbuf2    DD    128
_DATA ENDS
;------------
_TEXT SEGMENT
start:
;--- wywołanie funkcji GetStdHandle 
    push    STD_OUTPUT_HANDLE
    call    GetStdHandle    ; wywołanie funkcji GetStdHandle
    mov    hout, EAX    ; deskryptor wyjściowego bufora konsoli
    push    STD_INPUT_HANDLE
    call    GetStdHandle    ; wywołanie funkcji GetStdHandle
    mov    hinp, EAX    ; deskryptor wejściowego bufora konsoli
;--- nagłówek ---------
    push    OFFSET naglow
    push    OFFSET naglow
    call    CharToOemA    ; konwersja polskich znaków
;--- wyświetlenie ---------
    push    0        ; rezerwa, musi być zero
    push    OFFSET rout    ; wskaźnik na faktyczną liczba wyprowadzonych znaków 
    push    rozmN        ; liczba znaków
    push    OFFSET naglow     ; wskażnik na tekst
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsoleA
;--- zaproszenie A ---------
    push    OFFSET zaprA
    push    OFFSET zaprA
    call    CharToOemA    ; konwersja polskich znaków
;--- wyświetlenie zaproszenia A ---
    push    0        ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczba wyprowadzonych znaków 
    push    rozmA        ; liczba znaków
    push    OFFSET zaprA     ; wskażnik na tekst
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsoleA   
;--- czekanie na wprowadzenie znaków, koniec przez Enter ---
    push    0         ; rezerwa, musi być zero
    push    OFFSET rinp     ; wskaźnik na faktyczną liczba wprowadzonych znaków 
    push    rbuf         ; rozmiar bufora
    push    OFFSET bufor ;wskażnik na bufor
     push    hinp        ; deskryptor buforu konsoli
    call    ReadConsoleA    ; wywołanie funkcji ReadConsoleA
    lea   EBX,bufor
    mov   EDI,rinp
    mov   BYTE PTR [EBX+EDI-2],0 ;zero na końcu tekstu
;--- przekształcenie A
    push    OFFSET bufor
    call    lstrlenA
    mov    lZnakow, EAX
    
;--- wyświetlenie bufora przed zmianami ---------
    push    0         ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczbę wyprowadzonych znaków 
    push    rozmB        ; liczba znaków
    push    OFFSET zaprB     ; wskaźnik na tekst w buforze
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsol
    
    
    push    OFFSET bufor
    call    lstrlenA
    mov    lZnakow, EAX
    
    push    0         ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczbę wyprowadzonych znaków 
    push    lZnakow        ; liczba znaków
    push    OFFSET bufor     ; wskaźnik na tekst w buforze
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsoleA        
    
    
    ;--- wypełnienie bufora2 wartością 0
    lea   EBX,bufor2
    mov   ECX,rbuf2
@@:    mov   BYTE PTR [EBX+ECX-1],0
    loop  @B 
    
    ;ToDo: TWOJE DZIAŁANIA NA BUFORZE
    <div class="_38 direction_ltr"><span class="null"><p>mov ecx, rozmN
mov eax, bufor
mov esi, eax  
add eax, ecx
mov edi, eax
dec edi      
shr ecx, 1    </p><p>reverseLoop:
mov al, [esi] 
mov bl, [edi]
mov [esi], bl 
mov [edi], al
inc esi     
dec edi
dec ecx       
jnz reverseLoop</p></span></div>



;--- wyświetlenie bufora po zmianach ---------
    push    0         ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczbę wyprowadzonych znaków 
    push    rozmC        ; liczba znaków
    push    OFFSET zaprC     ; wskaźnik na tekst w buforze
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsol
    
    push    OFFSET bufor2
    call    lstrlenA
    mov    lZnakow, EAX
    
    push    0         ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczbę wyprowadzonych znaków 
    push    lZnakow        ; liczba znaków
    push    OFFSET bufor2     ; wskaźnik na tekst w buforze
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsoleA    

;--- zakończenie procesu ---------
    push    0
    call    ExitProcess    ; wywołanie funkcji ExitProcess
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ScanInt   PROC 
;; funkcja ScanInt przekształca ciąg cyfr do liczby, którą jest zwracana przez EAX 
;; argument - zakończony zerem wiersz z cyframi 
;; rejestry: EBX - adres wiersza, EDX - znak liczby, ESI - indeks cyfry w wierszu, EDI - tymczasowy 
;--- początek funkcji 
   push   EBP 
   mov   EBP, ESP   ; wskaźnik stosu ESP przypisujemy do EBP 
;--- odkładanie na stos 
   push   EBX 
   push   ECX 
   push   EDX 
   push   ESI 
   push   EDI 
;--- przygotowywanie cyklu 
   mov   EBX, [EBP+8] 
   push   EBX 
   call   lstrlenA 
   mov   EDI, EAX   ;liczba znaków 
   mov   ECX, EAX   ;liczba powtórzeń = liczba znaków 
   xor   ESI, ESI   ; wyzerowanie ESI 
   xor   EDX, EDX   ; wyzerowanie EDX 
   xor   EAX, EAX   ; wyzerowanie EAX 
   mov   EBX, [EBP+8] ; adres tekstu
;--- cykl -------------------------- 
pocz: 
   cmp   BYTE PTR [EBX+ESI], 0h   ;porównanie z kodem \0 
   jne   @F 
   jmp   et4 
@@: 
   cmp   BYTE PTR [EBX+ESI], 0Dh   ;porównanie z kodem CR 
   jne   @F 
   jmp   et4 
@@: 
   cmp   BYTE PTR [EBX+ESI], 0Ah   ;porównanie z kodem LF 
   jne   @F 
   jmp   et4 
@@: 
   cmp   BYTE PTR [EBX+ESI], 02Dh   ;porównanie z kodem - 
   jne   @F 
   mov   EDX, 1 
   jmp   nast 
@@: 
   cmp   BYTE PTR [EBX+ESI], 030h   ;porównanie z kodem 0 
   jae   @F 
   jmp   nast 
@@: 
   cmp   BYTE PTR [EBX+ESI], 039h   ;porównanie z kodem 9 
   jbe   @F 
   jmp   nast 
;---- 
@@:    
    push   EDX   ; do EDX procesor może zapisać wynik mnożenia 
   mov   EDI, 10 
   mul   EDI      ;mnożenie EAX * EDI 
   mov   EDI, EAX   ; tymczasowo z EAX do EDI 
   xor   EAX, EAX   ;zerowani EAX 
   mov   AL, BYTE PTR [EBX+ESI] 
   sub   AL, 030h   ; korekta: cyfra = kod znaku - kod 0    
   add   EAX, EDI   ; dodanie cyfry 
   pop   EDX 
nast:   
    inc   ESI 
   loop   pocz 
;--- wynik 
   or   EDX, EDX   ;analiza znacznika EDX 
   jz   @F 
   neg   EAX 
@@:    
et4:;--- zdejmowanie ze stosu 
   pop   EDI 
   pop   ESI 
   pop   EDX 
   pop   ECX 
   pop   EBX 
;--- powrót 
   mov   ESP, EBP   ; przywracamy wskaźnik stosu ESP
   pop   EBP 
   ret    4
ScanInt   ENDP 
_TEXT    ENDS    

END start

Chodzi o tą część kodu bo nie wiem co mam dopisać,żeby działało:D

Kopiuj
mov ecx, rozmN
mov eax, bufor
mov esi, eax  
add eax, ecx
mov edi, eax
dec edi      
shr ecx, 1    </p><p>reverseLoop:
mov al, [esi] 
mov bl, [edi]
mov [esi], bl 
mov [edi], al
inc esi     
dec edi
dec ecx       
jnz reverseLoop

dodanie znaczników <code class="asm"> - fp

edytowany 1x, ostatnio: flowCRANE
flowCRANE
Przypominam o wstawianiu kodu w znaczniki kolorujące składnię;
0

Pomoże ktoś?

flowCRANE
Jeżeli ktokolwiek będzie potrafił Tobie pomóc to na pewno odpisze - musisz tylko cierpliwie poczekać, aż odpowiednie osoby zobaczą ten wątek;
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 miesiące
0
Kopiuj
 ;Aplikacja korzystająca z otwartego okna konsoli
.386
.MODEL flat, STDCALL
;--- stale ---
STD_INPUT_HANDLE                     equ -10
STD_OUTPUT_HANDLE                    equ -11
;--- funkcje API Win32 ---
;--- z pliku  user32.inc ---
CharToOemA PROTO :DWORD,:DWORD
;--- z pliku kernel32.inc ---
GetStdHandle PROTO :DWORD
ReadConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
WriteConsoleA PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
ExitProcess PROTO :DWORD
wsprintfA PROTO C :VARARG
lstrlenA PROTO :DWORD
;-------------
includelib C:\masm32\lib\user32.lib
includelib C:\masm32\lib\kernel32.lib
;-------------
_DATA SEGMENT
    hout    DD    ?
    hinp    DD    ?
    naglow    DB    "Autor aplikacji Jan Masztalski.",0
    ALIGN    4    ; przesuniecie do adresu podzielnego na 4
    rozmN    DD    $ - naglow    ;liczba znaków w tablicy
    zaprA    DB    0Dh,0Ah,"Proszę wprowadzić znaki znaki do bufora: ",0
    ALIGN    4
    rozmA    DD    $ - zaprA    ;liczba znaków w tablicy
    zaprB    DB    0Dh,0Ah,"Bufor po wprowadzeniu danych: ",0
    ALIGN    4
    rozmB    DD    $ - zaprB    ;liczba znaków w tablicy
    zaprC    DB    0Dh,0Ah,"Bufor po zmianach: ",0
    ALIGN    4
    rozmC    DD    $ - zaprC    ;liczba znaków w tablicy
    ALIGN    4
    rout    DD    0 ;faktyczna liczba wyprowadzonych znaków
    rinp    DD    0 ;faktyczna liczba wprowadzonych znaków
    lZnakow    DD    0 
    bufor    DB    128 dup(?)
    rbuf    DD    128
    bufor2    DB    128 dup(?)
    rbuf2    DD    128
_DATA ENDS
;------------
_TEXT SEGMENT
start:
;--- wywołanie funkcji GetStdHandle 
    push    STD_OUTPUT_HANDLE
    call    GetStdHandle    ; wywołanie funkcji GetStdHandle
    mov    hout, EAX    ; deskryptor wyjściowego bufora konsoli
    push    STD_INPUT_HANDLE
    call    GetStdHandle    ; wywołanie funkcji GetStdHandle
    mov    hinp, EAX    ; deskryptor wejściowego bufora konsoli
;--- nagłówek ---------
    push    OFFSET naglow
    push    OFFSET naglow
    call    CharToOemA    ; konwersja polskich znaków
;--- wyświetlenie ---------
    push    0        ; rezerwa, musi być zero
    push    OFFSET rout    ; wskaźnik na faktyczną liczba wyprowadzonych znaków 
    push    rozmN        ; liczba znaków
    push    OFFSET naglow     ; wskażnik na tekst
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsoleA
;--- zaproszenie A ---------
    push    OFFSET zaprA
    push    OFFSET zaprA
    call    CharToOemA    ; konwersja polskich znaków
;--- wyświetlenie zaproszenia A ---
    push    0        ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczba wyprowadzonych znaków 
    push    rozmA        ; liczba znaków
    push    OFFSET zaprA     ; wskażnik na tekst
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsoleA   
;--- czekanie na wprowadzenie znaków, koniec przez Enter ---
    push    0         ; rezerwa, musi być zero
    push    OFFSET rinp     ; wskaźnik na faktyczną liczba wprowadzonych znaków 
    push    rbuf         ; rozmiar bufora
    push    OFFSET bufor ;wskażnik na bufor
     push    hinp        ; deskryptor buforu konsoli
    call    ReadConsoleA    ; wywołanie funkcji ReadConsoleA
    lea   EBX,bufor
    mov   EDI,rinp
    mov   BYTE PTR [EBX+EDI-2],0 ;zero na końcu tekstu
;--- przekształcenie A
    push    OFFSET bufor
    call    lstrlenA
    mov    lZnakow, EAX
 
;--- wyświetlenie bufora przed zmianami ---------
    push    0         ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczbę wyprowadzonych znaków 
    push    rozmB        ; liczba znaków
    push    OFFSET zaprB     ; wskaźnik na tekst w buforze
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsol
 
 
    push    OFFSET bufor
    call    lstrlenA
    mov    lZnakow, EAX
 
    push    0         ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczbę wyprowadzonych znaków 
    push    lZnakow        ; liczba znaków
    push    OFFSET bufor     ; wskaźnik na tekst w buforze
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsoleA        
 
 
    ;--- wypełnienie bufora2 wartością 0
    ;lea   EBX,bufor2
    ;mov   ECX,rbuf2
    ;@@:    mov   BYTE PTR [EBX+ECX-1],0
    ;loop  @B 

    mov ecx, lZnakow
    lea esi, bufor
    lea edi, bufor2
    add edi, lZnakow
    xor eax, eax
    mov [edi], al
copy_loop:
    dec edi
    mov al,[esi]
    mov [edi],al
    inc esi
    loop copy_loop
    
    

    ;ToDo: TWOJE DZIAŁANIA NA BUFORZE
    ;mov ecx, rozmN
    ;mov eax, bufor
    ;mov esi, eax  
    ;add eax, ecx
    ;mov edi, eax
    ;dec edi      
    ;shr ecx, 1
    ;mov al, [esi] 
    ;mov bl, [edi]
    ;mov [esi], bl 
    ;mov [edi], al
    ;inc esi     
    ;dec edi
    ;dec ecx       
    ;jnz reverseLoop
 
 
 
;--- wyświetlenie bufora po zmianach ---------
    push    0         ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczbę wyprowadzonych znaków 
    push    rozmC        ; liczba znaków
    push    OFFSET zaprC     ; wskaźnik na tekst w buforze
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsol
 
    push    OFFSET bufor2
    call    lstrlenA
    mov    lZnakow, EAX
 
    push    0         ; rezerwa, musi być zero
    push    OFFSET rout     ; wskaźnik na faktyczną liczbę wyprowadzonych znaków 
    push    lZnakow        ; liczba znaków
    push    OFFSET bufor2     ; wskaźnik na tekst w buforze
     push    hout        ; deskryptor buforu konsoli
    call    WriteConsoleA    ; wywołanie funkcji WriteConsoleA    
 
;--- zakończenie procesu ---------
    push    0
    call    ExitProcess    ; wywołanie funkcji ExitProcess
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ScanInt   PROC 
;; funkcja ScanInt przekształca ciąg cyfr do liczby, którą jest zwracana przez EAX 
;; argument - zakończony zerem wiersz z cyframi 
;; rejestry: EBX - adres wiersza, EDX - znak liczby, ESI - indeks cyfry w wierszu, EDI - tymczasowy 
;--- początek funkcji 
   push   EBP 
   mov   EBP, ESP   ; wskaźnik stosu ESP przypisujemy do EBP 
;--- odkładanie na stos 
   push   EBX 
   push   ECX 
   push   EDX 
   push   ESI 
   push   EDI 
;--- przygotowywanie cyklu 
   mov   EBX, [EBP+8] 
   push   EBX 
   call   lstrlenA 
   mov   EDI, EAX   ;liczba znaków 
   mov   ECX, EAX   ;liczba powtórzeń = liczba znaków 
   xor   ESI, ESI   ; wyzerowanie ESI 
   xor   EDX, EDX   ; wyzerowanie EDX 
   xor   EAX, EAX   ; wyzerowanie EAX 
   mov   EBX, [EBP+8] ; adres tekstu
;--- cykl -------------------------- 
pocz: 
   cmp   BYTE PTR [EBX+ESI], 0h   ;porównanie z kodem \0 
   jne   @F 
   jmp   et4 
@@: 
   cmp   BYTE PTR [EBX+ESI], 0Dh   ;porównanie z kodem CR 
   jne   @F 
   jmp   et4 
@@: 
   cmp   BYTE PTR [EBX+ESI], 0Ah   ;porównanie z kodem LF 
   jne   @F 
   jmp   et4 
@@: 
   cmp   BYTE PTR [EBX+ESI], 02Dh   ;porównanie z kodem - 
   jne   @F 
   mov   EDX, 1 
   jmp   nast 
@@: 
   cmp   BYTE PTR [EBX+ESI], 030h   ;porównanie z kodem 0 
   jae   @F 
   jmp   nast 
@@: 
   cmp   BYTE PTR [EBX+ESI], 039h   ;porównanie z kodem 9 
   jbe   @F 
   jmp   nast 
;---- 
@@:    
    push   EDX   ; do EDX procesor może zapisać wynik mnożenia 
   mov   EDI, 10 
   mul   EDI      ;mnożenie EAX * EDI 
   mov   EDI, EAX   ; tymczasowo z EAX do EDI 
   xor   EAX, EAX   ;zerowani EAX 
   mov   AL, BYTE PTR [EBX+ESI] 
   sub   AL, 030h   ; korekta: cyfra = kod znaku - kod 0    
   add   EAX, EDI   ; dodanie cyfry 
   pop   EDX 
nast:   
    inc   ESI 
   loop   pocz 
;--- wynik 
   or   EDX, EDX   ;analiza znacznika EDX 
   jz   @F 
   neg   EAX 
@@:    
et4:;--- zdejmowanie ze stosu 
   pop   EDI 
   pop   ESI 
   pop   EDX 
   pop   ECX 
   pop   EBX 
;--- powrót 
   mov   ESP, EBP   ; przywracamy wskaźnik stosu ESP
   pop   EBP 
   ret    4
ScanInt   ENDP 
_TEXT    ENDS    
 
END start

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
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)