Hola summer. El método básico para multiplicar en ensamblador es mediante la suma sucesiva, es decir, si tenemos por ej: 4x3 se puede interpretar sumar el numero cuatro, tres veces: 4+4+4
en terminos generales, sería la suma del operando1, tantas veces operando2.
llevandolo al switcheo de transistores de los pic (en asm,

)
- el primer paso es ir sumando el operando1 y guardarla en un registro (GPR), llamemoslo resultado_lsb, recuerden que si el producto es con 8 bits, el resultado podria pasar de 8 bits, bueno el asunto es que mientras se va haciendo una suma en resultado_lsb. Por otro lado se va decrementando operando2 y éste actuará como un contador, el contador de las veces que sumara operando1 y cuando operando2 llegue a cero se habrá completado la suma y por tanto, la multiplicación.
- para saber si el resultado de la multiplicación es mayor de 8 bits, está el bit Carry y cada vez que acuse un desbordamiento se incrementará resultado_msb
movlw 4
movwf operando1
movlw 3
movwf operando2
movlw 0
bcf STATUS,C ; limpia el acarreo
sumar:
addwf operando1,w ; operando1 + w -> w
movwf resultado_lsb ; w -> resultado_lsb
btfss STATUS,C ; si hay acarreo hacer resultado_msb + 1 --> resultado_msb
goto pabajo ; continua la suma
bcf STATUS,C ; limpia el acarreo
incf resultado_msb,1 ; el resultado es mayor de 255
pabajo:
decfsz operando2,1 ; decrementar operando2 si es 0 salir
goto sumar
nop ; termina la suma sucesiva
nota: para la división es de una manera similar, solo que en vez de sumar, se usa la resta
salu2
Pedro