En ensamblador, no se utilizan instrucciones de multiplicación, solo se utilizan instrucciones de suma y el registro de bandera AL BL para implementar la función de multiplicación de dos enteros positivos binarios de ocho bits.
CÓDIGO?SEGMENTO ASSUMECS:CODE ORG100H INICIO:?PUSH?CS POPDS PUSH?CS POPES MOVAL,255 MOVBL,255 CALL?MULT CALL?DISPAX MOVAH,4CH INT21H
;= ==================================================== =
;El multiplicando se coloca en al?, el multiplicador se coloca en bl y el resultado se coloca en ax
MULT?PROC?NEAR PUSH?DX PUSHF MOVAH,0 MOVDX,0 CMPBL,0 JE@MULTEXIT @MULT1:?SHRBL,1 JNC@MULT2 ADDDL,AL ADCDH,AH @MULT2:?SHLAL,1 RCLAH,1 CMPBL,0 JNE@MULT1 MOVAH,DH MOVAL,DL POPF POPDX RET @MULTEXIT: MOVAX,0 POPF POPDX RET
MULT?ENDP
;===================== === ===========
;Coloque el número sin signo que se mostrará en ?ax?DISPAX?PROC?NEAR PUSH?AX PUSH?BX PUSH?CX PUSH?DX PUSH?SI PUSH?DI PUSH?BP PUSHF PUSH?DS PUSH?CS POPDS MOVBYTE?PTR?NZ,0 PUSH?AX LEASI,DIVARR MOVCX,5 @1: POPAX MOVDX,0 MOVBX,[SI] DIVBX PUSH ?DX CMPAL,0 JNE @2 CMPBYTE?PTR?NZ,1 JE@2 CMPCX,1 JE@2 MOVDL,20H JMP@3 @2: ADDAL,30H MOVDL,AL MOVBYTE?PTR?NZ,1 @3: MOVAH ,2 INT21H INCSI INCSI LOOP ?@1 POPDX POPDS POPF POPBP POPDI POPSI POPDX POPCX POPBX POPAX RET DIVARR?DW10000,1000,100,10,1 NZ?DB0 DISPAX?ENDP
;===== ====== ===================================
TERMINA FINALIZACIÓN