For my game, I'd like to implement velocities in player movement. I know how to do that in languages that have fractions and negative numbers, but I'm having trouble figuring out how to do it in assembly.

The way velocity works is like this: the player has an x-coordinate, and an x-velocity. When the right key is pressed, the velocity is increased by a fraction, say 0.4. The velocity is then added to the x-coordinate. As long as the right key is pressed, on every game loop the velocity will be increased until it reaches its maximum value, say 1.5. When the key is released, 'friction' is applied to slow the player down. Let's also set it to 0.4. So every game loop, the velocity will be decreased by 0.4 until it reaches 0. For the left key, the velocity would be decreased to -1.5.

I'm reading up on one's and two's complements for the negative number calculations. How do the fractions work? Do I simply shift the velocity left when calculating velocity and right when applying them to the x-coordinate?