Esen;
Kaçış karakterleri, programcılıktan da önce donanım üzerinde kullanılan fiziksel yazım hareketlerinin daha sonra yazılım ortamına uyarlanmış durumlarıdır. Boşluk bırakma, sekme yapma, alt satıra geçme gibi yazıcı ya da daktilo gibi donanımlarda ilk olarak kullanılan bu hareketler programcılıkta bazı karakterler ile simgelenmiştir:
Kaçış Karakteri | Onaltılık Değer | Açıklaması |
---|---|---|
\a | 07 | Alert – Alarm, ikaz, bip sesi çıkartır. |
\b | 08 | Backspace – İmleci olduğu yerden bir geriye getirir ve oradaki karakteri silmez*. |
\e | 1B | ESC- Escape – |
\f | 0C | Formfeed – Yazıcıya yazdığı kağıtla işinin bittiğini yazmak istediği şeyi yeni bir kağıdın en başından yazması gerektiğini anlatan kaçış karakteridir. |
\n | 0A | Newline (Line Feed) – İmleci bir alt satıra taşır. |
\r | 0D | Carriage Return – |
\t | 09 | Horizontal Tab – Yatay Sekme |
\v | 0B | Vertical Tab – Dikey Sekme; bu da yazıcıları ilgilendiren bir kaçık karakteri |
\\ | 5C | Backslash – Ters Slaş |
` | 60 | Backquote |
\' | 27 | Single quotation mark – Kesme İmi |
\" | 22 | Double quotation mark – Tırnak İmi, bunu \q ile yapıyoruz |
\? | 3F | Question mark – Soru İmi |
\nnn | – | Ters slaştan sonra 3 haneli bir rakan yazarak 8lik tabanda girdi yapabiliriz |
\xhh… | – | Ters slaş ve x karakterinden sonra onaltılık bir değer girebiliriz |
Arkadaşlar kaçış karakterleri bu kadar değil /0 yaparak NULL değerini /20h ile boşluk döndürebiliriz. Bunun için ASCII tablosunu inceleyelim:
Yukarıda ilk 128 baytını gördüğümüz ASCII tablosunun genişletilmiş hali de:
İsterseniz assemblyde ASCII kodlarını da yazdırabiliriz:(Acele bir kod oldu iyileştirilebilir:)
.386 .model flat,stdcall option casemap:none include windows.inc include masm32.inc include kernel32.inc include msvcrt.inc include \masm32\macros\macros.asm includelib masm32.lib includelib kernel32.lib includelib msvcrt.lib .stack 4096 .const .data tampon1 dw 0 .data? .code start: call main exit main proc print chr$("0-127 Standart ASCII Tablosu") print chr$(13,10) xor eax,eax xor ebx,ebx xor ecx,ecx xor edx,edx mov tampon1,0 ;ekrana yazılacak değişken _dongu: print str$(ebx) ;sayaç print cfm$("\t:") ;sıra numarası+sekme+iki nokta invoke StdOut, addr tampon1 ;tampondaki tamsayıyı ascii olacak ekrana yaz print chr$(13,10) ;bir alt satıra in inc ebx ;sayacı artır mov tampon1,bx ;sayacı tampona at,böylece bir sonraki ascii değerine atlamış ol cmp ebx,128 ;128 ile denetle jne _dongu ;128 ise donguden çık inkey invoke ExitProcess,0 main endp end start
BU kadar da değil şimdi de kaçış karakterlerini kullanarak ekrana birşeyler yazdıralım:
print chr$(30h,31h,9,32h,33h)
printten sonraki chr$ içine onaltılık ya da onluk olarak karakterleri girebiliriz. Eğer yeni satır ya da ikaz sesi gibi özel bir anlama gelmeyen normal bir karakter ise A ya da 3 gibi bu ekrana yazılır.
invoke StdOut, chr$(7,"Once ses",9,"Sonra yatay sekme",20h,"20h ile bosluk ve yeni satir:",13,10)
Bir de cfm$ var, C dili tarzında tırnak içine yazılan kaçış karakterlerini kullanabiliriz:
print cfm$("\tYatay Sekme\nAlt Satira Gectik \q deneme \q tirnak yaptik q ile\n")
Ters slaştan sonra karakterleri girerek işinize yarayacak kaçışları kullanabilirsiniz.
Comments of this post