Routinen zum 16 Bit-Basisrechnen

Die hier vorgestellten Routinen sind solche für das Basisrechnen mit den 16-Bit CPU Registern. Bei einigen Routinen (z.B. SUBHD1 und SUBHD2) wird auf eine Levelabhängigkeit verwiesen. Diese ist hier erkärt.

Modul-Entry B: Beschreibung, I: Eingabe-, O: Ausgabeparameter

SUBHD1.MAC
SUBHD2.MAC
SUBHD1 B: 16 Bit Subtraktion <HL> - <DE>
SUBHD2 I: Levelabhängig
  O: Register HL hält Differenz. Register DE bleibt unverändert. Die CPU Flags sind wie bei einer normalen 8 Bit Subtraktion gesetzt

MULTIP.MAC
MULTIP B: Multiplikation zweier vorzeichenloser Ganzzahlen
  I: Registerpaare DE und HL halten Zahlen, von denen eine eine 8 Bit Zahl sein muss
  O: Registerpaar HL hält das Produkt. Carryflag ist gesetzt bei Überlauf

MULSGN.MAC
MULSGN B: Multiplikation zweier Ganzzahlen
  I: Registerpaare DE und HL halten Zahlen, von denen eine eine 8 Bit Zahl sein muss
  O: Registerpaar HL hält das Produkt. Carryflag ist gesetzt bei Überlauf

DIVIDE.MAC
DIVIDE B: Division zweier vorzeichenloser 16 Bit Ganzzahlen
  I: Registerpaar DE hält Dividend, Registerpaar HL den Divisor
  O: Registerpaar HL hält den Quotienten, Registerpaar DE den Rest. Carryflag ist gesetzt bei Division durch Null

ROUND.MAC
ROUND B: Division zweier vorzeichenloser 16 Bit Ganzzahlen und Runden des Quotienten
  I: Registerpaar DE hält Dividend, Registerpaar HL den Divisor
  O: Registerpaar HL hält den Quotienten, Registerpaar DE den Rest. Quotient ist aufgerundet bei entsprechendem Ergebnis. Carryflag ist gesetzt bei Division durch Null

DIVSGN.MAC
DIVSGN B: Division zweier 16 Bit Ganzzahlen
  I: Registerpaar DE hält Dividend, Registerpaar HL den Divisor
  O: Registerpaar HL hält den Quotienten, Registerpaar DE den Rest. Carryflag ist gesetzt bei Division durch Null

MULREC.MAC
MULREC B: Multiplikation einer 16 Bit Zahl mit 128 (Rekordlänge)
  I: Registerpaar HL hält Zahl
  O: Registerpaar HL hält das Produkt, der Akku hält das höchstwertige Byte

DIVREC.MAC
DIVREC B: Division einer 16 Bit Zahl durch 128 (Rekordlänge)
  I: Registerpaar HL hält Dividenden
  O: Registerpaar HL hält den Quotienten, Registerpaar DE den Dividenden

MODREC.MAC
MODREC B: Division einer 16 Bit Zahl durch 128 (Rekordlänge) und Moduloberechnung
  I: Registerpaar HL hält Dividenden
  O: Registerpaar HL hält den Quotienten, Registerpaar DE den Dividenden, Registerpaar BC den Rest

TRNREC.MAC
TRNREC B: Division einer 16 Bit Zahl durch 128 (Rekordlänge) und Aufrunden auf nächsten Rekord
  I: Registerpaar HL hält Dividenden
  O: Registerpaar HL hält den gerundeten Quotienten, Registerpaar DE den Dividenden, Registerpaar BC den Rest

INCRRN.MAC
INCRRN B: Inkrementieren einer Random Rekord Zahl (24 Bit)
  I: Registerpaar HL hält den niederwertigen Teil, der Akku das höchstwertige Byte der Zahl
  O: Zahl um 1 erhöht

DECRRN.MAC
DECRRN B: Dekrementieren einer Random Rekord Zahl (24 Bit)
  I: Registerpaar HL hält den niederwertigen Teil, der Akku das höchstwertige Byte der Zahl
  O: Zahl um 1 erniedrigt

NUMFIX.MAC
@NMFIX B: Hilsprogramm für MULSGN und DIVSGN

NUMPOS.MAC
@NMPOS @SIGN1 B: Hilsprogramm für MULSGN und DIVSGN
  @SIGN1