Skip to content

Math Functions

Joshua Riek edited this page Mar 28, 2020 · 1 revision

u32x16mul

Preform unsigned 32-bit by 16-bit multiplication using only 16-bit registers.

  • IN: DX:AX, BX = Multiplicand, Multiplier
  • OUT: DX:AX = Product

s32x16mul

Preform signed 32-bit by 16-bit multiplication using only 16-bit registers.

  • IN: DX:AX, BX = Multiplicand, Multiplier
  • OUT: DX:AX = Product

u32x32mul

Preform unsigned 32-bit by 32-bit multiplication using only 16-bit registers.

  • IN: DX:AX, CX:BX = Multiplicand, Multiplier
  • OUT: DX:CX:BX:AX = Product

s32x32mul

Preform signed 32-bit by 32-bit multiplication using only 16-bit registers.

  • IN: DX:AX, BX = Multiplicand, Multiplier
  • OUT: DX:CX:BX:AX = Product

u32x16div

Preform unsigned 32-bit by 16-bit divison using only 16-bit registers.

  • IN: DX:AX, BX = Dividend, Divisor
  • OUT: DX:AX = Quotient

s32x16div

Preform signed 32-bit by 16-bit divison using only 16-bit registers.

  • IN: DX:AX, BX = Dividend, Divisor
  • OUT: DX:AX = Quotient

u32x32div

Preform unsigned 32-bit by 32-bit divison using only 16-bit registers.

  • IN: DX:AX, CX:BX = Dividend, Divisor
  • OUT: DX:AX = Quotient

s32x32div

Preform signed 32-bit by 32-bit divison using only 16-bit registers.

  • IN: DX:AX, CX:BX = Dividend, Divisor
  • OUT: DX:AX = Quotient

u64x64div

Preform unsigned 64-bit by 64-bit divison using only 16-bit registers.

  • IN: DS:SI, ES:DI = Dividend (ptr to quad word), Divisor (ptr to quad word)
  • OUT: DX:CX:BX:AX = Quotient

u32x16add

Preform unsigned 32-bit by 16-bit addition using only 16-bit registers.

  • IN: DX:AX, BX = First addend, Second addend
  • OUT: DX:AX = Sum

s32x16add

Preform signed 32-bit by 16-bit addition using only 16-bit registers.

  • IN: DX:AX, BX = First addend, Second addend
  • OUT: DX:AX = Sum

u32x32add

Preform unsigned 32-bit by 32-bit addition using only 16-bit registers.

  • IN: DX:AX, CX:BX = First addend, Second addend
  • OUT: DX:AX = Sum

s32x32add

Preform signed 32-bit by 32-bit addition using only 16-bit registers.

  • IN: DX:AX, CX:BX = First addend, Second addend
  • OUT: DX:AX = Sum

u64x64add

Preform unsigned 64-bit by 64-bit addition using only 16-bit registers.

  • IN: DS:SI, ES:DI = First addend (ptr to quad word), Second addend (ptr to quad word)
  • OUT: DX:CX:BX:AX = Sum

u32x16sub

Preform unsigned 32-bit by 16-bit subtraction using only 16-bit registers.

  • IN: DX:AX, BX = Minuend, Subtrahend
  • OUT: DX:AX = Diffrence

s32x16sub

Preform signed 32-bit by 16-bit subtraction using only 16-bit registers.

  • IN: DX:AX, BX = Minuend, Subtrahend
  • OUT: DX:AX = Diffrence

u32x32sub

Preform unsigned 32-bit by 32-bit subtraction using only 16-bit registers.

  • IN: DX:AX, CX:BX = Minuend, Subtrahend
  • OUT: DX:AX = Diffrence

s32x32sub

Preform signed 32-bit by 32-bit subtraction using only 16-bit registers.

  • IN: DX:AX, CX:BX = Minuend, Subtrahend
  • OUT: DX:AX = Diffrence

u64x64add

Preform unsigned 64-bit by 64-bit subtraction using only 16-bit registers.

  • IN: DS:SI, ES:DI = Minuend (ptr to quad word), Subtrahend (ptr to quad word)
  • OUT: DX:CX:BX:AX = Diffrence