Also von der reinen Logik her müsste xor schneller sein. Ich habe mal über Google danach gesucht und bin unter anderem darauf gestoßen:
sub ax,ax
xor bx,bx
sub cx,cx
xor dx,dx
sub di,di
xor si,si
sub bp,bp
Dort wird immer abwechselnd xor und sub benutzt. Die Vermutung liegt nahe, dass es sich um eine Pipelineoptimierung handelt. Die alternative währe :xor ax,ax
mov bx,ax
mov cx,ax
mov dx,ax
mov di,ax
mov si,ax
mov bp,ax
Wobei dann immer AX angesprochen wird. (Schlecht aus der Sicht von Pipelineoptimierung)