El lenguaje ensamblador se da cuenta de la adición de elementos de matriz

Implementación de un código

DATA SEGMENT
ARRAY1  DB  2,5,0,3,-4,5,0,0AH,0FH
ARRAY2  DB  3,5,4,-2,0,8,3,-0AH,20H
COUNT   DB   $-ARRAY2
LEN      DB    ?
SUM      DB     20H  DUP(0)
DATA   ENDS
STACK1 SEGMENT PARA STACK 'STACK'
          DW   20H   DUP(0)
STACK1  ENDS
CODE   SEGMENT
       ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA;把数据段传给AX
       MOV DS,AX;AX进堆栈
MOV BX,-1;初始化BX为-1,是数组从第一个元素开始处理
MOV CX,0;清零CX
MOV CL,COUNT  ;把数组的长度传给CL
NOZERO: INC BX;增量指令,是BX加一处理下一个数组元素
         MOV  AL,ARRAY1[BX];把数组1的元素传给AL
         ADD  AL, ARRAY2[BX];令数组2与数组1对于的元素相加
         MOV   SUM [BX],AL;把相加的结果传给SUN[BX]
         LOOPNE  NOZERO;循环执行,直到处理完数组的所有元素
         JE   ENDO;循环结束,调到ENDO语句
INC  BL;增量指令
ENDO:  MOV LEN,BL;把BL统计的相加后的数组长度传给LEN
       MOV AH,4CH;返回DOS
       INT 21H;停机
CODE   ENDS
 END  START

Verifique el primer ciclo.
Inserte la descripción de la imagen aquí
Puede ver que 001C es la sentencia de juicio de inicio
Inserte la descripción de la imagen aquí
para el siguiente ciclo. Ingrese g = 0000 001C para verificar el primer ciclo, AL = 05, que es el resultado de agregar el primer elemento de las dos matrices, correcto.
Inserte la descripción de la imagen aquí
Se puede inferir que la dirección lógica de la matriz 1, 2 es 0000 y la matriz agregada es 0010, y el resultado es 05, 0A, 04, 01, FC, 0D, 03, 00 respectivamente. Cuando ZF = 1, el ciclo termina.

2.
Comando Debug U
Inserte la descripción de la imagen aquí
Puede ver la dirección de cada instrucción para las siguientes operaciones de depuración

Verifique el primer ciclo del comando G.
Inserte la descripción de la imagen aquí
Ingrese g = 0000 001C para verificar el primer ciclo, AL = 05, que es el resultado de agregar el primer elemento de las dos matrices, correcto.

El primer ciclo del comando R, el ciclo no ha terminado. En este momento, la bandera ZF es NE, es decir, ZF = 0, y el ciclo continúa.
Inserte la descripción de la imagen aquí
Cuando finaliza el ciclo, la bandera ZF es ZR, es decir, ZF = 1, que cumple con las características de LOOPNE y es correcta.
Inserte la descripción de la imagen aquí
El comando D
Inserte la descripción de la imagen aquí
puede inferir que la dirección lógica de la matriz 1, 2 es 0000 y la matriz agregada es 0010, y el resultado es 05, 0A, 04, 01, FC, 0D, 03, 00 respectivamente. El libro decimal correspondiente es 5,10,4,1, -4,13,3,0. Cuando ZF = 1, el ciclo termina. El resultado es el mismo que la realidad y el resultado es correcto.

Supongo que te gusta

Origin blog.csdn.net/weixin_43789635/article/details/112981782
Recomendado
Clasificación