Expertos en montaje, por favor vengan
ENTRADA NÚMERO DE MACRO
LOCAL SIGUIENTE1
LOCAL SIGUIENTE2
LOCAL FINAL0
SIGUIENTE1 :
LEA DX, STRING1
MOV AH, 9
INT 21H
MOV AH, 1
INT 21H
CMP AL, 30H
JL NEXT2
CMP AL, 39H
JG NEXT2
JMP END0
SIGUIENTE2:
LEA DX, STRING2
MOV AH, 9
INT 21H
JMP SIGUIENTE1
END0:
AND AL, 0FH
NUM MOV, AL
ENDM
SEGMENTO DE DATOS
STRING1 DB 0AH, 0DH, 'Ingrese un número (0 a 9): $'
STRING2 DB 0AH, 0DH, '¡Número incorrecto! $'
STRING3 DB 0AH, 0DH
DB 10 DUP(0) <
NUM1 DB
NUM2 DB ? p> p>
FINES DE DATOS
SEGMENTO DE PILA1 PARA PILA
BUF Db 60 DUP(?)
FINALES DE PILA1
SEGMENTO DE CÓDIGO
ASUMIR CS: CÓDIGO, DS: DATOS, ES: DATOS
INICIO:
MOV AX, DATOS
MOV DS , AX
MOV ES.AX
Introduce NUM1
Introduce NUM2
CLD
LEA DI, [ STRING3 2 ]
MOV AL, NUM1
O AL, 30H
STOSB
MOV AL, 2BH
STOSB
MOV AL, 2BH
STOSB
MOV AL, NUM2
O AL, 30H
STOSB
MOV AL, 3DH
STOSB
XOR AX, AX
MOV AL, NUM1
AÑADIR AL, NUM2
AAA
EMPUJAR HACHA
MOV AL, AH
PRUEBA AL, AL
JZ SIGUIENTE
O AL, 30H
STOSB
SIGUIENTE:
POP AX
O AL, 30H
STOSB
MOV
AL, 24H
STOSB
LEA DX, STRING3
MOV AH, 9
INT 21H
MOV AX, 4C00H
INT 21H .
CODIGO FINALIZA
FIN INICIO
El siguiente es un algoritmo que aproxima la raíz cuadrada de un ¡número!
1 3 5 7...2(n-1)=n-cuadrado
Por lo tanto, simplemente resta n-cuadrado continuamente del número impar 1.3.5 El valor de… . .2(n-1) Cuando la n 1ª diferencia es negativa, entonces el número de restas n puede aproximarse al valor cuadrado. Puede que no lo haya dejado lo suficientemente claro, ¡pero le proporcionaré una subrutina de prescripción para su referencia!
mov bx, 0
mov dx, 1
mov ax, y; y es el número a elevar al cuadrado
nuevamente: sub ax, dx
jc exit; si no hay suficientes restas, finaliza
inc dx
inc dx
inc bx.
jmp nuevamente
El valor de ese bx al final es la raíz cuadrada requerida