Bei der Berechnung des Paritätsbits hapert es aber doch gewaltig, da ich weder Sprung-, noch Konditionalbefehle benutzen darf
Dein Lehrer möchte Dich ärgern?
Dann würde ich ihm eine Lösung präsentieren, die er vielleicht nicht erwartet hat.
Man nehme vorberechnete 16 Bytes in denen der Wert der Parität steht.
Code:
Zahl | Parität
0000 => 0
0001 => 1
0010 => 1
0011 => 0
...
1111 => 0
In Assembler wird das mit Define Byte abgelegt:
Code:
.data
LU_TABLE:
DB 0,1,1,0,....,0
.text
LEA %ebx, LU_TABLE
# jetzt die Zahl in Register %eax dazuaddieren und man hat die Adresse
# an der die Parität steht
ADD %ebx, %eax
# Inhalt des Bytes auslesen
MOVB %cx, [%ebx]
Also ich stehe ja mit X86-Assembler auf Kriegsfuss, daher sind bestimmt noch Fehler in obigem Code.
Aber das Prinzip der Nachschlagetabelle sollte klar geworden sein.