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
您可以删除其他一些条件检查,因为可以消除跳过JNZ
JZ
。你可以为你的标签使用一些更好的名称。