Estadísticas en lenguaje ensamblador
¿DATOS?NÚMERO DE SEGMENTO?DB12H,88H,82H,89H,33H,90H,0H,10H,0BDH,01H
N?EQU$-NUM
¿POSITIVO?DB0
NEGATIVO?DB0
CERO?DB0 SUM?DW0
¿DATOS?ENDS STACK1?SEGMENTSTACK DB100?DUP(?) STACK1?ENDS
CODE?SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACK1
START?PROC?FAR PUSH?DS MOVAX,?0;Secuencia estándar PUSH?AX MOVAX,?DATA MOVDS ,?AX MOVSI,OFFSET?NUM MOVCX,N CLD MOVBX,0
@M0: LODSB CBW ADDBX,AX CMPAL,0 JG@M1 JL@M2 INCZERO JMP@MM
@M1: INCPOSITIVO JMP@MM
@M2: INCNEGATIVO
@MM: ¿BUCLE?@M0 MOVSUM,BX MOVAX,BX CALL?DSPAXS MOVAL,POSITIVO MOVAH,0 CALL?DSPAXS MOVAL,NEGATIVO MOVAH,0 CALL?DSPAXS MOVAL,ZERO MOVAH,0 CALL?DSPAXS RET
INICIO?ENDP
;============= =============== DSPAXS?PROC?NEAR PUSH?AX TEST?AX,8000H JNS@DSPAXS1 EMPUJAR?AX PUSH?DX MOVAH,2 MOVDL,'-' INT21H POPDX POPAX NEGAX
@DSPAXS1: ¿LLAMADA?DSPAX POPAX RET DSPAXS?ENDP
;========================== = ===
DSPAX?PROC?NEAR PUSH?AX PUSH?BX PUSH?CX PUSH?DX PUSHF XORCX,CX MOVBX,10
@DSPAX1: XORDX,DX DIVBX INCCX ORDX ,30H PUSH?DX CMPAX,0 JNE@DSPAX1 MOVAH,2
@DISPAX2: POPDX INT21H LOOP?@DISPAX2 MOVDL,32 INT21H POPF POPDX POPCX POPBX POPAX RET
DSPAX? ENDP
;============================
CÓDIGO?ENDS ENDSTART p >