thats because an addition in hardware is a pyrabid of 'xor gates' and 'and gates' that tapers upwards whilst subtraction is mearly a xor (thats why xor ax,ax clears the value in ax). since a 16 bit number requires 16 xors+ands to add them thats 15 more steps than it takes to subtract. I've got a logic simulator, a good one, I work in electrics too and I've built full adders and multipliers out of 7400's logic chips I'm really more a hardware guy that has a thing for graphics than an all out programmer. Heres a thing I put together to subtract and add two values you need an emulator to check the results in the variables 'value' and 'carry' but this is a true software emulation of how basic math is done in hardware it was written for emu8086 so it might not work as is in fasm but everything is done with boolean logic so the math will be universal
mins_oper:
mov ah, a_reg
mov value, ah
mov bh, b_reg
xor ah, bh
mov value, ah
plus_oper:
mov ah, a_reg
mov value, ah
mov bh, b_reg
mov ch, a_reg
mov dh, b_reg
mov carry, dh
xor ah, bh
mov value, ah
and ch, dh
mov carry, ch
shl ch, 0001h
mov carry, ch
plus_loop:
mov ah, value
mov bh, carry
mov ch, value
mov dh, carry
mov value, ah
xor ah, bh
mov value, ah
and ch, dh
mov carry, ch
shl ch, 0001h
mov carry, ch
cmp ch, 0000_0000b
jne plus_loop
ret
a_reg db 0111_1111b
b_reg db 0001_0001b
value db 0000_0000b
carry db 0000_0000b
end