2 ; Fecha: 30 / 03 / 2010 3 ; Descripción: 4 ; Programa emsamblador que multiplique dos datos de 4 bits sin signo. 5 ; Utilizar para ello el algoritmo de suma desplazamiento ( Incluyendo 6 ; o no las sumas parciales cero). 7 ; Los operando deben quedar en las posiciones 1200 y 1201, y el resultado 8 ; en la 1202. 9 ; RECURSOS USADOS: El multiplicando estará en la dirección 1202H. 10 ; El multiplicador estará en la dirección 1201H, el resultado 11 ; en la dirección 1202H, para operarar usaremos los registros D,E,M 12 ; el acumulador y un contador. 13 ; PRUEBAS: Con los números 2 * 4 = 8 14 15 1000 ORG 1000H ; Nos posicionamos en la dirección que empezará a contener mi progra ma 16 1000 21 00 12 LXI H, 1200H ; El almacenaje comienza en la dirección 1200H 17 1003 36 02 MVI M, 02 ; Cargamos el 02 en el registro M 18 1005 56 MOV D, M ; Movemos el contenido del registro M al registro D 19 1006 23 INX H ; Incrementamos los registros 20 1007 36 04 MVI M, 04 ; Cargamos el 08 en el registro M 21 1009 5E MOV E, M ; Movemos el contenido del registro M al registro E 22 100A 23 INX H 23 100B 36 00 MVI M, 00 ; Cargamos el 00 en el registro M, que será donde estará el resultad o 24 100D 0E 04 MVI C, 04 ; Cargamos el 04 en el registro C, lo emplearemos como contador, el número 4 por los cuatro bits de datos 25 100F 7B BUCLE:MOV A, E ; Movemos al acumulador el contenido del registro E 26 1010 1F RAR ; Desplazamos el acumulador a la derecha 27 1011 5F MOV E, A ; Movemos al registro E el contenido del acumulador 28 1012 D2 18 10 JNC FINAL ; Iremos a la etiqueta final en caso que el contenido del acarreo se a 0, pra 29 1015 7A MOV A, D ; Movemos al acumulador el contenido del registro D 30 1016 86 ADD M ; Sumamos el contenido del registro M al acumulador 31 1017 77 MOV M, A ; Movemos al registro M el contenido del acumulador 32 1018 7A FINAL:MOV A, D ; Movemos al acumulador el registro D 33 1019 17 RAL ; Desplazamos el acumulador a la izquierda 34 101A 57 MOV D, A ; Movemos al registro D, el contenido del acumulador 35 101B 0D DCR C ; Decrementamos el contador en 1 36 101C C2 0F 10 JNZ BUCLE ; Vamos al la etiqueta Bucle en caso que el contenido del acumulador sea 0 37 101F CF RST 1 38 1020 END ; Finalizamos