2012-11-17 35 views
5

Intel'in 8086 16 bit Bayraklar kaydındaki "OF" ve "TF" işaretlerini doğrudan "ayarla" ya da "temizlememize" izin veren montaj talimatları var mı? Değilse, hangi sahte kodu kullanmalıyız? 8086OF & TF işaretlerinin ayarlanması, temizlenmesi için montaj talimatları

+0

Bu soruyu sormadan önce [Intel Kılavuzları] (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html) okudunuz mu? – DCoder

+0

http://en.wikipedia.org/wiki/Trap_flag –

+0

@DCoder Yorum yazmadan önce Intel Manuals'ta böyle bir şey için herhangi bir sahte kod buldunuz mu? –

cevap

6

http://en.wikipedia.org/wiki/Trap_flag

doğrudan ayarlamak veya tuzak bayrağı sıfırlamak için hiçbir talimatı vardır. Bu işlemler, bayrak kayıtçısını yığının üzerine iterek, tuzak bayrak biti değiştirerek programcının istediği şeye getirerek ve bayrak kayıtçısını yığından geri çekerek yapılır. Tuzak bayrağını ayarlamak için talimatlar şunlardır:

AND WORD PTR[BP+0],0FEFFH 

ayarlamak için:

PUSHF ; Push flags on stack 
MOV BP,SP ; Copy SP to BP for use as index 
OR WORD PTR[BP+0],0100H ; Set TF flag 
POPF ; Restore flag Register 

basitçe talimat önceki sırayla VEYA talimat yerine, tuzak bayrağı sıfırlamak için ve taşma bayrağını temizleyin, 0100H'u 0800H ve 0FEFFh ile 0F7FFh ile değiştirin.

Ayarlamadan önce ne TF'un ne yaptığını mutlaka öğrenin. Bu bir tuzak.

+1

Mov bp, sp 'yapmanın nedenini ve * bp * registerini kullanmanızın sebebi nedir? – golem

+1

, çünkü 8086, 16 bit gerçek modda çalışmaktadır, bir bellek işlenmesindeki tek olası taban yazmaçları olarak sözcüğü [sp] yapmak BX, BP, SI ve DI'dir. – hlide