Red de conocimiento informático - Conocimiento sistemático - Experimento de ensamblador versión oficial en chino

Experimento de ensamblador versión oficial en chino

¿Puedo ser el primero? Muchos requisitos no se han escrito antes.

Segmento de datos

mess1 db 'Entrada - *: $ '

mess2 db 0dh, 0ah, 'Entrada número 1: $ '

mess3 db 0dh, 0ah, 'Ingresa el número 2: $ '

mess4 db 0dh, 0ah, '¡Error de entrada! $'

mess5 db 0dh, 0ah, ' $ '

num1 db 6 dup(0)

num2 db 6 dup(0)

char db 0

overnum db 36h, 35h, 35h, 33h, 35h

Fin de datos

Segmento de pila

; Introduzca aquí el código del segmento de pila.

Lado de la pila

Segmento de código

Supongamos CS: código, DS: datos, SS: pila

Inicio:

MOV ax, datos

MOV DS, AX

lead dx, desorden 1; símbolo de cálculo de solicitud de entrada

mov ah, 9

int 21h

s1:

mov ah, 1; esperando entrada

int 21h

cmp al, ' ' ; Compruebe si es un símbolo que debe ingresarse.

jz s2

cmp al,'-'

jz s2

cmp al,' * '

jz s2

jmp s 1; No sigas escribiendo.

s2:

mov char, al; si está almacenado en char para respaldo.

mov cx, 2

lea dx, correo 2

lea si, num1

s3:

Entrada de llamada; ingrese un conjunto de números

Llame nuevamente; verifique el rango de números

cmp bp, 0 en caso afirmativo, continúe ingresando el siguiente conjunto de números.

jz s4

lea dx, mess4 si no aparece ningún mensaje de error.

mov ah, 9

int 21h

jmp s3

s4:

lea dx, mensaje mess3 información para un grupo de números

lea si, num2

Loop s3

lead dx, mess5 loop feed

mov ah, 9

int 21h

lea si, num 1; genera la primera línea de números

Pantalla de llamada

mov dl, símbolo de salida char

mov ah, 2

int 21h

lea si, num2 genera la segunda línea de números

Visualización de llamadas

mov dl, ' = '; salida = símbolo

mov ah, 2

int 21h

lea si, num 1; Convierte el número a 10 números decimales.

Llame a Zhuang

mov bx, ax

lea si, num2 el segundo grupo se convierte en 10 números decimales.

Llame al distribuidor

mov dl, símbolo de juicio char

cmp dl, ' '; los números se almacenan en ax y bx.

jz s5

cmp dl, '-'

jz s6

xor dx, dx aumentar

Múltiples bx

jmp s7

s5:

Agregar ax, bx; agregar

jmp s7

s6:

sub bx, ax; resta

mov ax, bx

s7:

Llame a Shu Chu para generar el último valor; .

MOV, 4CH

INT 21H

Entrada:; La función es ingresar una cadena.

Push ax; parámetros de entrada dx, si

Push CX; Dx es el desplazamiento del mensaje de salida, si es el desplazamiento de la cadena almacenada.

Push dx; parámetro de salida bx número de parámetros de entrada

Push si

i1:

mov ah, 9

int 21h

XOR bx, bx

mov cx, 5

i2:

mov ah, 7

p>

int 21h

cmp al, 0dh

jz i3

cmp al, ' 0 '

jb i2

cmp al, ' 9 '

ja i2

mov [si], al

empresa si

empresa bx

mov dl, al

mov ah, 2

int 21h

bucle i2

i3 :

cmp cx, 5

jz i1

pops

pop dx

pop cx

pop dx

pop cx

p>

Barril explosivo

Remojado en agua para suavizarlo

Fin:; La función es verificar si la cuerda es demasiado grande, el máximo es 65535.

Push ax; parámetros de entrada bx, si, di

Push bx;

Push CX; Si es el desplazamiento de la cadena que se está verificando.

Se especula que Di es el desplazamiento de la cadena comparada.

Recomiende di; si el parámetro de exportación bp es 1, significa que el número es demasiado grande y 0 es normal.

XOR pb, pb

cmp bx, 5

jb o3

lea di, overnum

mov cx, 5

o1:

mov al, [si]

cmp al, [di]

jb o3

je o2

mov bp,1

jmp o3

oxígeno:

empresa si

Compañía di

Bucle o1

o3:

Pop Di

Pops

Popular cx

pop bx

Barril explosivo

Remojado en agua para suavizarlo

Pantalla: La cadena de visualización termina en 0.

Push ax; parámetro de entrada si

Push dx; Si es el desplazamiento de la cadena mostrada.

Empujar si

d1:

mov al, [si]

cmp al, 0

jz d2

mov dl, al

mov ah, 2

int 21h

empresa si

jmp d1

d2:

Popudi

Popular dx

Barril explosivo

Remojado en agua para suavizarlo

Zhuang:; Convierte números ascii a 10 valores binarios

Empuje bx; parámetro de entrada si

Empuje CX para cadena

Push dx; exportar parámetro ax

; Ax almacena el valor calculado.

XOR ax, ax

XOR cx, cx

mov bx, 10

mov al, [si]

p>

sub al, 30h

Empresa si

z1:

XOR cx, cx

xor dx , dx

mov cl, [si]

Empresa si

cmp cl, 0

jz z2

Cl afiliado, 30h

Multi bx

Agregar hacha, cx

jmp z1

z2:

Popular dx

Pop cx

pop bx

Remojado en agua para suavizar

Shu Chu: Convierte el valor en hacha a 10 salidas binarias.

Push ax; parámetro de entrada ax

Push bx; el valor almacenado en ax es el valor a convertir

Push cx

Empujar dx

mov bx, 10

XOR cx, cx

sc1:

xor dx, dx

Rama bx

Empujar dx

inc cx

valor máximo de cmp, 0

jnz sc1

sc2 :

dx popular

añadir dl, 30h

mov ah, 2

int 21h

bucle sc2

Pop dx

Pop cx

pop bx

Barril explosivo

Remojar en agua para suavizarlo

Fin del código

Fin del inicio