Red de conocimiento informático - Conocimiento sistemático - Problemas con el lenguaje ensamblador

Problemas con el lenguaje ensamblador

I. Escriba un programa para dividir la matriz STRING que contiene 20 elementos en la matriz par STRING1 y la matriz impar STRING2...

Este programa puede compilarse y ejecutarse correctamente

Segmento de código.

Asumir CS:Code,DS:Code

STRING db 230,69,89,35,46,57,68,79,51,81,98,43,56, 19,123 ,98 ,102,87,65,156

STRING1 db 20 dup(0) ;matriz par

STRING2 db 20 dup(0) ;matriz impar

Inicio: push cs

pop ds

push cs

pop es; make El segmento de datos, el segmento adicional y el segmento de código son iguales

lea si,STRING ;tomar dirección de variable de matriz

lea di,STRING1 ;dirección de matriz par

lea bx,STRING2 ;dirección de matriz impar

mov cx, 20 ;número de elementos

cld

Partición: lodsb ;Leer un elemento

test al,1 ;¿par?

jnz $ +5 ;No

stosb ;Guardar en matriz par

jmp $+5

mov [bx],al ;Guardar en matriz impar

inc bx

partición de bucle

Exit_Proc: mov ah.4ch ;Finalizar programa

int 21h

Código FINALIZA p>

FIN Inicio; La compilación termina aquí

II. Analice la función del siguiente segmento del programa y convierta el segmento en un programa completo utilizando el marco de definición de segmento completo o la definición de segmento simplificada. framework y vea los resultados experimentales a través de CodeView.

MOV DX,0

LOP1:MOV AH.1 recibe caracteres del teclado y la codificación ASCII de los caracteres está en AL

INT 21H

CMP AL,'$'

JZ SIGUIENTE

CMP AL, 30H

JB LOP1

CMP AL,39H

JA LOP1

Y AL,0FH

AÑADIR DL,AL

ADC DH,0

JMP LOP1

NEXT: HLT

1. Función del programa

Ingresa caracteres en el teclado, y si es así. un número, conviértalo en un número binario, luego se acumula en el registro DX; de lo contrario, los caracteres se vuelven a ingresar hasta que el carácter de entrada sea $ y se detenga;

2. Complete el programa

; Este programa se compila y ejecuta correctamente

Segmento de código

Supongamos CS: código, DS: código

Inicio: presione cs

Pop ds; haga que el segmento de datos sea el mismo que el segmento de código

MOV DX,0

LOP1 : MOV AH,1 recibe caracteres del teclado, la codificación ASCII de los caracteres es en AL

INT 21H

CMP AL,'$

JZ SIGUIENTE

CMP AL, 30H

JB LOP1

CMP AL,39H

JA LOP1

Y AL,0FH

AÑADIR DL,AL

ADC DH,0

JMP LOP1

SIGUIENTE: HLT

Exit_Proc: mov ah,4ch ;finalizar programa

int 21h

Código FINALIZA

END Inicio ;La compilación termina aquí.