; multiplicação de dois números de 8 bits ; os dois fatores são lidos das duas últimas posições da memória ; o produto é armazenado nas posições com enereço FFFC e FFFD org 1000h 1000: 41 FE FF * Multip: mov AB,[0FFFEh] 1003: 31 * mov D,A 1004: 00 00 * mov A,0 1006: 20 08 * mov C,8 1008: 6D * shr B 1009: E3 01 * mulbit: jnc rola 100B: 99 * add A,D 100C: 77 * rola: rr AB 100D: F2 FA * loop C,mulbit 100F: 0E FC FF * mov [0FFFCh],AB 1012: FE * halt ; divisão de um numero de 16 bits por outro de 8 bits. ; o número a ser dividido é lido de [0FFFCh] e [0FFFDh]. ; o dividendo é lido de [0FFFEh]. ; o quociente é armazenado em [0FFFAh]. ; o resto é armazenado em [0FFFBh] org 2000h 2000: 41 FC FF * Divide: mov AB,[0FFFCh] 2003: 34 FE FF * mov D,[0FFFEh] 2006: 20 08 * mov C,8 2008: 9C * cmp A,D 2009: E3 0D * jnc Erro 200B: 74 * DivBit: shl AB 200C: DB 03 * jc Deu1 200E: 9C * cmp A,D 200F: DB 02 * jc Deu0 2011: 98 * Deu1: sub A,D 2012: 69 * inc B 2013: F2 F6 * Deu0: loop C,DivBit 2015: 0E FA FF * mov [0FFFA],AB 2018: FE * Erro: halt