<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>KnbykL Official Web Site &#124; Web Security, Web Application Security &#187; debug komutları</title>
	<atom:link href="http://www.knbykl.org/tag/debug-komutlari/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.knbykl.org</link>
	<description>Web Security, Articles and Application, Hacking Methods, SQL Injection, CSRF, XSRF and Server Security</description>
	<lastBuildDate>Wed, 23 Jun 2010 23:43:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Debug ve Kullanımı</title>
		<link>http://www.knbykl.org/debug-ve-kullanimi/</link>
		<comments>http://www.knbykl.org/debug-ve-kullanimi/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 09:15:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Assembly]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[a100]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[debug komutları]]></category>
		<category><![CDATA[decimal]]></category>
		<category><![CDATA[moh ah]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.knbykl.org/?p=484</guid>
		<description><![CDATA[İster DOS olsun isterse Windows, çalıştırılabilir iki tipte dosya bulunur. Com veya exe tipindedir. Com tipi dosyalar birebir programın bellekteki şeklinin aynısıdır. Exe tipi dosyalarda ise programın başında işletim sisteminin anlayacağı tipte bir başlık bulunur. İşletim sistemi bu kısımdaki direktiflere göre code, data ve diğer segmentleri bellekte boş olan yerlere göre hafızaya yükler ve ilgili [...]]]></description>
			<content:encoded><![CDATA[<p>İster <span style="color: #008000;">DOS</span> olsun isterse <span style="color: #008000;">Windows</span>, çalıştırılabilir iki tipte dosya bulunur. <span style="color: #008000;">Com</span> veya <span style="color: #008000;">exe</span> tipindedir. Com tipi dosyalar birebir programın bellekteki şeklinin aynısıdır. Exe tipi dosyalarda ise programın başında işletim sisteminin anlayacağı tipte bir başlık bulunur.<br />
<img class="alignnone size-full wp-image-490" title="debug-ve-kullanimi-image-assembly" src="http://www.knbykl.org/wp-content/uploads/2009/12/debug-ve-kullanimi-image-assembly.jpg" alt="debug-ve-kullanimi-image-assembly" width="615" height="100" /><br />
<span id="more-484"></span>İşletim sistemi bu kısımdaki direktiflere göre code, data ve diğer segmentleri bellekte boş olan yerlere göre hafızaya yükler ve ilgili segmentlerin adreslerini registerlere aktararak programin ilk komutu ile işlemi programa bırakır. Com tipi programlarda böyle bir düzenleme yapılmaz, sadece diskten okunur, boş bir bellek adresine yerleştirilerek yürütme programa bırakılır. Tabii dos altında olsa idik tam olarak böyle idi. Windows altında dos için yazılmış olan tüm programlar bir dos emülasyon penceresi altında sanal bir ortamda çalışırlar. (Com dosyaları 64k dan daha uzun olamazlar, exe tipi dosyalarda bu tür bir sınırlama olmayıp gelişmiş özellikler içerirler. Bu nedenlerle exe tip dosyalar daha çok kullanılırlar.)</p>
<p>Exe tipi programlar derlenerek hazırlabilirler, fakat com tipi dosyaların derlenmeye ihtiyacı yoktur ve Debug.exe isimli komut satırı programı ile bunlar programlanabilir. Debug.exe tüm dos ve windows işletim sistemleri ile birlikte geldiği için ek bir program kurmanıza gerek yoktur. Tabii bu programı sadece komutların kullanımlarını görmek, programımızı satır satır çalıştırarak registerleri nasıl etkilediğini görmek amacıyla kullanacağız. Fakat kullandıkça vazgeçmesi zor bir programdır, yani bağımlılık yapar. (Şunu unutmamalıyız: Debug ile 16 bit registerlere ulaşabilir ve bu şekilde program yazabiliriz, 32bit ile çalışmalar bir sonraki bölümden itibaren başlayacaktır.)</p>
<p><span style="color: #008000;">Başlat -&gt; Çalıştır</span> yolunu izleyerek <span style="color: #008000;">command</span> yazıyoruz. Sonra <span style="color: #008000;">debug</span> yazıp enterleyin. Karşımıza sadece &#8216;-&#8217; işareti geldi. Artık debug  bizden komut girmemizi bekliyor. Aşağıda ilk programımızı yazdık, şimdi biraz anlatalım.</p>
<p><img src="http://www.knbykl.org/wp-content/uploads/2009/12/debug01.gif" alt="" /></p>
<p>Komut satırını açarak debug&#8217;a geçiş yaptık. &#8216;<span style="color: #008000;">a100</span>&#8216; şeklinde bir ifade var. &#8216;<span style="color: #008000;">a</span>&#8216; komutu bizim assembly kodlarının girişine başlayacağımızı bildirir. sonundaki &#8217;100&#8242; ise komutları yazmaya başlayacağımız adrestir. Debug ile sadece com tipi dosyalar yazılabiliyor ve bu tür programlar 100h adresinden itibaren yazılırlar. (Debug altında gireceğimiz tüm matematiksel ifadeler hexadecimal sistemdedir!!! Yani <span style="color: #008000;">100h</span> aslında decimal 256&#8242;ya denk gelir.)</p>
<p><span style="color: #008000;">mov ah,2</span> : <span style="color: #008000;">MOV</span> komutu bizim en çok kullanacağımız komutlardan biri. Sağdaki register içeriğini veya herhangi bir hexadecimal sabit değerin soldaki registere kaydedilmesidir. Tabii bu durumda ah&#8217;ın eski değeri kaybolur, zaten bizim için şu anda bunun önemi yok. (com tipi dosyalarda program ilk çalışmaya başladığında çoğu registerin değeri sıfırdır.)</p>
<p><span style="color: #008000;">mov dl,3</span> : Yukarıdaki <span style="color: #008000;">MOV</span> komutu gibi burada da bir atama söz konusu. <span style="color: #008000;">DL</span> isimli 8bit registere <span style="color: #008000;">3h</span> değeri kaydediliyor.</p>
<p><span style="color: #008000;">int 21, int 20</span> : Bu komutlar dos kullanıldığı zamanlarda geçerli idi. Benzer işlemde şu anda windows altında API fonksiyonları görev yapmaktadır. Bunları bir tür dos işletim sisteminin bize sunduğu hazır fonksiyonlar olarak görebiliriz. Elbette sadece 20 ve 21 bulunmamakta. Fakat bunlara değinmeyeceğiz. (int=interrupt) Interrupt 20 parametresiz çağırılır ve bizim com tipi programımızı sonlandırır. Interrupt 21 dos ile gelen dev bir fonksiyonlar kütüphanesidir. Hangi numaralı fonksiyonun çağırılacağını ah registerine koymak zorundayız. Fonksiyonun tipine göre istenen başka değerler bulunuyor ise bunlar da ilgili registerlara atanmalıdır. Daha sonra interrup çağrısı yapılır. Biz iki numaralı fonksiyonu (yani ekrana karakter yollama fonksiyonu) çağırıyoruz, bunun için ah a 2 atadık. Daha sonra ASCII karakter tablosuna göre hangi değer ekrana getirilecek ise onun hexadecimal değerini DL registerine atıyoruz. (Burada 3h kalp şeklinde bir karakter, eğer 41h değeri atanırsa &#8216;A&#8217; harfi ekrana basılır.) (Bunlardan sonraki satırı ENTER ile boş geçin.)</p>
<p><span style="color: #008000;">g</span> : ile programa çalışma emri veriliyor. Gördüğünüz gibi bir karakter ekrana basılıp program int 20 ye geldiğinde normal olarak sonlanıyor.</p>
<p><span style="color: #008000;">n </span>: ile programımıza isim veriyoruz. <span style="color: #008000;">r cx</span> ile <span style="color: #008000;">cx</span> registerinin değerini değiştirerek 8 giriyoruz çünkü programımızın son satırı <span style="color: #008000;">0108</span> adresini gösteriyor. Ilk satır <span style="color: #008000;">0100</span> ise arada 8 byte yokmu? Yani programımız 8byte uzunluğunda ve biz bunu cx&#8217;e aktararak diske kaydedilecek programın boyutunu belirtiyoruz ve w ile işlem tamamlanıyor. Artık q komutunu verip Debug&#8217;dan çıkın ve bulunduğunuz dizinde 8 byte uzunluğunda bir kalp.com isimli program var mı bir bakın. Veya hemen kalp yazıp ekran çıktısının debug içinde g komutu ile aldığımızın aynısı olduğunu görebilirsiniz. Bu bizim ilk programımız oldu.</p>
<p><img src="http://www.knbykl.org/wp-content/uploads/2009/12/debug02.gif" alt="" /></p>
<p>Yukarıdaki çalışma yine aynı program üzerinde yapıldı. Burada <span style="color: #008000;">t (trace, izle) </span>komutu ile programımızı satır satır çalıştırdık ve registerler üzerindeki etkilerine baktık. Interruptlar birer dev kod bloğu olduğuna göre ve bunları da trace eder isek sayfalar sonra içinde çıkabileceğimiz için bunları pas geçmek için p kullanıldı. Ilk komut işlendikten sonra ekrana ilk gelen bölümü inceleyelim. Ilk komut <span style="color: #008000;">mov ah,2</span> idi. Gördüğünüz gibi <span style="color: #008000;">AX=0200</span> bölümünde <span style="color: #008000;">AX</span> in üst 8 bitine yani AH&#8217;a 2 değeri atanmış. Burada dikkat ederseniz <span style="color: #008000;">DS,ES,SS,CS </span>değerleri yani segment registerları aynı blok adresini gösteriyorlar. Yani com tipi dosyalarda kodlar ile datalar aynı yerde bulunuyor. Bu da bize program yazarken dikkatli olmamız gerektiği anlamında önemli bir not. IP pointeri daima sırada işlenecek olan komıtu gösterir. Ilk komut işlendiğine göre 0102 değerini gösteriyor. IP nin hemen sağ tarafındaki ifadeler flagların durumlarını göstermektedir, şu anda önemli değil. Üçüncü satırda sırayla şunlar yer alıyor: <span style="color: #008000;">CS:IP &lt;MAKINA KODU&gt; &lt;ASSEMBLY KARŞILIĞI&gt;</span></p>
<p>Ikinci trace&#8217;de <span style="color: #008000;">DL</span> ye 3 değerinin aktarılmış olduğu rahatlıkla görülebilir. Bundan sonraki p komutu ile <span style="color: #008000;">int 21</span> işleme girer ve ekranda görülen kalp işareti geliyor. <span style="color: #008000;">int 20</span> de programdan çıkılıyor. Bu basit bir örnek oldu, daha karmaşık bir örnek inceleyelim.</p>
<p><img src="http://www.knbykl.org/wp-content/uploads/2009/12/debug03.gif" alt="" /></p>
<p><span style="color: #008000;">mov ah,2</span> : Interrupt 21 içindeki 2 numaralı fonksiyon yani ekrana karakter basmamız için atıyoruz.</p>
<p><span style="color: #008000;">mov cx,FF</span> : Şu ana kadar görmediğimiz döngü işlemi için kullanılacak. <span style="color: #008000;">FF yani decimal 255</span> değeri <span style="color: #008000;">CX</span> e atanıyor. Aşağıdaki <span style="color: #008000;">loop &lt;adres&gt;</span> komutuna gelindiğinde cx in değeri bir azaltılıyor ve  sıfıra eşit değil ise &lt;adres&gt; değerine atlıyor program. CX içindeki sayı kadar bu loop döngüsü devam ediyor, yani 255 defa. CX sıfıra eşit olduğunda ise hiçbir işlem yapılmıyor ve bir alttaki komut ile programa devam ediliyor. Diyebiliriz ki LOOP komutu gizli olarak cx registerini kullanmaktadır.</p>
<p><span style="color: #008000;">inc dl</span> : inc komutu karşısındaki registerin değerini bir artırır. Biliyorsunuz ki ekrana gönderilecek karakter dl içinde. Biz 255 döngü içinde 1 ila 255 arasındaki tüm ASCII karakterleri ekrana basmak istiyoruz. Bunun için toplama işlemi de yapabilirdik (add dl,1) fakat bu işlemin okunurluğu daha iyidir.</p>
<p><span style="color: #008000;">int 21</span> : Ekrana karakter yazma fonksiyonu çağırılıyor.</p>
<p><span style="color: #008000;">loop 105</span> : <span style="color: #008000;">CX</span> sıfıra eşit değil ise 105 adresine zıpla.</p>
<p><span style="color: #008000;">int 20</span> : Programdan çık.</p>
<p>Aşağıda <span style="color: #008000;">g (go)</span> komutu ile çıktı alınıyor. Tabii buradaki karakter seti dos altındaki; windows altındaki ile uyuşmayabilir. Daha sonra ise ascii.com şeklinde kaydediliyor.</p>
<p> </p>
<p><strong><span style="font-size: x-small;">Aşağıda bazı assembly komutları ve açıklamaları bulunuyor:</span></strong></p>
<p><span style="color: #008000;">MOV</span> : Değer aktarmak için kullanılır.  <span style="color: #008000;">mov ah,2 mov ax,FFFF mov bx,cx mov dl,bh mov [200],ah mov dl,[382]</span> gibi. (Köşeli parantez &#8216;adresindeki&#8217; anlamındadır. Yani ah içeriğini 200 adresine transfer et gibi.)<br />
<span style="color: #008000;">XCHG</span> : İki registerin içeriklerini karşılıklı olarak değiştirmelerini sağlar. <span style="color: #008000;">xchg ah,bh xchg ax,dx</span> gibi.<br />
<span style="color: #008000;">ADD</span> : İki değerin toplanması amacıyla kullanılır. Sonuç değer soldaki registere kaydedilir. <span style="color: #008000;">add ax,bx add ah,AF add dl,1 add al,ah</span> gibi.<br />
<span style="color: #008000;">SUB</span> : Çıkarma işlemi yapar. Sonuç ilk registere kaydedilir. <span style="color: #008000;">sub ah,1 sub ax,bx sub cx,10</span> gibi.<br />
<span style="color: #008000;">MUL</span> : Çarpma işlemi yapar. Tabii ki tüm işlemlerde olduğu gibi değerler ve sonuçlar hexadecimaldir. 3 farklı durumda incelenebilir.<br />
<span style="color: #008000;">8bit*8bit</span> yani <span style="color: #008000;">byte*byte : </span>Çarpılacak değerlerden biri <span style="color: #008000;">al</span> ye kaydedilir <span style="color: #008000;">mov al,5F</span> gibi. Daha sonra çarpma işlemi yapılır, <span style="color: #008000;">mul bl</span> gibi. Sonuç ise <span style="color: #008000;">ax</span> registerindedir. (ax=al*bl işlemi)<br />
<span style="color: #008000;">16bit*16bit</span> yani <span style="color: #008000;">word*word : </span>Çarpılacak değerlerden biri <span style="color: #008000;">ax</span> ye kaydedilir <span style="color: #008000;">mov ax,05FF</span> gibi. Daha sonra çarpma işlemi yapılır, <span style="color: #008000;">mul bx</span> gibi. Sonuç ise <span style="color: #008000;">dx,ax </span>ikilisine aktarılmıştır. Yani üst 16bitlik kısım <span style="color: #008000;">dx</span> de, alt 16bitlik kısım ise <span style="color: #008000;">ax</span> dedir. (dx,ax=ax*bx)<br />
<span style="color: #008000;">32bit*32bit</span> yani <span style="color: #008000;">dword*dword </span>Çarpılacak değerlerden biri <span style="color: #008000;">eax</span> ye kaydedilir <span style="color: #008000;">mov eax,A055FF10</span> gibi. Daha sonra çarpma işlemi yapılır, <span style="color: #008000;">mul ebx</span> gibi. Sonuç ise <span style="color: #008000;">edx,eax </span>ikilisine aktarılmıştır. Yani üst 32bitlik kısım <span style="color: #008000;">edx</span> de, alt 32bitlik kısım ise <span style="color: #008000;">eax</span> dedir. (edx,eax=eax,ebx)</p>
<p><span style="color: #008000;">DIV</span> : Bölme işlemi için kullanılır. Ayrıntılarına girmiyorum.<br />
<span style="color: #008000;">INC</span> : Register içeriğini bir artırır. <span style="color: #008000;">inc ah</span> gibi<br />
<span style="color: #008000;">DEC</span> : Register içeriğini bir azaltır. <span style="color: #008000;">dec cx</span> gibi.<br />
<span style="color: #008000;">NEG</span> : Sayının ikili tamamlayıcısını bulur. Örneğin <span style="color: #008000;">al</span> de 11110000 binary değeri bulunuyor ise <span style="color: #008000;">neg al</span> işleminden sonra bu değer 00001111 olur.<br />
<span style="color: #008000;">PUSH</span> : Stack a yani stack segmente değer göndermek için kullanılır. <span style="color: #008000;">push ax</span> gibi.<br />
<span style="color: #008000;">POP</span> : Stack dan değer çekmek için kullanılır. <span style="color: #008000;">pop cx</span> gibi.</p>
<p><strong><span style="font-size: x-small;">Aşağıda assembly komutlarının çoğunun bulunduğu bir liste mevcuttur. Geliştirilen her yeni komutseti ile bu liste büyümektedir:</span></strong></p>
<p><span style="color: #008000;"><span style="color: #99cc00;"><span style="color: #00ccff;">A<br />
</span><br />
AAA ASCII Adjust After Addition<br />
AAD ASCII Adjust AX Before Division<br />
AAM ASCII Adjust AX After Multiply<br />
AAS ASCII Adjust AL After Subtraction<br />
ADC Add with Carry<br />
ADD Add<br />
AND Logical AND<br />
ARPL Adjust RPL Field of Segment Selector</span><span style="color: #99cc00;">WAIT/FWAIT Wait<br />
WBINVD Write Back and Invalidate Cache<br />
WRMSR Write to Model Specific Register</span><span style="color: #99cc00;">XADD Exchange and Add<br />
XCHG Exchange Register/Memory with Register<br />
XLAT/XLATB Table Look-up Translation<br />
XOR Logical Exclusive OR</span></span></p>
<p><span style="color: #00ccff;">B</span></p>
<p><span style="color: #99cc00;">BOUND Check Array Index Against Bounds<br />
BSF Bit Scan Forward<br />
BSR Bit Scan Reverse<br />
BSWAP Byte Swap<br />
BT Bit Test<br />
BTC Bit Test and Complement<br />
BTR Bit Test and Reset<br />
BTS Bit Test and Set</span></p>
<p><span style="color: #00ccff;">C</span></p>
<p><span style="color: #99cc00;">CALL Call Procedure<br />
CBW/CWDE Convert Byte to Word/Convert Word to Doubleword<br />
CDQ Convert Double to Quad<br />
CLC Clear Carry Flag<br />
CLD Clear Direction Flag<br />
CLI Clear Interrupt Flag<br />
CLTS Clear Task-Switched Flag in CR0<br />
CMC Complement Carry Flag<br />
CMOVcc Conditional Move<br />
CMP Compare Two Operands<br />
CMPS/CMPSB/CMPSW/CMPSD Compare String Operands</span></p>
<p><span style="color: #99cc00;">CMPXCHG Compare and Exchange<br />
CMPXCHG8B Compare and Exchange 8 Bytes<br />
CPUID CPU Identification<br />
CWD/CDQ Convert Word to Doubleword/Convert Doubleword to Quadword<br />
CWDE Convert Word to Doubleword</span></p>
<p><span style="color: #00ccff;">D</span></p>
<p><span style="color: #99cc00;">DAA Decimal Adjust AL after Addition<br />
DAS Decimal Adjust AL after Subtraction<br />
DEC Decrement by 1<br />
DIV Unsigned Divide</span></p>
<p><span style="color: #00ccff;">E</span></p>
<p><span style="color: #99cc00;">EMMS Empty MMX(TM) Technology State<br />
ENTER Make Stack Frame for Procedure Parameters</span></p>
<p><span style="color: #00ccff;">F<br />
</span><br />
<span style="color: #99cc00;">F2XM1 Compute 2x-1<br />
FABS Absolute Value<br />
FADD/FADDP/FIADD Add<br />
FBLD Load Binary Coded Decimal<br />
FBSTP Store BCD Integer and Pop<br />
FCHS Change Sign<br />
FCLEX/FNCLEX Clear Exceptions<br />
FCMOVcc Floating-Point Conditional Move<br />
FCOM/FCOMP/FCOMPP Compare Real<br />
FCOMI/FCOMIP/ FUCOMI/FUCOMIP Compare Real and Set EFLAGS</span></p>
<p><span style="color: #99cc00;">FCOS Cosine<br />
FDECSTP Decrement Stack-Top Pointer<br />
FDIV/FDIVP/FIDIV Divide<br />
FDIVR/FDIVRP/FIDIVR Reverse Divide<br />
FFREE Free Floating-Point Register<br />
FICOM/FICOMP Compare Integer<br />
FILD Load Integer<br />
FINCSTP Increment Stack-Top Pointer<br />
FINIT/FNINIT Initialize Floating-Point Unit<br />
FIST/FISTP Store Integer<br />
FLD Load Real</span></p>
<p><span style="color: #99cc00;">FLD1/FLDL2T/FLDL2E/FLDPI/FLDLG2/FLDLN2/FLDZ Load Constant<br />
FLDCW Load Control Word<br />
FLDENV Load FPU Environment<br />
FMUL/FMULP/FIMUL Multiply<br />
FNOP No Operation<br />
FPATAN Partial Arctangent<br />
FPATAN Partial Archtangent<br />
FPREM1 Partial Remainder<br />
FPTAN Partial Tangent<br />
FRNDINT Round to Integer<br />
FRSTOR Restore FPU State</span></p>
<p><span style="color: #99cc00;">FSAVE/FNSAVE Store FPU State<br />
FSCALE Scale<br />
FSIN Sine<br />
FSINCOS Sine and Cosine<br />
FSQRT Square Root<br />
FST/FSTP Store Real<br />
FSTCW/FNSTCW Store Control Word<br />
FSTENV/FNSTENV Store FPU Environment<br />
FSTSW/FNSTSW Store Status Word<br />
FSUB/FSUBP/FISUB Subtract<br />
FSUBR/FSUBRP/FISUBR Reverse Subtract<br />
FTST TEST</span></p>
<p><span style="color: #99cc00;">FUCOM/FUCOMP/FUCOMPP Unordered Compare Real<br />
FWAIT Wait<br />
FXAM Examine<br />
FXCH Exchange Register Contents<br />
FXTRACT Extract Exponent and Significand<br />
FYL2X Compute y * log2x<br />
FYL2XP1 Compute y * log2(x +1)</span></p>
<p><span style="color: #00ccff;">H</span></p>
<p><span style="color: #99cc00;">HLT Halt</span></p>
<p><span style="color: #00ccff;">I</span></p>
<p><span style="color: #99cc00;">IDIV Signed Divide<br />
IMUL Signed Multiply<br />
IN Input from Port<br />
INC Increment by 1<br />
INS/INSB/INSW/INSD Input from Port to String<br />
INT n/INTO/INT 3 Call to Interrupt Procedure<br />
INVD Invalidate Internal Caches<br />
INVLPG Invalidate TLB Entry<br />
IRET/IRETD Interrupt Return</span></p>
<p><span style="color: #00ccff;">J</span></p>
<p><span style="color: #99cc00;">Jcc Jump if Condition Is Met<br />
JMP Jump</span></p>
<p><span style="color: #00ccff;">L</span></p>
<p><span style="color: #99cc00;">LAHF Load Status Flags into AH Register<br />
LAR Load Access Rights Byte<br />
LDS/LES/LFS/LGS/LSS Load Far Pointer<br />
LEA Load Effective Address<br />
LEAVE High Level Procedure Exit<br />
LES Load Full Pointer<br />
LFS Load Full Pointer<br />
LGDT/LIDT Load Global/Interrupt Descriptor Table Register<br />
LGS Load Full Pointer<br />
LLDT Load Local Descriptor Table Register</span></p>
<p><span style="color: #99cc00;">LIDT Load Interrupt Descriptor Table Register<br />
LMSW Load Machine Status Word<br />
LOCK Assert LOCK# Signal Prefix<br />
LODS/LODSB/LODSW/LODSD Load String<br />
LOOP/LOOPcc Loop According to ECX Counter<br />
LSL Load Segment Limit<br />
LSS Load Full Pointer<br />
LTR Load Task Register</span></p>
<p><span style="color: #00ccff;">M<br />
</span><br />
<span style="color: #99cc00;">MOV Move<br />
MOV Move to/from Control Registers<br />
MOV Move to/from Debug Registers<br />
MOVD Move 32 Bits<br />
MOVQ Move 64 Bits<br />
MOVS/MOVSB/MOVSW/MOVSD Move Data from String to String<br />
MOVSX Move with Sign-Extension<br />
MOVZX Move with Zero-Extend<br />
MUL Unsigned Multiply</span></p>
<p><span style="color: #00ccff;">N</span></p>
<p><span style="color: #99cc00;">NEG Two&#8217;s Complement Negation<br />
NOP No Operation<br />
NOT One&#8217;s Complement Negation</span></p>
<p><span style="color: #00ccff;">O</span></p>
<p><span style="color: #99cc00;">OR Logical Inclusive OR<br />
OUT Output to Port<br />
OUTS/OUTSB/OUTSW/OUTSD Output String to Port</span></p>
<p><span style="color: #00ccff;">P</span></p>
<p><span style="color: #99cc00;">PACKSSWB/PACKSSDW Pack with Signed Saturation<br />
PACKUSWB Pack with Unsigned Saturation<br />
PADDB/PADDW/PADDD Packed Add<br />
PADDSB/PADDSW Packed Add with Saturation<br />
PADDUSB/PADDUSW Packed Add Unsigned with Saturation<br />
PAND Logical AND<br />
PANDN Logical AND NOT<br />
PCMPEQB/PCMPEQW/PCMPEQD Packed Compare for Equal<br />
PCMPGTB/PCMPGTW/PCMPGTD Packed Compare for Greater Than</span></p>
<p><span style="color: #99cc00;">PMADDWD Packed Multiply and Add<br />
PMULHW Packed Multiply High<br />
PMULLW Packed Multiply Low<br />
POP Pop a Value from the Stack<br />
POPA/POPAD Pop All General-Purpose Registers<br />
POPF/POPFD Pop Stack into EFLAGS Register<br />
POR Bitwise Logical OR<br />
PSLLW/PSLLD/PSLLQ Packed Shift Left Logical<br />
PSRAW/PSRAD Packed Shift Right Arithmetic<br />
PSRLW/PSRLD/PSRLQ Packed Shift Right Logical</span></p>
<p><span style="color: #99cc00;">PSUBB/PSUBW/PSUBD Packed Subtract<br />
PSUBSB/PSUBSW Packed Subtract with Saturation<br />
PSUBUSB/PSUBUSW Packed Subtract Unsigned with Saturation<br />
PUNPCKHBW/PUNPCKHWD/PUNPCKHDQ Unpack High Packed Data<br />
PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ Unpack Low Packed Data<br />
PUSH Push Word or Doubleword Onto the Stack<br />
PUSHA/PUSHAD Push All General-Purpose Registers<br />
PUSHF/PUSHFD Push EFLAGS Register onto the Stack</span></p>
<p><span style="color: #99cc00;">PXOR Logical Exclusive OR</span></p>
<p><span style="color: #00ccff;">R</span></p>
<p><span style="color: #99cc00;">RCL/RCR/ROL/ROR Rotate<br />
RDMSR Read from Model Specific Register<br />
RDPMC Read Performance-Monitoring Counters<br />
RDTSC Read Time-Stamp Counter<br />
REP/REPE/REPZ/REPNE /REPNZ Repeat String Operation Prefix<br />
RET Return from Procedure<br />
ROL/ROR Rotate<br />
RSM Resume from System Management Mode</span></p>
<p><span style="color: #00ccff;">S<br />
</span><br />
<span style="color: #99cc00;">SAHF Store AH into Flags<br />
SAL/SAR/SHL/SHR Shift<br />
SBB Integer Subtraction with Borrow<br />
SCAS/SCASB/SCASW/SCASD Scan String<br />
SETcc Set Byte on Condition<br />
SGDT/SIDT Store Global/Interrupt Descriptor Table Register<br />
SHL/SHR Shift Instructions<br />
SHLD Double Precision Shift Left<br />
SHRD Double Precision Shift Right<br />
SIDT Store Interrupt Descriptor Table Register</span></p>
<p><span style="color: #99cc00;">SLDT Store Local Descriptor Table Register<br />
SMSW Store Machine Status Word<br />
STC Set Carry Flag<br />
STD Set Direction Flag<br />
STI Set Interrupt Flag<br />
STOS/STOSB/STOSW/STOSD Store String<br />
STR Store Task Register<br />
SUB Subtract</span></p>
<p><span style="color: #00ccff;">T<br />
</span><br />
<span style="color: #99cc00;">TEST Logical Compare</span></p>
<p><span style="color: #00ccff;">U<br />
</span><br />
<span style="color: #99cc00;">UD2 Undefined Instruction</span></p>
<p><span style="color: #00ccff;">V<br />
</span><br />
<span style="color: #99cc00;">VERR, VERW Verify a Segment for Reading or Writing</span></p>
<p><span style="color: #00ccff;">W</span></p>
<p><span style="color: #00ccff;"><span style="color: #99cc00;">WAIT/FWAIT Wait<br />
WBINVD Write Back and Invalidate Cache<br />
WRMSR Write to Model Specific Register</span><br />
</span></p>
<p><span style="color: #00ccff;">X</span></p>
<p><span style="color: #00ccff;"><span style="color: #99cc00;">XADD Exchange and Add<br />
XCHG Exchange Register/Memory with Register<br />
XLAT/XLATB Table Look-up Translation<br />
XOR Logical Exclusive OR</span></span></p>
<p><span style="color: #00ccff;"><span style="color: #99cc00;"> </span></span><span style="color: #008000;"><span style="color: #99cc00;"><span style="color: #333333;">© Roman Novgorodov</span><br />
</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.knbykl.org/debug-ve-kullanimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
