¡Urgente, urgente, urgente! Programación ensambladora (búsqueda de números de narciso): ¿Cuál es el error en operandos de instrucción no válidos?
SEGMENTO DE DATOS
IN1 DB 13,10,'El número es: $'
A1 DB 0 ;dígito de las centenas
A2 DB 0 ; dígito de las decenas
A3 DB 0 ; dígito de las unidades
B1 DW 0 ;dígito de las centenas
B2 DW 0 ;dígito de las decenas
B3 DW 0; unidades cubo
DATOS TERMINA
CÓDIGOS SEGMENTO
ASUME CS:CODES,DS:DATAS
INICIO:
MOV AX, DATOS
MOV DS, AX
MOV CX, 999
L1:
MOV AX , CX
MOV BL, 100
DIV BL ;AL=centenas, AH=resto
MOV A1, AL Dígito de centenas
MOV AL, AH
MOV AH, 0
MOV BL, 10
DIV BL
MOV A2, AL ;decenas
MOV A3, AH ;lugar de las unidades
LLAMADA A LIFANG ;encontrar cada cubo
MOV AX, B1
AÑADIR AX, B2
AGREGAR AX, B3
CMP AX, CX
JNE SIGUIENTE
LLAMADA A IMPRIMIR ;Si es igual Mostrar
SIGUIENTE:
LOOP L1 ; Bucle a 0
MOV AH, 4CH
INT 21H
;------- --------------------------
LIFANG:
MOV AL , A1
MOV AH, 0
MOV BX, AX
MUL BX
MUL BX
MOV B1, AX
MOV AL, A2
MOV AH, 0
MOV BX, AX
MUL BX
MUL BX p>
MOV B2, AX
MOV AL, A3
MOV AH, 0
MOV BX, AX p>
MUL BX
MUL BX
MOV B3, AX
RET
;------- ------ -----------------
IMPRIMIR:
LEA DX, IN1
MOV AH, 9
INT 21H
MOV AH, 2
MOV DL, A1 ;cien p> p>
AÑADIR DL, 30H
INT 21H
MOV DL, A2 ;十
AÑADIR DL, 30H
INT 21H
MOV DL, A3;
AÑADIR DL, 30H
INT 21H
RET
; -------------------------------
CÓDIGOS FINALIZA
FIN INICIO p>
Después de la ejecución, muestra:
c:\masm510>XX
El número es: 407
El número es: 371
El número es : 370
El número es : 153
El número es : 001
c:\masm510> p>