{"id":230,"date":"2025-08-03T13:32:20","date_gmt":"2025-08-03T11:32:20","guid":{"rendered":"https:\/\/www.dev-tronic.de\/?p=230"},"modified":"2025-08-03T13:40:38","modified_gmt":"2025-08-03T11:40:38","slug":"8-bit-multiplikation","status":"publish","type":"post","link":"https:\/\/www.dev-tronic.de\/?p=230","title":{"rendered":"Z80 &#8211; 8 Bit Multiplikation"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Der Z80 hat selbst keine direkten Maschinenbefehle f\u00fcr Multiplikationen an Bord\u2026. Leider! Aber OK, aus der Schule wissen wir, dass eine Multiplikation auch problemlos durch Additionen dargestellt werden kann. Im Folgenden nun eine kleine Routine f\u00fcr 8 Bit-Multiplikationen mit max 16 Bit Ergebnis<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Folgende Register werden genutzt:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HL = Ergebnis<br>D = Multiplikator<br>E = Multiplikand<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:z80 decode:true \" title=\"8 BitMultiplikation\">Multiply:                           ; Diese Routine stellt eine Multiplikation von HL=D*E dar\n     ld hl,0                        ; HL enth\u00e4lt das Ergebnis und wird zun\u00e4chst mit 0 initialisiert\n     ld a,d                         ; Pr\u00fcfen, ob einer der Faktoren = 0 ist\n     or a\n     ret z                          ; Ja, das ist der Fall --&gt; Ergebnis = 0\n     ld b,d                         ; D in B \u00fcbertragen (f\u00fcr die Additionsschleife)\n     ld d,h                         ; D mit dem Inhalt von H versorgen (ist ja schon 0), jetzt enth\u00e4lt DE den zweiten Faktor\nMulLoop:                            ; jetzt DE B-mal zu HL addieren\n     add hl,de\n     djnz MulLoop\n     ret<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hier noch eine weitere 8 Bit Multiplikation mt 16-Bit-Ergebnis in HL:<\/p>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:z80 decode:true \" >;-----------------------------------\n; mul8: Multipliziert HL = HL * B\n; HL = Multiplikand (signed\/unsigned, z.B. sin\/cos-Wert)\n; B  = Multiplikator (Radius)\n; Ergebnis: HL = HL \u00d7 B (16 Bit, signed\/unsigned je nach Eingang)\nmul8u:\n                  push de\n                  ld de,hl    ; DE = HL (Multiplikand sichern)\n                  ld hl,0\nmul8u_lp:\n                  add hl,de\n                  djnz mul8u_lp\n                  pop de\n                  ret<\/pre><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Z80 hat selbst keine direkten Maschinenbefehle f\u00fcr Multiplikationen an Bord\u2026. Leider! Aber OK, aus der Schule wissen wir, dass eine Multiplikation auch problemlos durch Additionen dargestellt werden kann. Im Folgenden nun eine kleine Routine f\u00fcr 8 Bit-Multiplikationen mit max 16 Bit Ergebnis Folgende Register werden genutzt: HL = ErgebnisD = MultiplikatorE = Multiplikand Hier noch eine weitere 8 Bit Multiplikation mt 16-Bit-Ergebnis in HL:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20],"tags":[25,26,23],"class_list":["post-230","post","type-post","status-publish","format-standard","hentry","category-z80codeschnipsel","tag-8-bit","tag-multiplikation","tag-rechnen"],"_links":{"self":[{"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=230"}],"version-history":[{"count":12,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/posts\/230\/revisions"}],"predecessor-version":[{"id":591,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=\/wp\/v2\/posts\/230\/revisions\/591"}],"wp:attachment":[{"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dev-tronic.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}