سلام.
یک قطعه کد برای تست عملگر sbb
این قطعه کد رو در دیباگ اجرا کنید:

;a 100
mov ax,0200
mov bx,00ff
sub al,bl
sbb ah,bh
int 21

به نتیجه اجرای دستورات دقت کنید:

AX=0200  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0AE9 ES=0AE9 SS=0AE9 CS=0AE9 IP=0103 NV UP EI PL NZ NA PO NC
0AE9:0103 BBFF00 MOV BX,00FF
-t
AX=0200 BX=00FF CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AE9 ES=0AE9 SS=0AE9 CS=0AE9 IP=0106 NV UP EI PL NZ NA PO NC
0AE9:0106 28D8 SUB AL,BL
-t
AX=0201 BX=00FF CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AE9 ES=0AE9 SS=0AE9 CS=0AE9 IP=0108 NV UP EI PL NZ AC PO CY
0AE9:0108 18FC SBB AH,BH
-t
AX=0101 BX=00FF CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AE9 ES=0AE9 SS=0AE9 CS=0AE9 IP=010A NV UP EI PL NZ NA PO NC
0AE9:010A CD21 INT 21


سوال:چرا در نتیجه اجرای دستور:
sub al,bl


بیت های پرچم af,cf فعال میشن(1)؟؟؟

در جمع دو عدد 00h و مکمل دو عدد ffh که برابر 01h میشه:

00000000
+
00000001
-----------
00000001
هیج cf و یا ax ایجاد نمیشه...پس این موضوع به چه صورت هست که cf و af رو 1 میبینیم؟

-------------------------------

سوال بعدی ,وقتی sbb عمل تفریق رو منهای cf میکنه بعد از این عمل cf رو صفر قرار میده ...

و یا بر روی بیت های پرچم عمل خاصی رو انجام میده؟؟ (با توجه به دستور sbb در کد ,فلگ
های cf , af برابر صفر قرار گرفتند..!!!)