SBCI - Subtract Immediate with Carry

Syntax:SBCI Rd, K
Funktion:Subtrahiert die Konstante K und den Inhalt des Übertrag-Flags (Carry) vom Register Rd. Das Ergebnis wird im Quellregister Rd abgelegt.

Dieser Befehl kann nur mit den oberen 16 Registern ausgeführt werden.

Ein vergleichbarer Additionsbefehl steht nicht zur Verfügung, hierzu das Zweierkomplement subtrahieren! Siehe Beispiel.

Operation:Rd ← Rd - K - C
Operanden:0 ≤ d ≤ 31, 0 ≤ K ≤ 255
Programmzähler:PC ← PC + 1
Words:1 (2 Byte)
Zyklen:1
16-Bit-Opcode:0100 KKKK dddd KKKK

Flags im Status-Register SREG

ITHSVNZC
--
H:Das H-Flag wird gesetzt, wenn ein Übertrag von Bit 3 auf Bit 4 erfolgte, andernfalls wird das Flag gelöscht.
S:Das S-Flag wird gesetzt, wenn entweder das N-Flag oder das V-Flag gesetzt ist. Wenn beide Flags gleich sind, wird das S-Flag gelöscht.
V:Das V-Flag wird gesetzt, wenn aus der Operation ein Zweierkomplement-Überlauf erfolgt, andernfalls wird das Flag gelöscht.
N:Das N-Flag wird gesetzt, wenn das Bit 7 des Ergebnisses gesetzt ist, andernfalls wird es gelöscht.
Z:Das Z-Flag wird gelöscht, wenn das Ergebnis ungleich 0x00 ist, sonst bleibt es unverändert.
C:Das C-Flag wird gesetzt, wenn im Ergebnis ein Überlauf ins Bit 8 erfolgt, andernfalls wird es gelöscht.

Beispiel

	subi	ZL,lo8(-array)		;Relative Adresse (bspw. Array-Index) …
	sbci	ZH,hi8(-array)		;… in absolute Adresse (ab Marke „array“) umwandeln