微机原理实验报告实验 二 班级: 2024 级信息工程( 7 )班 XX:学号:序号:评阅分数:微机实验二一、实验目的1、熟悉 80X86 基本指令集。2、掌握汇编语言源程序的编写。3、掌握结构化程序设计三大结构的程序设计。4、掌握汇编程序的动态调试。二、开发环境未来汇编、debug三、实验题目1、编程将以‘$’结束的字符串中的小写字母改为大写字母。① 已知数据段的定义:data segment org 2000h str1 db ‘Aedc123!*sdeDIO71$’ count equ $-str1 org 3000h str2 db count dup(?) data ends② 画流程图开始 不是 是 代码:data segmentorg 2000h str1 db'Aedc123!*sdeDIO71$' count equ $-str1org 3000h str2 db count dup(?) data ends STACK SEGMENT PARA STACK 'STACK'DB 100 DUP (?) STACK ENDS CODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARPUSH DSMOV AX,0PUSH AXMOV AX,DATAMOV DS,AXLEA SI,str1;取str1首地址将 str1 、 str2 的地址分别给 SI 、 DI 可变寄存器转换为大写字母存入 str2 里的地址循环字符串个数次结束推断 str1 地址里字母看是否小写字母LEA DI,str2;取 str2 首地址MOV CX,count AA:MOV AL,[SI]CMP AL,61H ;推断是否为小写字母 nextCMP AL,7AH JA nextSUB AL,20H ;将小写字母转换为大写MOV [DI], AL ;将非小写字母放入str2中 next:MOV [DI], ALINC SIINC DILOOP AA RETSTART ENDP CODE ENDSENDSTART结果:1.2.③debug 调试:修改 str1 字符串的值,运行看结果。结果:1.2.问题:1.未注意到LOOP循环的结束条件是CX为0,故设计时应该用MOVE CX, COUNT这样的语句,执行一次自减一,直到CX为0不执行循环。2.Loop 循环中出现问题,应该把INC SI 和INC DI放在循环中比较语句后3.比较后直接写的next语句,忘记还要执行一个MOV [DI], AL,从而导致输出一直为0.2、有一个字节型数组,求最大值、最小值和平均值:1)作为无符号数,2)作为带符号。① 已知数据段的定义:data segment org 2000h num db 12h,95h,0f1h,0c2h,82h,2h,10h,34h count db $-num org 3000h res1 db 3 dup(?) ;store unsigned org 4000h res2 db 3 dup(?) ;store signed data ends② 画流程图开始代码:data segmentorg 2000h num db 12h,95h,0f1h,0c2h,82h,2h,10h,34h count equ $-numorg 3...