2015-10-25 21 views
0

我需要的是這樣的:使用AND和OR在68K語言

if((ch > 'g' && ch < 'm') || (A >= 0 && A <= 100)) { 
    // Do some stuff 
} else { 
    // Do some other stuff 
} 

ch是一個8位字符,而A是一個32位整數。

我懷疑我會需要這樣的代碼:

CMPI.B #$67, ch 
BLT  SOMELABEL 

CMPI.B #$6D, ch 
BGT  SOMELABEL 

CMPI.W #0, A 
BLE  SOMELABEL 

CMPI.W #100, A 
BGE  SOMELABEL 

如何將這些使用OR和AND運算符結合我?

回答

1

而不是用所有這些條件分支創建意大利麪代碼,請考慮使用Scc命令,其中cc是條件。如果條件爲真,該命令將目標字節設置爲$ FF,否則設置爲零。所以你可以有這樣的代碼:

cmpi.b #'g',ch 
shi.b d0 
cmpi.b #'m',ch 
slo.b d1 
and.b d1,d0 ;now d0 is nonzero if all conditions for 'ch' are true 
... same for A with result in d1 
or.b d1,d0 
beq else_branch 
... here is 'if' branch 
+0

'shi'做什麼?什麼是「高」條件? – MortalMan

+0

@MortalMan'shi'只是*大於無符號數*。我們有* sgt',大於簽名數字* –

+0

這裏是'Scc'命令的介紹:http://stackoverflow.com/questions/25035030/understanding-the-scc-instructions-of-68000-assembly。關於'lo' /'hs'條件,我認爲大多數68000個彙編器將分別接受它們作爲'cs' /'cc'的同義詞。 – lvd