<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title> words/umslashmod.asm </title><meta name="keywords" content="amforth programming language Forth ATmega ATMEL"><meta name="description" content="amforth - laguage Forth for ATMEL ATmega"><!-- AUTOINCLUDE START "Page/Head.en.ihtml" DO NOT REMOVE --><link rel="StyleSheet" href="../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB Basic Style"><link rel="StyleSheet" href="../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print"><link rel="shortcut icon" type="image/x-icon" href="../../../../Web/PIC/MLAB.ico"><script type="text/javascript" src="../../../../Web/JS/MLAB_Menu.js"></script><!-- AUTOINCLUDE END --></head><body lang="en"><!-- AUTOINCLUDE START "Page/Header.en.ihtml" DO NOT REMOVE --><!-- ============== HEADER ============== --><div class="Header"><script type="text/javascript"><!--SetRelativePath("../../../../");DrawHeader();// --></script><noscript><p><b> JavaScript is required for including of the header </b></p></noscript></div><!-- AUTOINCLUDE END --><!-- AUTOINCLUDE START "Page/Menu.en.ihtml" DO NOT REMOVE --><!-- ============== MENU ============== --><div class="Menu"><script type="text/javascript"><!--SetRelativePath("../../../../");DrawMenu();// --></script><noscript><p><b> JavaScript is required for including of the menu </b><p></noscript></div><!-- AUTOINCLUDE END --><!-- ============== TEXT ============== --><div class="Text"><h1> words/umslashmod.asm </h1><p><input type=button onClick="history.back()" value="Back"><input type=button onClick="history.forward()" value="Forward"><a href="../WordList.en.html">Jump to Vocabulary</a></p><pre>; ( ud u2 -- rem quot) Arithmetics; R( -- ); unsigned division ud / u2 with remainderVE_UMSLASHMOD:.db $06, "um/mod",0.dw VE_HEAD.set VE_HEAD = VE_UMSLASHMODXT_UMSLASHMOD:.dw PFA_UMSLASHMODPFA_UMSLASHMOD:movw temp4, toslld temp0, Y+ld temp1, Y+ld temp2, Y+ld temp3, Y+;; unsigned 32/16 -> 16r16 dividePFA_UMSLASHMODmod:; set loop counterldi temp6,$10PFA_UMSLASHMODmod_loop:; shift left, saving high bitclr temp7lsl temp0rol temp1rol temp2rol temp3rol temp7; try subtracting divisorcp temp2, temp4cpc temp3, temp5cpc temp7,zerolbrcs PFA_UMSLASHMODmod_loop_controlPFA_UMSLASHMODmod_subtract:; dividend is large enough; do the subtraction for real; and set lowest bitinc temp0sub temp2, temp4sbc temp3, temp5PFA_UMSLASHMODmod_loop_control:dec temp6brne PFA_UMSLASHMODmod_loopPFA_UMSLASHMODmod_done:; put remainder on stackst -Y,temp3st -Y,temp2; put quotient on stackmovw tosl, temp0jmp DO_NEXT</pre><p><input type=button onClick="history.back()" value="Back"><input type=button onClick="history.forward()" value="Forward"><a href="../WordList.en.html">Jump to Vocabulary</a></p></div><!-- AUTOINCLUDE START "Page/Footer.en.ihtml" DO NOT REMOVE --><!-- ============== FOOTER ============== --><div class="Footer"><script type="text/javascript"><!--SetRelativePath("../../../../");DrawFooter();// --></script><noscript><p><b> JavaScript is required for including of the footer </b></p></noscript></div><!-- AUTOINCLUDE END --></body></html>