添加阵列 8086 时出现问题


start :
mov ax, @data
mov ds, ax 
MOV BL, 00H 
MOV DL, 00H
LEA SI, ARX
LEA DI, ARY
PRINTF MSG1
X:  
MOV CL,05
mov ah, 01h
int 21h
MOV BL,AL
INC BL
DEC CL
JZ Y
JNZ X
Y:  
MOV CL,05
mov ah, 01h
int 21h
MOV DL,AL
INC DL
DEC CL
JZ A
JNZ Y
A:  MOV ARX,BL
MOV ARY,DL
JMP Z       
Z:  PRINTF MSG3
MOV CL,05H
MOV AL,[SI]
ADD AL,[DI]
ADD AL,48H
mov dl,al
mov ah,02h
int 21h
DEC CL
INC SI
INC DI
JZ EXIT
JNZ Z   
EXIT:   mov ah, 4ch
int 21h
end start

我无法结束循环,还有其他问题,有人可以帮助我纠正这些错误。不太复杂的答案仍然在大学里,所以请帮忙。我使用计数器(05(停止循环,但无论如何都没有停止。

问题:为 8086 微处理器编写一个汇编级程序,以读取两个单独的数组,每个数组 10 个字节,并显示一个 sum 数组,该数组给出了相应元素的总和。示例如下:

输入数组 1:

01

02

03

04

输入数组 2:

01

02

03

04

总和数组为:

02

04

06

08

您依赖于在递减循环计数器后正确设置的标志,但您执行了一些指令,这些指令将在递减和检查标志之间更改标志。

具体来说,dec cl指令应该在第三个循环结束时的jnz之前:

INC SI
INC DI
DEC CL
JNZ Z

您可以删除其他一些条件检查,因为可以消除跳过JNZJZ。你可以为你的标签使用一些更好的名称。

最新更新