未来可期,青春正热 2024-04-13 09:45 采纳率: 93.5%
浏览 220
已结题

在proyeus中对8086仿真时一直出现报错的原因是什么?

img

img

img


这个程序编译的时候没有报错,到proteus仿真后一直提示未知的两字节操作码分解,实在是不知道什么原因

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-04-13 09:45
    关注

    引自免费微信小程序:皆我百晓生

    根据您提供的信息,您的问题是关于在Proteus中仿真8086汇编程序时遇到的问题。错误消息显示“Unknown 2-byte opcode at CDICD:CDCD (extra part is decomposed)! FF07”。这通常表示在汇编代码中有不被支持的双字节指令或者数据。

    首先,让我们检查一下汇编代码中的可能错误。从您提供的代码片段来看,所有的指令看起来都是正确的,但是有些地方可以优化。例如,您可以将一些重复的操作合并,简化代码。下面是经过优化的代码:

    ; DATA SEGMENT
    TIMES 80H DB 0 ; Reserve 128 bytes starting at 0x0800 for TIMEO and TIME1
    CONTROL EQU 86H
    DATA ENDS
    
    ; CODE SEGMENT
    ASSUME DS:DATA, CS:CODE
    
    START:
        MOV AX, DATA
        MOV DS, AX
    
        ; Set up time output
        MOV AL, 32H
        OUT CONTROL, AL
        MOV AX, 20000
        OUT TIMEO, AL
        MOV AL, AH
        OUT TIMEO, AL
    
        ; Set up control register
        MOV AL, 72H
        OUT CONTROL, AL
        MOV AX, 30000
        OUT TIME1, AL
        MOV AL, AH
        OUT TIME1, AL
    
        ; Main loop
    LOOP:
        NOP
        JMP LOOP ; Infinite loop
    
    CODE ENDS
    END START
    

    接下来,请按照以下步骤操作来解决这个问题:

    1. 确保您的Proteus版本与所使用的8086模型兼容。不同版本的Proteus可能会有兼容性问题。
    2. 检查是否正确地加载了8086处理器模型。在Proteus设计环境中,确保选择了正确的微处理器,通常是Intel 8086
    3. 在项目设置中,确认已选中合适的仿真器。对于8086,应该选择适合的8086仿真器,如EMU8086
    4. 如果以上步骤都正确,可能是由于Proteus的内部错误或者不支持某些特定的指令组合。尝试更新到最新版本的Proteus,或者联系Labcenter Electronics的技术支持寻求帮助。
    5. 另外,有时候代码格式问题也可能导致这种错误。确保您的代码是有效的汇编语言,并且没有多余的字符或缩进。

    如果问题仍然存在,建议您提供完整的项目文件,以便我可以更深入地分析和找出问题所在。同时,如果问题与硬件配置相关,也请提供电路原理图以供参考。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月21日
  • 已采纳回答 4月13日
  • 创建了问题 4月13日