微机实验报告二

更新时间:2023-10-09 08:58:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微机原理实验报告

实验二

班 级: 2012级信息工程(7)班 姓 名: 学 号:

序 号:

评阅分数:

微机实验二

一、实验目的

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 ②画流程图

开始 可变寄存器 将str1、str2的地址分别给SI、DI 判断str1地址里字 母看是否小写字母 不是

是 转换为大写字母 存入str2里的地址 循环字符串个数次 结束

代码: data segment org 2000h

str1 db 'Aedc123!*sdeDIO71$' count equ $-str1 org 3000h

str2 db count dup(?) data ends

STACK SEGMENT PARA STACK 'STACK' DB 100 DUP (?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START PROC FAR PUSH DS MOV AX,0 PUSH AX

MOV AX,DATA MOV DS,AX

LEA SI,str1 ;取str1首地址 LEA DI,str2 ;取str2首地址 MOV CX,count AA:

MOV AL,[SI]

CMP AL,61H ;判断是否为小写字母 JB next

CMP AL,7AH JA next

SUB AL,20H ;将小写字母转换为大写 MOV [DI], AL ;将非小写字母放入str2中 next:

MOV [DI], AL INC SI INC DI LOOP AA RET

START ENDP

CODE ENDS

END START

结果:

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 ②画流程图 开始

输入数据段和堆栈段 将数据逐一比较大小,求得最 大值与最小值

采用Loop循环将各个数值相加

DIV SUM CX

求得平均值

结束

代码:

data segment org 2000h

num db 12h,95h,0f1h,0c2h,82h,2h,10h,34h count equ $-num org 3000h

res1 db 3 dup(?) ;store unsigned org 4000h

res2 db 3 dup(?) ;store signed data ends

STACK SEGMENT PARA STACK 'STACK' DB 100 DUP (?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

本文来源:https://www.bwwdw.com/article/ql9f.html

Top