El lenguaje ensamblador cuenta el número de números negativos
¿ASUMAR?CS:CODE,?DS:DATA
¿DATOS?SEGMENTO
NUM?DB?9,?-1,?-2,?8 ,?123,?17,?-23,?-78,?-56; 5 números negativos
LEN?EQU?$?-?NUM
DATA?ENDS p>
p>
CÓDIGO?SEGMENTO
INICIO:
MOV?AX,?DATA
MOV?DS,?AX p>
SUB?BX,?BX
LEA?SI,?NUM
MOV?CX,?LEN
LP: ¿PRUEBA?BYTE? PTR?[SI] ,?80H?; Deje que el bit de signo del número en [SI] se aplique con 1000?0000B. Si el resultado no es 0, significa un número negativo; de lo contrario, es un número positivo. p>
JZ?OVER; El resultado es 0, salte a OVER
INC?BX no es 0, ?BX aumenta en 1, ?BX está aquí para registrar el número de números negativos.
OVER: INC?SI p>
LOOP?LP
MOV?AX, 4C00H
INT?21H
CODE?ENDS
END?START
Renderizado
PD: Si hay algo que no entiendes, puedes hacer preguntas