Never get caught setting a register to zero without using xor:
Z80 Code
ld a,0 ; bad, 2 bytes / 7 cycles
xor a ; good, 1 byte / 4 cycles
8088 Code
mov ax,0 ; bad, 3 bytes / 4 cycles
xor ax,ax ; good, 2 bytes / 3 cycles
Never set two 8 bit register independently. Code readability is not required:
Z80 Code
ld b,10 ; bad, 4 bytes / 14 cycles
ld c,32
ld bc,10*256+32 ; good, 3 bytes / 11 cycles
8088 Code
mov ch,10 ; bad, 4 bytes / 8 cycles
mov cl,32
mov cx,10*256+32 ; good, 3 bytes / 4 cycles
Never compare to zero:
Z80 Code
cp 0 ; bad, 2 bytes / 7 cycles
or a ; good, 1 byte / 4 cycles
8088 Code
cmp ax,0 ; bad, 3 bytes / 4 cycles
test ax,ax ; good, 2 bytes / 3 cycles
Remember, you don't need to worry about code alignment, order of instructions or processor penalties. Follow these simple tips and your super-optimised bubble sort will demand the utmost respect!