2014-09-23 58 views
-2
include 'emu8086.inc' 
ORG 100h 
MOV AL, 255 
ADD AL, 1 
JC label1 
PRINT 'no carry.' 
JMP exit 
label1: 
PRINT 'has carry.' 
exit: 
RET 
+0

因爲你正在給包含255的8位寄存器('AL')加1? – Michael 2014-09-23 17:12:11

+0

請你解釋一下計算... – supto 2014-09-23 17:16:47

+0

'255'是二進制的'11111111'。 '11111111 + 1 =(1)00000000',其中'(1)'是進位,因爲'AL'是一個8位寄存器,結果'100000000'是9位。 '1'必須去某個地方。它進入進位'C'。 – lurker 2014-09-23 17:52:57

回答

0

進位標誌的含義大致是:「上一次算術運算的結果太大,無法放入目標寄存器中」。目標寄存器是AL。它是一個8位寄存器 - 它只能取0到255之間的值。因此ADD AL, 1行產生的結果是256,這對AL來說確實太大了。因此,AL變爲0並且進位標誌被置位。