m0_71250704 2023-10-19 22:51 采纳率: 25%
浏览 12
已结题

微机原理汇编语言程序实践

  1. 试编写程序,给从主存40000H到4B3FH(总共是有三个F但是禁止输入同样的符号)的每个单元中均写入55H,并逐个单元读出比较。若写入的与读出的完全一致,则将 AL置 7EH;若有错,则将AL置81H。
  2. 试编写程序,统计由主存40000H开始的16K个单元中所存放的字符“A”的个数,并将结果存放在DX中。
    求具体的代码截图和运行结果截图,一定要有运行结果截图
  • 写回答

9条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-10-19 22:52
    关注

    引自免费微信小程序-皆我百晓生,希望对题主有所帮助,如有帮助,还望采纳。


    以下是汇编语言实现的代码:

    ORG 100H
    
    MOV AX, 4000H ; 设置起始地址
    MOV CX, 4B3FH-4000H ; 设置循环次数
    
    ; 初始化主存数据
    MOV DI, AX
    MOV AL, 55H
    MOV AH, 0
    
    LABEL_WRITE:
    MOV [DI], AL ; 写入55H
    INC DI ; 递增地址
    LOOP LABEL_WRITE ; 循环写入
    
    ; 比较主存数据
    MOV DI, AX
    MOV CX, 4B3FH-4000H ; 设置循环次数
    
    LABEL_COMPARE:
    CMP [DI], AL ; 与55H进行比较
    JNE WRONG ; 不一致跳转到WRONG标签
    INC DI ; 递增地址
    LOOP LABEL_COMPARE ; 循环比较
    
    ; 所有数据一致
    MOV AL, 7EH ; 将AL置为7EH
    JMP FINISH
    
    ; 数据不一致
    WRONG:
    MOV AL, 81H ; 将AL置为81H
    
    ; 结束
    FINISH:
    HLT
    
    END
    

    以下是统计字符"A"个数的代码:

    ORG 100H
    
    MOV AX, 4000H ; 设置起始地址
    MOV CX, 4000H+4000H ; 设置循环次数
    
    ; 统计字符个数
    MOV BX, 0 ; 用于记录个数的寄存器
    LABEL_COUNT:
    CMP BYTE PTR [AX], 'A' ; 与字符'A'进行比较
    JNE NOT_A ; 不是字符'A'跳转到NOT_A标签
    INC BX ; 个数加1
    NOT_A:
    INC AX ; 递增地址
    LOOP LABEL_COUNT ; 循环统计
    
    ; 结果存储在DX中
    MOV DX, BX
    
    HLT
    
    END
    

    希望能帮到你!

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月21日
  • 创建了问题 10月19日