Bölüm 11 · SimülasyonKomut Kodlama: Opcode, D/W ve ModR/M ? ← Bölüm 11 KomutUygula opcodeD / SWMODREGR/Myer değiştirmeanlık Kapat Komut Kodlama: Opcode, D/W ve ModR/M Amaç: Bir 8086 komutunun makine kodunu alan alan görmek. Genel biçim: opcode (6 bit) + D (1: REG hedef, 0: REG kaynak) + W (0: bayt, 1: sözcük), ardından ModR/M baytı: MOD (2 bit), REG (3 bit), R/M (3 bit); gerekirse yer değiştirme (disp) ve anlık veri. 16 bitlik değerler küçük uçlu yazılır: önce düşük bayt. MODAnlamı 00bellek, disp yok (R/M = 110 ise doğrudan 16 bit adres) 01bellek + 8 bit disp (işaretli) 10bellek + 16 bit disp 11yazmaç: R/M de bir yazmaç kodu REG / R/M yazmaç kodları: 000 AL/AX, 001 CL/CX, 010 DL/DX, 011 BL/BX, 100 AH/SP, 101 CH/BP, 110 DH/SI, 111 BH/DI. R/M bellek kodları: 000 [BX+SI], 001 [BX+DI], 010 [BP+SI], 011 [BP+DI], 100 [SI], 101 [DI], 110 [BP] (MOD = 00'da doğrudan adres), 111 [BX]. Nasıl kullanılır? Kodla: kutuya bir komut yazın (ör. MOV CL, [BX+SI+12h]) ya da örnek seçin. Bir komutun birden çok geçerli kodlaması varsa (D = 0 / D = 1, kısa akümülatör biçimi, 83h işaret genişletmesi) üstteki düğmelerle seçilir; ilk düğme en kısa biçimdir. Çöz: onaltılık baytları yazın (ör. 8A 48 12); her alan sırayla okunur. Adım ▶ / ◀ Geri (→ / ←), Oynat, Sıfırla alanları tek tek açar. Kendini dene açıkken önce doğru kodu ya da komutu seçersiniz. Desteklenenler: MOV, ADD, OR, ADC, SBB, AND, SUB, XOR, CMP, TEST (yazmaç, bellek, anlık), MOV kesim yazmacı, INC/DEC/PUSH/POP, NOT/NEG/MUL/DIV, IN/OUT, INT, RET ve tek baytlık komutlar; ES:/CS:/SS:/DS: önekleri. Atlamalar çözme yönünde göreli uzaklıkla ($+n) gösterilir. Kodlamalar Intel 8086 kılavuzundaki biçim tablolarına göredir; sunumdaki örneklerle (ör. MOV AX, BX = 8B C3 / 89 D8), bağımsız bir başvuru kodlayıcısıyla ve ortak 8086 aracının komut uzunluklarıyla karşılaştırılarak doğrulanmıştır. İlgili sunum: Bölüm 11 · Komut Kodlama ve Dizgi Komutları (makine kodu biçimi, REG/MOD/R/M, MOV'un kodlama biçimleri).