2011-02-27 20 views
5

MARIE derleme dilini anlamaya çalışıyorum. veya > gibi şeyler yapmak için skipcond'u ya da çarpma veya bölme işlemlerini tam olarak anlamıyorum.`Skipcond`, MARIE montaj dilinde nasıl çalışır?

Ben bu basit programı alıyorum: Anlamıyorum ne

x = 1 
while x < 10 do 
x = x +1 
endwhile; 

belirli atlama koşulları nasıl kullanılacağı ise: Artık

Skipcond 800 if AC > 0, 
Skipcond 400 if AC = 0, 
Skipcond 000 if AC < 0 

, ben 10 x çıkarmak biliyorum ve skipcond kullanarak test edin.

Hangisi ve neden olduğundan emin değilim. Sanırım gerçekten nasıl çalıştıklarını biliyor olsaydım belki anlamak daha kolay olurdu. Neden sıfır ile karşılaştırmak için kullanılır? Eğer x den 10 çıkartmaya ise x 10. eşit olarak

100  load one 
101  store x 
102  subt ten 
103  skipcond400 if x-10 = 0? // or skpcond000 x -10 < 0?? 

cevap

1
while x < 10 do 
    x = x + 1 

kısa sürede döngünün dışarı atlayacaktır, x eşittir kadar negatif bir değer elde edersiniz:

Bu

ben ne var 10 (ve değer 0'dır). Yani skpcond000 kullanarak çok yakında dışarı atlamak gibi yanlış olur. Yani skpcond400 doğru.

Original:   while (x < 10) do 
Subtract 10:   while ((x - 10) < 0) do 
Use != instead of <: while ((x - 10) != 0) do 

Ayrıca aynı davranışı yeniden oluşturmaya sonra koşulunu xartırmak zorunda olduğuna dikkat:

Belki de bu derleme kodunun yakınına olacak böylece C kodunu değiştirmek anlamak daha kolaydır while döngüsüne.