Orden de montaje de preguntas de exámenes reales

;Acabo de escribirlo. Jaja, aprobé el examen. Espero que ayude. Agregué algunas notas para su conveniencia. Si tienes alguna pregunta por favor pregúntame. ...

Supongamos CS: código, DS: datos

Segmento de datos

Base de datos de búfer 10

DB?

DB 10 DUP(?)

¿Resultado DW?

Result_Display DB 10 DUP(?)

Fin de los datos

Segmento de código

Inicio:

MOV AX, DATOS

MOV DS, AX

LEA DX, BUFF

MOV, 0AH

INT 21H

MOV di, 0

l0:; ¿De cuántos números consta un * * *?

Puntero de bytes CMP DS: [DI 2], 0DH

JZ Go

DI de empresa

JMP 10

Ir a:; Calcular el enésimo número de Fibonacci y convertir la cadena numérica a un número decimal.

MOV BL, 10

MOV AX, 1

MOV Si, Di; útil para determinar si la entrada tiene un solo número.

DI MOV·CX

L2: Empujando el hacha

Subbyte PTR DS: [DI 1], 30H

Sección Varias palabras puntero DS: [DI 1]

Agregar resultado, AX

Barril explosivo

MUL BL

2 de diciembre

p >

Bucle L2

; Hay dos situaciones: 1. La entrada es 1; 2. La entrada no es 1

CMP SI, 1

JNZ L7

Resultado del puntero de bytes CMP, 1

<. p>JNZ L7

MOV AX, resultado

JZ L4

MOV AX, 1

MOV·BX, 0

MOV·CX, resultado

Diciembre CX

L3:; El enésimo número de Fibonacci se almacena en AX.

Empuja el hacha

Añade el hacha, BX

Pop·BX

Lazo L3

L4:

;Muestra este número de Fibonacci

MOV DX, 0

LEA SI, se muestra el resultado

MOV DX, 0; DI para expresar cuantos numeros hay en un * * *?

L5:

MOV CX, 10

Llamar DIVDW

Agregar CL, 30H

MOV DS: [SI], CL

Valor máximo de CMP, 0

JZ·L6

Empresa SI

Empresa DI

JMP L5

L6:

MOV Ministro de Defensa, Ministro de Defensa

MOV, 2

INT 21H

p>

CMP DI, 0

Está bien JZ

4 de diciembre

2 de diciembre

JMP·L6

Bien:

MOV axe, 4C00H

INT 21H

; Parámetro: (AX)=tipo DWORD Los 16 bits inferiores de datos.

; (DX)=Datos altos de 16 bits de tipo DWORD.

(CX)=Divisor

Devuelve: (DX)=los 16 bits altos del resultado, y (AX)=los 16 bits bajos del resultado.

(CX)=remainder

¡Dividir 32 bits entre 16 bits puede evitar el desbordamiento!

div dw:; Comienza la definición de la subrutina, su función es separar números.

Empujando el Hacha

MOV AX, DX

MOV DX, 0

División CX

MOV· BX, AX

BLASTER

División CX

MOV CX, DX

BX MOV DX

RET Fin de definición de subrutina

Fin del código

Fin del inicio