3)MOV CH, TABL3 2 CH=(0CH)
4)MOV DL, ARRAY DL=(41H)
5)MOV DH, COUNT DH=(4)
Capítulo 4
4.1 Escriba el segmento del programa para completar las siguientes funciones:
1) Almacenar 32H en CH
.MOV CH, 32H
2) Suma el contenido en CH a 2AH
AÑADIR CH, 2AH
3) Suma Multiplica el contenido en CH. por 2
ADD CH, CH; (La respuesta en el cuaderno de ejercicios es: SHL CH, 1)
4) Almacena el contenido en CH como BX en la unidad de 10 bytes ( segmento de datos) de la variable de matriz NUM direccionada en relación con la dirección base
MOV BX, 9
MOV NUM[BX], CH
4.2 Escribir el programa segmento que cumple las siguientes funciones:
1) En el segmento de datos, la palabra variable DARA1 tiene dos datos: 1C35H y 0214H, y la palabra variable DARA2 tiene dos datos: 0A678 y 81A4H, la palabra variable DARA3 tiene dos unidades vacías
Autor: 218.27.73.* 2005-9-3 09:21 Responder a esta afirmación
------- ------ -------------------------------------- ------ -----------------
4 Respuestas a ejercicios extraescolares de programación en lenguaje ensamblador
SEGMENTO DE DATOS
p>DARA1 DW 1C35H, 0214H
DARA2 DW 0A678, 81A4H
DARA3 DW 2 DUP (?)
FIN DE DATOS
2 ) Transfiera los datos de la primera palabra de DATA1 a AX
MOV AX, DATA1
3) Reste el contenido de AX de los datos de la primera palabra de FARA2
. SUB AX, FARA2
4) Almacena el resultado en AX en la primera unidad vacía de DATA3
MOV DATA3, AX
5) Transfiere la segunda palabra. datos de DATA1 a AX
MOV AX, DATA1 2
6) Combine el contenido de AX con los segundos datos de SARA2 y tome prestado la resta para la desaceleración de la primera fase
.SBB AX, SARA2 2
7) Almacenar el resultado de AX en la segunda unidad de DATA3
4.3 Hay datos digitales firmados en las unidades de palabra de A1 y A2 Intente encontrar el valor absoluto del número de longitud de palabra doble compuesto por A1 y A2, guárdelo en las unidades de palabras de B1 y B2, dibuje el diagrama de flujo del programa y escriba Job
Segmento, incluido el pseudo-. instrucciones y secuencias de instrucciones
SEGMENTO DE DATOS
A1 DW n1
A2 DW n2
SEGMENTO DE DATOS
A2 DW n2
p>
B1 DW
B2 DW
EXTREMOS DE DATOS
SEGMENTO DE CÓDIGO
ASSUME CS: CODE, DS: DATA
MOV AX, DATA
MOV DS, AX
CMP WORD PTR A2, 7FFFH
JNL
CÓDIGO1
NEG PALABRA PTR A2
NEG PALABRA PTR A1
CÓDIGO1: MOV AX, A1
MOV DX, A2
MOV B1, AX
MOV B2, DX
MOV AH, 00H
INT 21H
CÓDIGO FINALIZA p>
p>
FIN
4.4 Combine los códigos ASCII de los dos números decimales almacenados en la variable de bytes BCD1 en un código BCD comprimido de un byte, guárdelo en BCD2 e intente para escribir el segmento del programa
SEGMENTO DE DATOS
BCD1 DB 37H, 38H
BCD2 DB
TERMINOS DE DATOS
SEGMENTO DE CÓDIGO
p>
ASUME DS: DATOS, CS: CÓDIGO
INICIO: MOV AX, DATOS
MOV DS, AX p>
MOV AL, BCD1 1
AND AL, 0FH
MOV BL, BCD1
MOV CL, 4
SHL BL, CL
O AL, BL
MOV BCD2, AL
CÓDIGO FINALIZA
FINAL INICIO
4.5 Escriba los segmentos de programa para cada uno de los siguientes cálculos, donde X, Y, Z, R y W son direcciones de símbolos unitarios que almacenan números sin signo de 16 bits:
SEGMENTO DE DATOS
X DW 3031H
Y DW 3032H
Z DW 3033H
R DW 3034H
W DW 3035H
LOS DATOS TERMINAN
SEGMENTO DE CÓDIGO
ASUME CS: CÓDIGO, DS: DATOS
INICIO: MOV AX, DATOS
MOV DS , AX
; 1) Zlt;---W (z-x)
MOV AX, Z
SUB AX, X
AÑADIR AX, W
MOV Z,AX
;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt ;gt;gt;gt;gt;gt;gt ;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;
;2)Zlt;---(W *X)/(Y 6), Rlt; ---resto
MOV AX, W
MUL X
MOV BX, Y
AÑADIR BX, 6
DIV BX
MOV Z, AX
MOV R, DX
;gt;gt; gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt; gt;gt;gt; gt; gt; gt; gt; gt; gt;
; )-(R-9)
MOV AX, R
SUB AX, 9
MOV BX, X
AÑADIR BX, 6
MOV CX, W p> p>
SUB CX, BX
SUB CX, AX
MOV Z, CX
;gt;gt;gt;gt;gt ;gt ;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt;gt ;gt ;gt;gt;gt;gt;gt;
;4)Zlt;---((W-X)/5×Y)×2, el resto se descarta
MOV AX, W
SUB AX, X
DIV 5
MOV AH, 00H
MUL Y
MUL 2
MOV Z, AX
MOV R, DX Si el resultado del cálculo es un byte doble, los 16 bits superiores se almacenarán en un bit de palabra detrás de Z; unidad de palabra.
DTATA ENDS
END START
5.1 ¿En qué partes funcionales se pueden dividir los programas ramificados? ¿Utiliza diagramas de flujo para representar los componentes funcionales de varios programas filiales? ¿Cómo se puede generar una condición de doble rama? ¿Cómo se forman las condiciones de múltiples ramas? ¿Cuáles son las diferencias en los métodos para determinar las condiciones en varios programas sectoriales? ¿Cuáles son las diferentes formas de implementar ramificaciones?
Los programas de rama se pueden dividir en: condiciones de generación, pruebas, orientación y etiquetas. Para ver el diagrama de flujo, consulte la Figura 5-4 en la página 119 del libro de texto. Utilice instrucciones que puedan afectar CF, ZF y OF para generar condiciones, como CMP, SUM, AND, TEST e instrucciones de desplazamiento. (El resto de las respuestas se omiten, están todas en el libro)
5.2 Intente analizar el siguiente segmento del programa y explique qué operaciones se completan. ¿Cuál es el contenido de la unidad de bytes HEXNUM antes y después de ejecutar el programa?
ASCNUM DB 41H
HEXNUM DB
MOV AH, ASCNUM
CMP AH, 39H
JBE SIGUIENTE
SUB AH, 7
SIGUIENTE: SUB AH, 30H
MOV HEXNUM, AX
HLT
Completado cuando el código ASCII del número hexadecimal representado por ASCNUM se convierte en un número hexadecimal y se almacena en los cuatro bits inferiores de la unidad de bytes ASCNUM, es una unidad vacía antes de la ejecución y 0A después de la ejecución.
5.3 Intente escribir las operaciones especificadas en el diagrama de flujo de la pregunta 5.3
P1: MOV AX, -1
JMP P4
P2: MOV AX, 0
JMP P4
P3: MOV AX, 1
JMP P4
CMP AX, -1
JLE P1
JL P2
JMP P3
p4: MOV AL, 00H
INT 21
5.4 Pruebe el carácter del código ASCII en la unidad variable de bytes ALPHA y realice las siguientes operaciones:
1) Si es un carácter numérico, envíelo a la unidad de bytes NUM y configure el flag FLAG a 0
2) Si es un carácter de letra mayúscula, envíalo a la unidad de bytes BIGCHR y establece el flag FLAG en 0
3) Si es minúscula carácter de letra, envíelo a la unidad de bytes SMLCHR, establezca el indicador FLAG en 0
Autor: 218.27.73.* 2005-9-3 09:21 Responder a esta declaración
------------ -------------------------------------- ------------ ------------------
5 respuestas a ejercicios extraescolares de programación en lenguaje ensamblador
4) De lo contrario, establezca el indicador BANDERA en 1
SEGMENTO DE DATOS
ALFA DB "A"
NUM DB
BIGCHR DB ?
SMLCHR DB
BANDERA DB
DATOS FINALES
SEGMENTO DE CÓDIGO
ASUMIR DS: DATOS, CS: CÓDIGO
INICIO: MOV AX, DATOS
MOV DS, AX
MOV AX, ALPHA
CMP AX, 30H
JBE N4
CMP AX, 39H
JA N1
MOV NUM, AX
JMP N5
N1: CMP AX , 41H
JB N4
CMP AX , 5A
JA N2
MOV BIGCHR, AX
JMP N5
N2: CMP AX, 61H
JB N4
CMP AX, 7a p>
JA N4
MOV SMLCHR, AX
JMP N5
N4: MOV BANDERA, 1
JMP N3
N5: BANDERA MOV, 0
p>
N3: MOV AX, 00H
INT 21
FIN DEL CÓDIGO p>
FINAL INICIO
5.5 se establece en la unidad variable. Hay tres números almacenados en A, B y C. Si ninguno de los tres números es 0, encuentre la suma de los tres números y guárdelo en D; si uno es 0, borre las otras dos unidades. Escriba esta secuencia de programa.
SEGMENTO DE DATOS
A DB 10
B DB 20
C DB 30
D DB /p>
LOS DATOS TERMINAN
SEGMENTO DE CÓDIGO
ASUME CS: CÓDIGO, DS: DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
CMP A, 0
JZ P1
CMP B, 0
JZ P1
CMP C, O
JZ P1
MOV AL, 0
AÑADIR AL, A
AÑADIR AL, B
AÑADIR AL, C
MOV D, AL
JMP P2
P1: MOV A, 0
MOV B, 0
MOV C, 0
P2: MOV AH, 0
INT 21H
EL CÓDIGO FINALIZA
END START
5.6 Supongamos que las unidades X y X+2 y las unidades Y e Y+2 almacenan datos con signo de dos palabras (X e Y son palabras de orden inferior). Explique qué operaciones realizan los siguientes segmentos del programa. Si el comando JBE L2
se cambia al comando JB L2, ¿cuál es la diferencia en los resultados de la operación? ¿Qué significan AX=1 y AX=2?
MOV DX, X+2
MOV AX, X
AÑADIR AX, > CMP DX, Y+2
JL L2
JG L1
CMP AX,Y
JBE L2
L1: MOV AX,1
JMP SALIR
L3: MOV AX, 2
SALIR: HLT
Cambiar la palabra doble de X El número de la celda se multiplica por 2 y se compara con el número en la celda de doble palabra de Y. Si X es menor o igual que Y, escriba 2 en AX; si X es mayor que Y, escriba 1 en AX.
Si el comando JBE L2 se cambia a JB L2, cuando X sea igual a Y, se escribirá 1 en AX. El resto es igual que el anterior.
5.7 Intente escribir un programa que requiera comparar tres números con signo de 16 bits en la matriz ARRAY. Según el resultado de la comparación, establezca el indicador BANDERA:
1) Si los tres números no son iguales, establezca BANDERA en cero.
2) Si dos de los tres números son iguales, BANDERA es 1.
3) Si los tres números son todos iguales, BANDERA es 2.
SEGMENTO DE DATOS
ARRAY DW 1000H, 2000H, 3000H
BANDERA DB
EXTREMOS DE DATOS
CÓDIGO SEGMENTO
ASUME CS: CÓDIGO, DS: DATOS
INICIO: MOV AX, DATOS
MOV DS, AX
MOV AX, ARRAY
MOV BX, ARRAY 2
MOV CX, ARRAY 4
MOV DL, 0
CMP AX, BX
JNZ N1
INC DL
N1: CMP BX, CX
JNZ N2
INC DL
CMP DL, 2
JZ N5
N2: CMP AX, CX
JNZ N3
INC DL
JMP N5
N3: CMP DL, 1
JNZ N4
JMP N5
N4: MOV DL, 0
JMP N6
N5: BANDERA MOV, DL
N6: MOV AH, 00H
INT 21H
CODE FINDS
END START
6.1 La parte del valor inicial de los parámetros del ciclo, la parte de trabajo del ciclo y la parte de control del ciclo. (No soy muy bueno haciendo este tipo de preguntas, así que puedes buscarlo en un libro).
6.2
1) Suma 10 números pares consecutivos comenzando desde 2 y almacenar la suma SUM. SUM=110
2) Envía los números 5, 6, 7, 8 y 9 de las últimas cinco unidades de DAT1 a las cinco unidades de DAT2 en secuencia. El contenido de DAT2 es 5, 6, 7, 8, 9
6.3
1)
LEA AX, BUF1
LEA BX , BUF2
MOV CX, N
LOP1: MOV AL, [AX]
MOV [BX], AL
INC AX
INC BX
BUCLE LOP1
2)
LEA SI, BUF1
LEA DI, BUF2
MOV CX, N
CLD
REP MOVSB
3)
LEA SI, BUF1
LEA DIBUF2
MOV CX, N
CLD
LP: LODSB
STOSB
BUCLE LP
6.
4
LEA BX, NÚMERO
LEA SI, MÁS
MOV CX, 256
LP: MOV AL, [BX]
INC BX
Y AL,AL
JNS L1
LOOP LP
JMP L2
L1: MOV [SI], AL
INC SI
LOOP LP
L2: HLT
6.5
SEGMENTO DE DATOS
GARDE DB a1, a2, a3,...a100
A90 DB 0
A80 DB 0
A70 DB 0
A60 DB 0
A0 DB 0
DATOS EDNS
SEGMENTO DE CÓDIGO
Autor: 218.27.73.* 2005-9-3 09:21 Responder a esta afirmación
------------------------ -------------------------------------------------- -----
Respuestas a 6 ejercicios extraescolares de programación en lenguaje ensamblador
ASUME CS:CODE, DS:DATA
INICIO: MOV AX, DATA
MOV DS, AX
MOV BX, AX
MOV CX, 100
LOP1: CMP [BX], 60 p >
JB P1
CMP [BX], 70
JB P2
CMP [BX], 80
JB P3
CMP [BX], 90
JB P4
JMP P5
B1: BX 1
BUCLE LOP1
P1: INC A0
JMP B1
P2: INC A60
JMP B1
P3 : INC A70
JMP B1
P4: INC A80
JMP B1
P5: INC A90
JMP B1
CÓDIGO ENNS
FIN INICIO
6.6
1) BANDERA MOV, FFH
LEA AX ,
DATOS1
LEA BX, DATOS2
MOV CX, N
P0: CMP [AX], [BX]
JNZ P1
INC AX
INC BX
BUCLE P0
JMP P2
P1: BANDERA MOV, 0 p>
p>
DATOS MOV1, AX
DATOS MOV2, BX
P2: HLT
2) ASUME CS: CÓDIGO, DS : DATA, ES: DATA ; Sea DATA la dirección del segmento de datos
MOV AX, DATA
MOV DS, AX
MOV ES, AX
p>LEA SI, DATOS1
LEA DI, DATOS2
MOV CX, N
CLD
REPE CMPSB p>
JNZ P1
BANDERA MOV, 0FFH
JMP P2
P1: BANDERA MOV, 0
DATOS MOV1, [SI]; Libro de referencia Hay dos oraciones DEC SI y DEC DI delante, no sé qué significan
MOV DATA2, [DI]
p2: HLT <. /p>
6.7 LEA AX, BUFFER1
AÑADIR AX, N
DEC AX
LEA BX, BUFFER2
MOV CX, N
LOP1: MOV DX, [AX]
MOV [BX], DX
DEC AX
INC BX
LOOP LOP17.1
La transferencia de datos entre el programa principal y el subprograma debe realizarse a través de medios intermedios, como registros en la CPU, pilas en la memoria o unidades de trabajo. Cada uno corresponde a un método de entrega.
Los datos de almacenamiento de registros son pequeños, pero la velocidad es rápida.
La pila es el último en entrar, el primero en salir, el seleccionado en entrar, el último en salir y hay un límite de cantidad. Se utiliza principalmente para protección in situ. Las unidades de almacenamiento tienen la máxima libertad.
7.2 Programa de retardo de tiempo, para esperar un periodo de tiempo.
7.3
Mueva los datos en las unidades continuas de 100 bytes que comienzan con DEST a las unidades continuas de 100 bytes que comienzan con SOURCE.
(CALL insertará CS e IP en la pila. ¿El moderador y CS también serán ingresados en la pila? ¿Es esto porque es una transferencia fuera de segmento?)
Las siguientes dos grandes preguntas pueden Aparece en el examen. La naturaleza es muy pequeña. Debido a limitaciones de tiempo, no lo haré por ahora
Capítulo 2 Ejercicios y respuestas después de la escuela (2003-7-2 16:38:00).
-- ----------------------------------------- --------- ----------------------------
2.1 (1) MOV CX , [BX][SI] p>
(2) AGREGAR AX, valor[BX]
(3)? CMP 0B6H, NUM
(4) PRUEBA [COUNT BP DI], 80H
(5) ROL AH, 4 o ROR AH, 4
(6) XOR [SI], [SI]
2.2 (1)---- C
(2)----A
(3)----B
(4) ----E
(5)----D
2.3 (1) AX=1200H
(2) AX=647AH
(3) (10050H )=7DH, (10051H)=0B7H
ZF=0, SF=1, CF=0, OF=0
(4) (12AD0H)=0F7H, CF=0 , OF=0
(5) (12BD0H)=31H, CH=31H
2.4 (1)MOV AX, CL; los bytes están mezclados.
(2)MOV CS, AX; área del programa de control CS, no se pueden colocar datos.
(3)INC BETA[BP]; Para el operando de memoria se debe especificar si es palabra o byte.
(4)MOV ES, 1850H; los datos inmediatos no se pueden enviar al registro de segmento.
(5)ADD BX, DS; para la instrucción ADD, el registro de segmento no puede ser SRC o DST
(6)AND AX, [CX];? >
Para la siguiente pregunta, no sé lo que quiere decir el autor de la pregunta y no puedo entenderlo. ¿Podrías publicar la respuesta? ¡Gracias!
2.7 puede usar MOV CX, BLOCK 10
Si ejecuta este programa en 2.10, definitivamente se escapará.
Autor: 218.27.73.* 2005-9-3 09:21 Responder a esta afirmación
----------------- ------------------------------------------------- - ------------
7 respuestas: Respuestas a ejercicios extraescolares de programación en lenguaje ensamblador
XIEXIE
TE AMO
p>