-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
include 'emu8086.inc'
ORG 100h
MOV AL, 255
ADD AL, 1
JC label1
PRINT 'no carry.'
JMP exit
label1:
PRINT 'has carry.'
exit:
RET
進位標誌的含義大致是:「上一次算術運算的結果太大,無法放入目標寄存器中」。目標寄存器是AL。它是一個8位寄存器 - 它只能取0到255之間的值。因此ADD AL, 1
行產生的結果是256,這對AL來說確實太大了。因此,AL變爲0並且進位標誌被置位。
因爲你正在給包含255的8位寄存器('AL')加1? – Michael 2014-09-23 17:12:11
請你解釋一下計算... – supto 2014-09-23 17:16:47
'255'是二進制的'11111111'。 '11111111 + 1 =(1)00000000',其中'(1)'是進位,因爲'AL'是一個8位寄存器,結果'100000000'是9位。 '1'必須去某個地方。它進入進位'C'。 – lurker 2014-09-23 17:52:57