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个字节,并显示一个求和数组,该数组给出相应元素的总和。下面给出示例:
输入数组1:
01
02
03
04
输入数组2:
01
02
03
04
求和数组为:
02
04
06
08
答案 0 :(得分:1)
递减循环计数器后,您依靠的是正确设置的标志,但是您执行了一些指令,这些指令将在递减和检查标志之间更改标志。
具体来说,dec cl
指令应该在第三个循环结束时恰好在jnz
之前:
INC SI
INC DI
DEC CL
JNZ Z
您可以删除其他一些条件检查,因为可以取消跳过JZ
的{{1}}。您可以为标签使用更好的名称。