Um den Hintergrund zu erklären:
Aus mov ax, 0 wird in Maschinensprache das hier:
B8 00 00
Das B8 ist der eigentliche Befehl, also "mov ax,". Die beiden 00 stellen den Wert da der in das Register geschrieben wird. Also insgesamt 3 Byte.
Aus xor ax, ax wird das:
31 C0
Also 1 Byte gespart.
Es gibt noch eine Reihe anderer Tricks in dieser Art. Aber erst mal sollte man das so bei allen mov ?x, 0 machen, also auch bx,cx und dx.