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
Comments