【问题标题】:trouble adding arrays 8086添加数组时遇到问题 8086
【发布时间】:2020-06-02 15:57:58
【问题描述】:
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

【问题讨论】:

    标签: assembly emu8086


    【解决方案1】:

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

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

        INC SI
        INC DI
        DEC CL
        JNZ Z
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-03
      • 2021-07-08
      • 2015-07-02
      • 2020-07-08
      相关资源
      最近更新 更多