微原软件实验报告

合集下载

微机原理实验报告清零程序

微机原理实验报告清零程序

竭诚为您提供优质文档/双击可除微机原理实验报告清零程序篇一:微机原理实验报告微机原理与应用课程实验报告实验分工:报告人同组人实验时间:20XX.12.10课程设计一、题目要求(1)在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据;(2)将上述源区内容传送到目的内存区2(首址为1100h)中;(3)检验上述传送过程是否正确,如有错误,在紧跟内存区2后的第一个字节开始写入AscII码“eRRoR”,否则写入“oK”。

(4)用冒泡法将上述内存区2的数据,按从小到大的次序重新排列,排列后存放在内存区3(开始地址为2100h)。

(5)将上述内存区2和内存区3的第100个数据分别乘以2,并转为bcD码,保存在各自存储区的末尾。

再将上述两个bcD码相乘,其结果保存在内存区1的末尾处。

二、实验程序框图三、程序代码codesegmentassumecs:codeDATA1db16dup(?)DATA2dbeRRoRDATA3dboK;在数据段首址为0100h开始的内存区1按从大到小的顺序顺次存入二进制数15~0共16个字节的数据start:movax,0100h;规定目标程序存放单元的偏移量movds,ax;数据段地址moves,axmovsi,offsetDATA1;偏移地址movcx,0010h;循环次数movbx,0100hmoval,ofhs1:movcs:[si],almov[bx],cs:[si]incsiincbxdecalloops1nop;将内存区1数据搬移到内存区2中movcx,16movsi,0100hmovbx,1100hs2:moval,[si]mov[bx],alincbxloops2nop;对比内存区1的数据与内存区2的数据是否相同mov cx,16movsi,0100hmovbx,1100hcomp:movax,[si]movdx,[bx]cmpax,dxjneerroincsiincbxloopcomp;数据如果都相同,说明上述传输过程正确movsi,offsetDATA3movdi,1110hmovbl,0movcx,2enteroK:movbl,cs:[si]mov[di],blincsiincdiloopenteroKnopjmps3;如果有一个数据不相同,说明上述传输过程不正确err:movsi,offsetDATA2movdi,1110hmovbl,0movcx,5entereRR:movbl,cs:[si]mov[di],blincdiloopentereRR;将内存区2数据搬移到内存区3中s3:movsi,1100hmovcx,0010hmovbx,2100hmoval,0movcx,16fil:moval,[si]mov[bx],alincsiincbxloopfilnop;用冒泡法将内存区3的数据按从小到大重新排列s4: movbl,0movcx,16movsi,2110hdecsideccxagain:moval,[si]cmpal,[si-1]jaenextxchgal,[si-1]mov[si],almovbl,1next:decsiloopagaincmpbl,0jnestart1nopmovsi,1109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[1112h],almovsi,2109hmoval,[si]movcl,2mulcl;结果在al中movdx,0movbx,10divbxshlal,4addal,dl;把二进制数转换成bcD码mov[2110h],al;两个bcD码相乘,其结果保存在内存区1的末尾处。

微原短实验报告

微原短实验报告

一、实验目的本次实验旨在通过简单的物理实验,让幼儿了解和体验科学探究的乐趣,培养幼儿的观察能力和动手操作能力,同时激发幼儿对科学的兴趣。

二、实验仪器1. 玻璃杯一个2. 水3. 纸条一张4. 气球一个5. 吸管一支三、实验步骤1. 将玻璃杯中倒入适量的水,大约到杯子的1/3处。

2. 将纸条平铺在桌面上,用吸管将气球吹大,用气球将纸条顶起。

3. 将吹大的气球放入玻璃杯中,让气球在水中浮起来。

4. 观察气球在水中的状态,记录实验现象。

5. 将气球中的空气排空,让气球变小,再次将气球放入水中。

6. 观察气球在水中的状态,记录实验现象。

四、实验结论1. 气球在水中的浮力与气球内气体的体积有关。

当气球内气体体积较大时,气球在水中浮力较大;当气球内气体体积较小时,气球在水中浮力较小。

2. 气球在水中的浮力与水的密度有关。

水的密度越大,气球在水中浮力越大。

3. 气球在水中的浮力与重力有关。

当气球在水中的浮力大于重力时,气球会浮在水面上;当气球在水中的浮力小于重力时,气球会沉入水底。

五、反思体会1. 通过本次实验,幼儿了解了浮力的概念,认识到浮力与物体体积、水的密度和重力有关。

2. 实验过程中,幼儿积极参与,观察仔细,动手操作能力强,表现出对科学的浓厚兴趣。

3. 教师在实验过程中应注重引导幼儿观察、思考,让幼儿在实验中体验科学的乐趣,培养幼儿的探究精神。

4. 本次实验操作简单,易于理解,适合幼儿年龄段的特点,有助于提高幼儿的科学素养。

5. 在今后的教学活动中,教师可以结合幼儿的兴趣和认知水平,设计更多有趣、富有启发性的科学实验,让幼儿在快乐中学习,在学习中成长。

微原实验报告7

微原实验报告7

微原实验报告7实验目的本实验旨在通过微原实验,了解细胞的原核和真核结构,探索细胞的功能和相互关系。

实验材料和方法实验所需材料如下:- 显微镜- 细胞标本镜片- 水溶性染色剂- 盖玻片- 显微刀实验步骤如下:1. 取一个细胞标本镜片,加入适量的水溶性染色剂,使细胞组织显色。

2. 用盖玻片将标本和染色剂封装,避免氧化。

3. 将封装好的标本放置于显微镜下,调节合适的放大倍数。

4. 使用显微刀切取细胞标本的一小块,移至显微镜下进行观察。

5. 观察细胞的结构和特点,并记录相关数据。

实验结果与分析通过显微镜观察,我们发现细胞可以分为原核细胞和真核细胞两种类型。

原核细胞是原生生物的一种,没有细胞核和细胞器。

其细胞结构简单,一般只有细胞膜、细胞质和核糖体。

真核细胞则包含有明确的细胞核和多种细胞器,这些细胞器负责不同的功能。

在观察细胞结构时,我们发现原核细胞的细胞膜相对简单,没有明显的细胞壁。

细胞质内存在核糖体,这是细胞合成蛋白质的地方。

而真核细胞的细胞膜更为复杂,通常由两层脂质组成,其中包裹着细胞质。

细胞质内部可以观察到细胞器,如线粒体、高尔基体、内质网等。

细胞核则包含着遗传物质DNA,负责细胞的遗传信息存储和传递。

通过本实验,我们进一步认识到了细胞的结构和功能之间的相互关系。

细胞结构的复杂性直接关系着细胞的功能。

例如,线粒体是细胞中能量的产生器,通过细胞呼吸产生的能量,为细胞的各种功能提供动力。

内质网则参与蛋白质的合成和物质运输等功能。

实验总结本实验通过显微镜观察细胞结构,分析了原核细胞和真核细胞的特点和功能。

通过这次实验,我们深入理解了细胞的组成和功能之间的关系。

细胞是生物体的基本组织单位,是生命存在和功能发挥的基础。

了解细胞结构与功能对于理解生物学和医学等学科具有重要的意义。

通过不断的实验探索和研究,我们可以进一步探索细胞内部的奥秘,并为科学研究和应用提供支持和依据。

微程序实验报告

微程序实验报告

微程序实验报告微程序实验报告概述:微程序是一种指令执行的方式,它将指令集的操作分解为一系列微操作,通过微指令控制器逐步执行。

本次实验旨在通过设计和实现一个简单的微程序,深入理解微程序的工作原理和应用。

实验目的:1. 理解微程序的基本概念和原理;2. 学习如何设计和实现一个简单的微程序;3. 掌握微程序在指令执行过程中的作用和优势。

实验过程:1. 确定微指令集的操作和控制信号:根据实验要求,我们选择了一些常见的指令,如加法、减法、乘法等,并为每个指令定义了相应的微操作和控制信号。

2. 设计微指令控制器:根据微指令集的操作和控制信号,我们设计了一个简单的微指令控制器,用于逐步执行指令。

控制器包括状态寄存器、微指令存储器和控制逻辑电路等组件。

3. 实现微程序:根据设计的微指令控制器,我们编写了相应的微程序。

微程序是一系列微操作的有序序列,通过控制信号的变化逐步执行指令。

4. 运行实验样例:我们选择了几个实验样例,分别测试了加法、减法和乘法指令的执行过程。

通过观察指令执行的结果,验证了微程序的正确性和有效性。

实验结果:通过实验,我们成功设计和实现了一个简单的微程序,并验证了其在指令执行过程中的作用和优势。

微程序能够将复杂的指令集操作分解为一系列微操作,使得指令的执行过程更加灵活和高效。

结论:微程序是一种重要的指令执行方式,通过将指令集的操作分解为微操作,能够提高指令执行的效率和灵活性。

本次实验使我深入理解了微程序的工作原理和应用,掌握了微程序的设计和实现方法,为进一步研究和应用微程序打下了良好的基础。

展望:微程序作为一种重要的指令执行方式,在计算机体系结构和指令集设计中有着广泛的应用前景。

未来,我将进一步研究微程序的优化方法和应用场景,探索微程序在提高计算机性能和节约能源方面的潜力。

同时,我也期待能够参与更多的微程序设计和实现项目,不断提升自己在计算机体系结构领域的研究能力和创新能力。

总结:通过本次实验,我深入了解了微程序的工作原理和应用,掌握了微程序的设计和实现方法。

北邮微机原理与接口技术硬件实验报告

北邮微机原理与接口技术硬件实验报告

微原硬件实验报告班级:07118 班学号:070547班内序号:26姓名:杨帆实验一熟悉实验环境及IO的使用一,实验目的1. 通过实验了解和熟悉实验台的结构,功能及使用方法。

2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。

3. 学会Debug 的使用及编写汇编程序二,实验内容1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作,2.用汇编语言编写跑马灯程序。

(使用EDIT 编辑工具)实现功能A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。

B.通过输出端口控制灯的工作状态(低电平灯亮)三,实验步骤1.实验板的IO 端口地址为EEE0H在Debug 下,I 是读命令。

(即读输入端口的状态---拨码开关的状态)O 是写命令。

(即向端口输出数据---通过发光管来查看)进入Debug 后,读端口拨动实验台上八位拨码开关输入I 端口地址回车屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口输入O 端口地址xx (xx 表示要向端口输出的内容)回车查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。

2. 在Debug 环境下,用a 命令录入程序,用g 命令运行C>Debug -amov dx, 端口地址mov al,输出内容out dx, almov ah, 0bhint 21hor al, aljz 0100int 20h-g运行查看结果,修改输出内容再运行查看结果分析mov ah, 0bhint 21hor al, aljz 0100int 20h该段程序的作用3.利用EDIT 工具编写汇编写跑马灯程序程序实现功能A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。

B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm录入程序按Alt 键打开菜单进行存盘或退出编译文件C>MASM 文件名.asm连接文件C>LINK 文件名.obj运行文件或用Debug 进行调试。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验⼀DEBUG 调试实验类型:实验课时:指导教师:时间:2013 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.练习使⽤DEBUG,调试简单汇编程序。

⼆、实验要求1.掌握DEBUG的使⽤,调试程序。

2.读懂程序中各条指令,说明程序功能。

三、实验内容1.启动DEBUG,⽤A命令输⼊并汇编下列程序段。

100 MOV SI,200103 MOV CX,10106 MOV AL,0108 MOV [SI ],AL10A INC SI10B INC AL10D DEC CX10E JNZ 108110 INT 3四、实验结果及分析实验⼆简单汇编语⾔设计实验类型:实验课时:指导教师:时间: 2012 年⽉⽇课次:第节教学周次:第周实验分室:实验台号:实验员:⼀、实验⽬的1.巩固DEBUG及宏汇编的使⽤。

2.加深对指令的理解。

⼆、实验要求1.设堆栈指针SP=2000H,(AX)=3000H,(BX)=5000H。

请编⼀程序将AX的内容和BX的内容进⾏交换。

请⽤堆栈作为两寄存器交换内容的中间存储单元,⽤DEBUG调试程序进⾏汇编与调试。

2.设DS=当前段指地址,(BX)=0300H,(SI)=0002H,请⽤DEBUG的命令将存储器偏移地址300H~304H连续单元顺序装⼊0AH、0BH、0CH、0DH、0EH。

在DEBUG状态下送⼊下⾯程序,并⽤单步执⾏的⽅法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?程序清单如下:MOV AX,BXMOV AX,0304HMOV AX,[0304H]MOV AX,[BX]MOV AX,0001[BX]MOV AX,[BX][SI]MOV AX,0001[BX][SI]HLT3.设(AX)=0002H,编⼀个程序段将AX的内容乘10,要求⽤移位的⽅法完成。

三、思想描述实验内容1将两个寄存器的内容进⾏交换时,必须有⼀个中间寄存器才能进⾏内容的交换,如果⽤堆栈做为中间存储单元,必须遵循先进后出的原则。

微程序控制实验报告(共10篇)

微程序控制实验报告(共10篇)

微程序控制实验报告(共10篇)微程序控制器实验报告计算机组成原理实验报告一、实验目的:(1)掌握微程序控制器的组成原理。

(2)掌握微程序的编制、写入,观察微程序的运行过程。

二、实验设备:PC 机一台,TD-CMA 实验系统一套。

三、实验原理:微程序控制器的基本任务是完成当前指令的翻译和执行,即将当前指令的功能转换成可以控制的硬件逻辑部件工作的微命令序列,完成数据传送和各种处理操作。

它的执行方法就是将控制各部件动作的微命令的集合进行编码,即将微命令的集合仿照机器指令一样,用数字代码的形式表示,这种表示称为微指令。

这样就可以用一个微指令序列表示一条机器指令,这种微指令序列称为微程序。

微程序存储在一种专用的存储器中,称为控制存储器,微程序控制器原理框图如图所示:微程序控制器组成原理框图在实验平台中设有一组编程控制开关KK3、KK4、KK5(位于时序与操作台单元),可实现对存储器(包括存储器和控制存储器)的三种操作:编程、校验、运行。

考虑到对于存储器(包括存储器和控制存储器)的操作大多集中在一个地址连续的存储空间中,实验平台提供了便利的手动操作方式。

以向00H 单元中写入332211 为例,对于控制存储器进行编辑的具体操作步骤如下:首先将KK1 拨至‘停止’档、KK3 拨至‘编程’档、KK4 拨至‘控存’档、KK5 拨至‘置数’档,由CON 单元的SD05——SD00 开关给出需要编辑的控存单元首地址(000000),IN 单元开关给出该控存单元数据的低8 位(00010001),连续两次按动时序与操作台单元的开关ST(第一次按动后MC 单元低8 位显示该单元以前存储的数据,第二次按动后显示当前改动的数据),此时MC 单元的指示灯MA5——MA0 显示当前地址(000000),M7——M0 显示当前数据(00010001)。

然后将KK5 拨至‘加1’档,IN 单元开关给出该控存单元数据的中8 位(00100010),连续两次按动开关ST,完成对该控存单元中8 位数据的修改,此时MC 单元的指示灯MA5——MA0 显示当前地址(000000),M15——M8 显示当前数据(00100010);再由IN 单元开关给出该控存单元数据的高8 位(00110011),连续两次按动开关ST,完成对该控存单元高8 位数据的修改此时MC 单元的指示灯MA5——MA0 显示当前地址(000000),M23——M16 显示当前数据(00110011)。

微机原理与单片机实验报告

微机原理与单片机实验报告

微机原理与单片机实验报告Prepared on 22 November 2020北京联合大学信息学院实验报告课程名称:微型计算机原理学号:姓名:2012 年 6 月 9 日目录实验1 EMU8086模拟器的使用一实验要求利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的:熟悉EMU8086实验环境三 EMU8086环境:1 模拟器编辑窗口2 模拟器调试窗口四实验内容实验内容1:新建文件。

运行 emu80861. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码:MOV AX, 1020HMOV BX, 2030HMOV AX, BXADD AX, BXMOV [BX], AXMOV [2032H], AXHLT2. 编译:单击“编译”按钮,对程序段进行编译;3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。

4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。

5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。

6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。

7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为 400毫秒,单击“全速”按钮,运行程序,8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序的关联。

10.将“存储器”中地址改为1000:0100,并将从其开始的连续10个单元的内容改为55H。

实验内容2:运行范例在模拟器编辑窗口中1.点击典型范例2.选择:hellow,word程序,编译,运行,观察结果。

微原实验

微原实验

实验一汇编语言程序的建立、调试和运行一、实验目的1、学习debug状态下,汇编语言程序的编程和运行方法2、掌握汇编语言程序的建立和运行3、掌握debug状态下调试和运行汇编语言程序的方法二、实验原理debug是调试汇编语言程序的工具,它不仅能跟踪程序的运行,还可显示修改内存与寄存器内容,以便在调试程序中检查程序,找错,改错;它还支持小汇编,直接对小段程序进行汇编;也可对盘进行读写操作。

但debug不宜汇编较长的程序,不便于分块程序的设计,不能使用绝大多数ASM和MASM提供的伪指令。

debug命令以单个字母的命令符开头,然后是命令操作参数,操作参数与操作参数之间,用空格或逗号分开,操作参数与命令符之间用空格隔开,命令的结束符是回车键↙。

命令及参数的输入可以是大小写的结合,CtrL +break键中止命令的执行。

debug 下所用的数均为十六进制数,且不必写H。

三、预习要求1、用debug汇编语言程序建立过程和调试方法2、写出预习报告debug的常用命令有:1.汇编命令A格式:(1) A<段寄存器名>:<位移>(2) A<段地址>:<位移>(3) A<位移>(4) A功能:键入该命令后显示段地址和位移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,直到显示下一地址时用户直接键入回车键返回到提示符“—”。

其中(1)用指定寄存器内容作段地址,(3)用CS内容作段地址,(4)用CS:0100作地址。

以后其它命令中提及的各种“地址”形式,均为(1)、(2)、(3)中A后的地址形式。

2.反汇编命令U格式1:U <地址>格式2:U <地址范围> 功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。

注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。

地址及范围的缺省值是上次U指令后下一地址的值。

这样可以连续反汇编。

微机原理软件实验报告

微机原理软件实验报告

实验名称:汇编语言程序设计实验日期:2023年3月10日实验地点:计算机实验室实验者:张三一、实验目的1. 熟悉汇编语言的基本语法和指令系统。

2. 掌握汇编语言程序设计的基本方法。

3. 通过实验,加深对微机原理的理解。

二、实验内容本次实验主要涉及以下内容:1. 数据传送指令的应用2. 算术运算指令的应用3. 控制转移指令的应用4. 子程序设计三、实验步骤1. 编写一个简单的程序,实现以下功能:(1)将数据0x1234存入寄存器AX;(2)将数据0x5678存入寄存器BX;(3)计算AX和BX的乘积,并将结果存入寄存器DX;(4)将乘积的高16位和低16位分别存入寄存器CX和AX。

2. 编写一个程序,实现以下功能:(1)将数据0x1A2B3C4D存入内存单元[0x1000];(2)从内存单元[0x1000]开始,读取连续4个字节的数据;3. 编写一个程序,实现以下功能:(1)定义一个子程序,实现两个整数的加法运算;(2)在主程序中调用该子程序,实现两个整数的加法运算。

四、实验结果与分析1. 数据传送指令的应用(1)将数据0x1234存入寄存器AX;MOV AX, 0x1234(2)将数据0x5678存入寄存器BX;MOV BX, 0x5678(3)计算AX和BX的乘积,并将结果存入寄存器DX;MUL BX(4)将乘积的高16位和低16位分别存入寄存器CX和AX; MOV CX, DXMOV AX, DX2. 算术运算指令的应用(1)将数据0x1A2B3C4D存入内存单元[0x1000];MOV [0x1000], 0x1A2B3C4D(2)从内存单元[0x1000]开始,读取连续4个字节的数据; MOV AX, [0x1000]MOV BX, [0x1000+2]MOV CX, [0x1000+4]MOV DX, [0x1000+6]MOV AH, 0x0EINT 0x103. 控制转移指令的应用(1)定义一个子程序,实现两个整数的加法运算;ADD procedure:ADD AX, BXRET(2)在主程序中调用该子程序,实现两个整数的加法运算;MOV AX, 0x1MOV BX, 0x2CALL ADDMOV CX, AX五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。

微机原理软件实验报告

微机原理软件实验报告

信息与通信工程学院微机原理软件实验报告班级:姓名:学号:日期:2011年12月实验一DEBUG的使用 (1)一、实验目的 (1)二、实验内容 (1)三、预习思考 (3)四、实验过程 (4)五、实验总结 (9)实验二分支、循环程序设计 (10)一、实验目的 (10)二、实验内容 (10)三、预习思考 (10)四、实验过程 (10)(一)、流程图 (11)(二)、源代码 (11)(三)、实验分析 (11)五、实验总结 (14)实验三代码转换程序设计 (15)一、实验目的 (15)二、实验内容 (15)三、预习思考 (15)四、实验过程 (16)(一)流程图 (16)(二)模块层次图 (16)(三)源代码 (17)(四)实验分析 (21)五、实验总结 (22)实验四子程序设计 (23)一、实验目的 (23)二、实验内容 (23)三、预习思考 (23)四、实验过程 (24)(一)流程图 (24)(二)模块层次图 (25)(三)源代码 (25)(四)实验分析 (34)五、实验总结 (35)实验五中断程序设计 (37)一、实验目的 (37)二、实验内容 (37)三、预习思考 (37)四、实验过程 (38)(一)流程图 (38)(二)源代码 (39)(三)实验分析 (45)五、实验总结 (46)实验一 DEBUG 的使用一、实验目的1.掌握汇编程序的编辑、编译、连接和执行的全过程;2.学习和掌握用DEBUG调试程序的方法。

二、实验内容1.用编辑软件,输入以下汇编语言源程序:DAT SEGMENTA DB 20B DB 15Y DB 3 DUP(0)Z DB 0,0DAT ENDSSTA SEGMENT STACKDW 50 DUP(?)STA ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTAR PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATMOV DS,AXMOV AX,STAMOV SS,AXMOV AL,AMOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,BMOV Z,ALMOV Z+1,ALCALL SUB1MOV AL,AMOV Z,ALMOV AL,BMOV Z+1,ALCALL SUB1ADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSTAR ENDPSUB1 PROCMOV AL,ZMOV AH,Z+1MUL AHADD WORD PTR Y,AXADC BYTE PTR[Y+2],0RETSUB1 ENDPCOD ENDSEND STAR2.通过编译,连接形成可执行文件。

微程序实验报告

微程序实验报告

一、实验目的1. 理解微程序设计的基本原理和方法。

2. 掌握微程序控制器的设计方法。

3. 提高对计算机组成原理和汇编语言的理解。

二、实验环境1. 操作系统:Windows 102. 开发工具:Keil uVision53. 实验平台:STM32F103C8T6三、实验内容1. 微程序控制器的设计2. 微程序指令集的设计3. 微程序的编译与仿真四、实验步骤1. 微程序控制器的设计(1)确定微程序控制器的基本结构,包括控制单元、指令寄存器、地址计数器、微指令寄存器等。

(2)设计控制单元,实现微指令译码和操作控制功能。

(3)编写微指令序列,实现所需的功能。

2. 微程序指令集的设计(1)根据实验需求,设计微程序指令集,包括指令格式、操作码和操作数。

(2)编写微指令编码表,实现指令集的编码。

3. 微程序的编译与仿真(1)编写微程序代码,实现微程序的功能。

(2)将微程序代码编译成机器代码。

(3)在仿真软件中加载编译后的机器代码,进行仿真实验。

五、实验结果与分析1. 微程序控制器设计结果根据实验需求,设计了一个具有8级微程序的控制器。

控制器包括控制单元、指令寄存器、地址计数器、微指令寄存器等模块。

控制单元根据微指令译码和操作控制信号,实现对微程序的操作。

2. 微程序指令集设计结果根据实验需求,设计了以下微程序指令集:- 立即数加载指令:将立即数加载到指定寄存器。

- 寄存器加载指令:将寄存器内容加载到指定寄存器。

- 立即数存储指令:将立即数存储到指定内存地址。

- 寄存器存储指令:将寄存器内容存储到指定内存地址。

- 立即数加法指令:将立即数与寄存器内容相加,结果存储到寄存器。

- 寄存器加法指令:将寄存器内容与另一个寄存器内容相加,结果存储到寄存器。

- 立即数减法指令:将立即数与寄存器内容相减,结果存储到寄存器。

- 寄存器减法指令:将寄存器内容与另一个寄存器内容相减,结果存储到寄存器。

3. 微程序编译与仿真结果在仿真软件中加载编译后的机器代码,进行仿真实验。

微机原理软件实验

微机原理软件实验

微机原理实验报告专业:工业工程姓名:刘雷学号:089094082指导老师:陈全目录软件实验一汇编语言程序的调试与运行 (3)一.实验目的 (3)二.实验内容 (3)三.程序框图 (3)四.程序清单 (4)五.调试步骤 (6)六.思考题 (6)软件实验二分支程序设计 (14)一.实验目的 (14)二.实验内容与要求 (14)三.程序框图 (15)四.程序清单: (16)五.思考题 (17)软件实验三循环程序设计 (18)一.实验目的 (18)二.实验内容与要求 (18)三.程序框图 (19)四.程序清单(将程序补充完整) (20)软件实验四子程序结构 (22)一.实验目的 (22)二.实验内容与要求 (22)三.程序框图: (23)四.部分程序清单 (23)五.步骤 (25)六.思考题 (25)软件实验一汇编语言程序的调试与运行一.实验目的1.学习数据传送和算术运算指令的用法2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。

二.实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在DATA1和DA TA2为首的5个内存单元中,结果送回DATA1处。

三.程序框图图1.1 两个多位十进制相加程序流程图四.程序清单DISP MACRO XMOV DL,X ;要显示的字符送DL寄存器MOV AH,02H ;DOS功能调用号是02HINT 21H ;21H中断程序是DOS功能调用ENDMDATA SEGMENTDATA1 DB '12732'DATA2 DB '06815'N EQU $-DA TA2DATA ENDSSTACK SEGMENT STACKSTA DB 20 DUP (?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DA TA START:MOV AX,DA TAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXLEA SI,DATA1 ;☆MOV BX,0MOV CX,NCALL DISPL ;显示被加数DISP '+'LEA SI,DATA2MOV BX,0MOV CX,NCALL DISPL ;显示加数DISP '='LEA DI,DA TA1MOV CX,NCALL ADDA ;调用加法子程序LEA SI,DATA1MOV BX,0MOV CX,NCALL DISPL ;显示运算结果DISP 0DHDISP 0AHMOV AX,4C00HINT 21HDISPL PROC ;显示子程序DS1: MOV AH,02HMOV DL,[SI+BX]INT 21HINC BXLOOP DS1RETDISPL ENDPADDA PROC ;加法子程序PUSH CXMOV BX,0AD1: SUB BYTE PTR [SI+BX],30HSUB BYTE PTR [DI+BX],30HINC BXLOOP AD1POP CXPUSH CXMOV BX,N-1 ;☆☆CLCAD2: MOV AL,[SI+BX]ADC AL,[DI+BX]AAAMOV [DI+BX],ALDEC BXLOOP AD2POP CXPUSH CXMOV BX,0 ;☆☆☆AD3: ADD BYTE PTR [DI+BX],30HINC BXLOOP AD3POP CXRET ;☆☆☆☆ADDA ENDPCODE ENDSEND START五.调试步骤1.编辑源程序,建立一个以后缀为.ASM的文件.2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。

微机原理实验

微机原理实验

实验一、DEBUG 调试软件的使用一、实验目的1.熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。

2.了解数据在存储器中的存取方法以及堆栈中数据的压入与弹出。

3.掌握各种寻址方式以及简单指令的执行过程。

4.掌握变量和标号的处理,数值的默认进位制。

二、实验内容1.设堆栈指针SP=2000H,AX=3000H,BX=5000H;利用堆栈实现将AX,BX的内容交换。

用DEBUG 进行汇编和调试。

1.1 DEBUG的主要命令DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

一.进入DEBUG状态二.DEBUG的命令1.汇编命令A该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。

注意:汇编程序默认的数据是十进制,而DEBUG默认的数据是16进制,即DEBUG中没有二进制、八进制及十进制,只有16进制。

汇编命令格式为:-A? [段地址]:[偏移地址] 说明:[ ]表示可选项,若未指定地址,则默认地址为CS:0100H。

例:用汇编语言编写一个简单的加法程序。

输入的汇编指令有语法错误的,将提示“error”,再重新输入正确指令即可。

若程序输入完毕,发现某条指令输入错误,比如第三条语句输入有误,就从该指令的偏移地址开始汇编(即-A 106)。

如果新输入的指令所占用的内存空间跟旧指令一样,修改完回车退出汇编即可;如果新输入的指令所占用的内存空间比旧指令少,可在多余的内存空间输入“NOP(空操作,占一字节)”指令;如果新输入的指令所占用的内存空间比旧指令多,就必须将后面的所有指令重新输入。

思考:汇编程序时,偏移地址为何不是连续的,它是如何变化的?(参考第6小点)2.命名命令N读(L)/写(W)程序前,必须先命名,即该命令结合读(L)/写(W)命令使用。

(参阅4、5)例:-N EX1;给程序文件命名为EX1。

3.检查和修改寄存器命令R4.写盘命令WW命令没有任何参数时,与命令N配合使用进行写操作,使用W命令前在BX:CX中应写入文件的字节数。

comsol仿真实验报告

comsol仿真实验报告

comsol仿真实验报告一、实验目的本次实验旨在通过使用 COMSOL Multiphysics 软件对特定的物理现象或工程问题进行仿真分析,深入理解相关理论知识,并获取直观、准确的结果,为实际应用提供有效的参考和指导。

二、实验原理COMSOL Multiphysics 是一款基于有限元方法的多物理场仿真软件,它能够将多个物理场(如电场、磁场、热场、流体场等)耦合在一个模型中进行求解。

其基本原理是将连续的求解区域离散化为有限个单元,通过对每个单元上的偏微分方程进行近似求解,最终得到整个区域的数值解。

在本次实验中,我们所涉及的物理场及相关方程如下:(一)热传递热传递主要有三种方式:热传导、热对流和热辐射。

热传导遵循傅里叶定律:$q =k\nabla T$,其中$q$ 为热流密度,$k$ 为热导率,$\nabla T$ 为温度梯度。

热对流通过牛顿冷却定律描述:$q = h(T T_{amb})$,其中$h$ 为对流换热系数,$T$ 为物体表面温度,$T_{amb}$为环境温度。

(二)流体流动对于不可压缩流体,其运动遵循纳维斯托克斯方程:$\rho(\frac{\partial \vec{u}}{\partial t} +(\vec{u}\cdot\nabla)\vec{u})=\nabla p +\mu\nabla^2\vec{u} +\vec{f}$其中$\rho$ 为流体密度,$\vec{u}$为流体速度,$p$ 为压力,$\mu$ 为动力粘度,$\vec{f}$为体积力。

(三)电磁场麦克斯韦方程组是描述电磁场的基本方程:$\nabla\cdot\vec{D} =\rho$$\nabla\cdot\vec{B} = 0$$\nabla\times\vec{E} =\frac{\partial \vec{B}}{\partial t}$$\nabla\times\vec{H} =\vec{J} +\frac{\partial \vec{D}}{\partial t}$其中$\vec{D}$为电位移矢量,$\vec{B}$为磁感应强度,$\vec{E}$为电场强度,$\vec{H}$为磁场强度,$\rho$ 为电荷密度,$\vec{J}$为电流密度。

微机原理与汇编语言程序设计实验一

微机原理与汇编语言程序设计实验一

实验一汇编语言上机环境及基本操作一、实验目的及要求1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

二、实验内容1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。

设定源程序的文件名为ABC。

DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSSTACK SEGMENT STACK ’STACK’STA DB 10 DUP(?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。

图1 用EDIT编辑ABC.AS M程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

Arduino实验报告范文

Arduino实验报告范文

Arduino实验报告范文一、摘要Arduino是一个基于开放原始码的软硬件平台可用来开发独立运作、并具互动性的电子产品也可以开发与PC相连的周边装置同时能在运行时与PC。

上的软件进行交互为了测量正弦波电压有效值首先我们设计了单电源供电的半波整流电路并进行整流滤波输出然后选择了通过Arduino设计了读取电压有效值的程序并实现使用此最小系统来测量和显示电压有效值在频率和直流电压幅度限定在小范围的情况下最小系统的示数基本和毫伏表测量的值相同根据交流电压有效值的定义运用集成运放和设计的Arduino最小系统的结合实现了运用少量元器件对交流电压有效值的测量。

关键字:半波整流整流滤波Arduino最小系统读取电压有效值二、实验目的1、熟悉Arduino最小系统的构建和使用方法;2、掌握峰值半波整流电路的工作原理;3、根据技术指标通过分析计算确定电路形式和元器件参数;4、画出电路原理图(元器件标准化电路图规范化);5、熟悉计算机仿真方法;6、熟悉Arduino系统编程方法三、实验任务及设计要求设计实现Arduino最小系统并基于该系统实现对正弦波电压有效值的测量和显示1、基本要求(1)实现Arduino最小系统并能下载完成Blink测试程序驱动Arduino数字13口LED闪烁;(2)电源部分稳定输出5V工作电压用于系统供电;(3)设计峰值半波整流电路技术指标要求如下:输入信号电压范围:0~1V;频率范围:500Hz~2KHz;电源电压:5V;(4)采用Arduino最小系统读取峰值半波整流电路的输出结果并计算正弦波电压有效值;(5)测量出的有效值通过Arduino串口监视器进行读取2、提高要求(1)用数码管显示正弦信号有效值的测量结果;(2)用Arduino最小系统直接读取正弦信号计算有效值比较不同测试方法的测量误差;(3)自拟其他功能3、提交材料(1)实验报告(含仿真结果、原理图)(2)峰值半波整流等相关电路的仿真文件;(3)Arduino程序;(4)电路原理图文件四。

微机原理与接口技术实验报告.

微机原理与接口技术实验报告.

实验一、认识Tddebug集成操作软件一.实验内容(一)实验题目:数据传送实验1. 编程将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。

2. 修改此程序,采用字符串传送指令完成。

(二)实验目的:通过对该程序进行调试,查看程序段、数据段、附加段装入内存后的分配情况。

单步执行数据传送指令后,观察各个寄存器及数据区的内容。

(三)实验步骤:1. 运行Tddebug软件,选择Edit菜单编写实验程序2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。

3.使用Rmrun菜单中的Run运行程序,观察运行结果。

4.使用Rmrun菜单中的Debug调试程序,查看程序段、数据段、附加段装入内存后的分配情况。

单步执行数据传送指令后,观察各寄存器及数据区的内容。

过程如下:1)按F7单步执行,在代码区中有一个三角,表示正在执行的指令。

每一条指令的执行一定会使目标寄存器和状态寄存器发生变化,从相关窗口看结果。

2)检查内存数据区的内容,关键是找出用户程序的数据段和附加段:●方法1:在CPU窗口按Tab键使内存数据显示区成为活动区,按Ctrl+G键,输入:“DS或ES寄存器的值:偏移地址”,即可显示用户指定的数据区●方法2:选择菜单View| Dump,弹出内存数据显示窗口。

3) 查看执行结果:按Alt+F5,切换到用户窗口。

5.更改数据区中的数据,考察、调试程序的正确性。

二.分析设计思想,绘制实验原理图、流程图。

汇编语言程序的开发过程如图1.1所示,这个过程主要有编辑、编译、链接几个步骤构成。

三.程序清单及相关注释。

DDATA SEGMENT ;定义源数据段MSR DB "HELLO,WORLD!$"LEN EQU $- MSRDDATA ENDSEXDA SEGMENT ;定义附加数据段MSD D B LEN DUP(?)EXDA ENDSMYSTACK SEGMENT ;定义堆栈段STACK DW 20 DUP(?)MYSTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DDATA,ES:EXDASTART: MOV AX,DDATAMOV DS,AX ;装载数据段寄存器MOV AX,EXDAMOV ES,AX ;装载附加数据段寄存器MOV SI,OFFSET MSRMOV DI,OFFSET MSDMOV CX,LENMOV BX,0NEXT: MOV AL,MSR[BX] ;开始传输数据MOV ES:MSD[BX],ALINC BXLOOP NEXTPUSH ESPOP DS ;将附加段寄存器指向的段值赋给数据段寄存器MOV DX,OFFSET MSDMOV AH,9INT 21H ;显示字符串MOV AH,4CHINT 21H ;返回DOS状态CODE ENDSEND START四.实验结果并分析。

微机原理实验报告

微机原理实验报告

微机原理实验报告实验名称:MIPS汇编程序设计院系:电信学院班级:姓名:指导老师:一、实验目的:1.熟悉MIPS汇编程序开发环境,学习使用Qtstim工具。

知道如何查看内存空间分配。

2. 了解C语言语句与汇编指令之间的关系。

3. 掌握MIPS汇编程序设计,掌握QTSPIM的调试技术。

4. 了解MIPS汇编语言与机器语言之间的对应关系。

5. 熟悉常见的MIPS汇编指令6. 掌握程序的内存映像。

二、实验内容1.用汇编程序实现以下伪代码:要求使用移位指令实现乘除法运算。

Int main (){Int K,Y;Int Z[50];Y=56;For(k=0;k<50;K++) Z[k]=Y-16*(k/4+210);}三、程序设计及分析1.C语言分析:有两个变量是int型,一个数组型;还有一个循环执行过程。

2.汇编程序实现分析:首先需要定义用户数据段,获得一个内存空间作为数组空间。

再选定几个存放器作为K,Y以及输出,其中输出输出和Y可以合用一个存放器。

3.设计思路:分配完空间地址后,最重要的是完成循环控制。

循环控制有两个思路:可以是先判断后循环;或者是先循环后判断 即如图slti $t2,$t0,50 #判断k 是否于50beq $t2,$t3〔$t2=1循环,否那么结束。

〕四、程序实现及调试分析1.汇编程序代码实现:方法一.data #定义用户数据段z:.space 200 #数组为int型,大小为50,所以占内存4*50 str:.asciiz " "#输出结果之间的空隙.textmain:la $s0,z #$s0 #为数组在z[]li $t0,0 #$s1 #代表k计数,初始值为0li $t1,56 #$t2 #代表Y,初值为56loop:slti $t2,$t0,50 #判断k是否于50beq $t2,$0,done #当k大于等于50,跳转结束srl $t3,$t0,2 #k/4addi $t3,$t3,210 #k/4+210sll $t3,$t3,4 #16*(k/4+210)sub $t3,$t1,$t3 #y-16*(k/4+210)sw $t3,0($s0) #写进z[k]li $v0,1 #输出addi $a0,$s0,0syscallli $v0,4 #输出间隔la $a0,strsyscalladdi $s0,$s0,4 #地址移一位addi $t0,$t0,1 #k加1j loop #循环done:li $v0,10syscall2.调试过程1.编写程序:详细见代码2.装载程序选择file,选择Reinitialize and Load File,把写好的文件导入QtSpim。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理与接口技术软件实验一、实验目的1.掌握汇编程序的编辑,编译,连接和执行的全过程;2.学习和掌握用DEBUG调试程序的方法.二、源程序DAT SEGMENTA DB 4 ;(自定)B DB 5 ;(自定)Y DB 3 DUP(0)Z DB 0,0DAT ENDSSTA SEGMENT STACKDW 50 DUP(?)STA ENDSCOD SEGMENTASSUME CS:COD,DS:DATSTAR PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATMOV DS,AXMOV AX,STAMOV SS,AXMOV AL,AMOV Z,ALMOV Z+1,ALCALL SUB1 ;A*AMOV AL,BMOV Z,ALMOV Z+1,ALCALL SUB1 ;B*BMOV AL,AMOV Z,ALMOV AL,BMOV Z+1,AL ;Z stores the two OPRD temporallyCALL SUB1 ;A*BADD WORD PTR Y,AXADC BYTE PTR[Y+2],0 ;A*B*2RETSTAR ENDPSUB1 PROCMOV AL,ZMOV AH,Z+1MUL AHADD WORD PTR Y,AX ;Y stores the resultADC BYTE PTR[Y+2],0 ;Y+2 stores the signal flagRETSUB1 ENDPCOD ENDSEND STAR三、实验文档中的要求(1)用D 命令观察数据区在内存中的具体内容,记录单元A 和B 的具体地址.(图一:反汇编结果以及数据区具体内容)由图一,可知A的地址为:141CH:0000H;B的地址为:141CH:0001H。

(2)用U 命令对目标代码反汇编,观察反汇编后的结果.注意发现源程序的起始位置, 并记录这个起始地址.由图一,可知:DATA段段基址:141CHA的偏移地址:0000HB的偏移地址:0001HY的偏移地址:0002HZ的偏移地址:0005HSTACK段段基址:141DHCODE段段基址:1424H第一条指令的偏移地址:0000H子程序SUB1入口的偏移地址:003FH(3)用T 命令作单步跟踪调试.比较每条指令执行后的结果和原来的理解是否一致.得出程序运行的结果:它们是写在什么单元,具体内容是什么; 并判断结果是否正确.现仅将关键步骤的单步调试结果列出,配合r命令查看结果。

(图二:单步调试结果一)这是第一次调用SUB1子程序退出后的结果,从图中可以看出Y存储的数据是+16(A已经改为4;B已经改为5),即是A*A的结果,符号位为0表示是正数。

(图三:单步调试结果二)这是第二次调用SUB1子程序退出后的结果,从图中可以看出执行完“MUL AH”指令后,AX 存储的数据是25,即是B*B的结果,子程序退出后Y存储的数据是+41,即是16+25的结果。

(图四:单步调试结果三)这是第三次调用SUB1子程序的结果,从图中可以看出执行完“MUL AH”指令后,AX存储的数据是20,即是A*B的结果,子程序退出后Y存储的数据是+61,即是41+20的结果。

(图五:单步调试结果四)这是程序退出时的最终结果,从图中可以看出,Y存储的数据最终为+81 ,即为(A+B)*(A+B)的结果。

结果正确。

(4)在子程序SUB1 的入口处设一断点,用G 命令执行程序. 在断点处观察堆栈的内容,比较堆栈的内容和程序返回地址是否一致.(图六:调用子程序的堆栈内容改变结果)从图中可以看出,IP指针的变化说明调用了子程序SUB1,而堆栈段段基址SS和栈顶指针SP的值都没有改变。

程序返回地址一致。

(5)用E 命令修改单元A,B 的内容,重新执行程序,并记录结果.(图七:修改A,B数值后的结果)从图中可见,分别将A,B的值改为1,1后,程序执行完毕,Y存储的内容是+4,结果正确。

(6)用M 命令和A 命令对程序进行修改: 将主程序中最后两条指令(ADD 和ADC) 修改为一条CALL SUB1 指令,重新执行程序.(图八:a命令练习使用的结果)反汇编发现程序最后的ADD指令在CODE段的偏移地址为0035,将此处改为调用SUB1子程序的指令,然后将0038处改为RETF。

重新执行后,查看Y的内容,结果正确。

(7) 重新使用编辑软件,把源程序最后一句中的STAR 去掉.再次生成可执行文件,并用DEBUG 调入内存.当使用U 命令时,显示的结果与前一次(未加STAR) 的结果有何不同?(图九:修改源程序后执行的结果)观察到两点不同(虽然不明了其原因),其一:不能立即进入程序,需执行许多冗余指令;其二:不能正确退出程序。

预习题:若SS=2000H,SP=FFFFH, 向堆栈中压入 4 字节数据后,如何用 D 命令显示压入堆栈的内容?使用debug指令“d 2000:0000”即可显示压入堆栈的内容,这是因为SP+1会溢出,变成0000。

四、心得体会汇编语言编程时要求程序员有严谨、缜密的思维,在某些程度上,我感觉使用汇编语言的编程过程就是把高级语言的结构过程拉平成线性过程来考虑问题。

经过此次试验,我基本掌握了汇编程序的编辑、编译、连接、执行以及调试的主要步骤。

应注意以下几点:在debug过程中,任何存储器单元都无法用标号来识别,要使用它们,只能使用物理地址调用。

使用u指令修改asm代码时要对照反汇编的结果,若要删去某条指令,可以找到那条指令在代码段的偏移地址,再用u指令将其修改为NOP(从该指令开始到下一条指令开始的地址-1处)。

可以结合r指令、t指令、已经用g指令设置断点来诊断问题。

微机原理与接口技术软件实验实验报告二姓名:杨帆学院:信息与通信工程学号:070547班级:07118实验二分支,循环程序设计一、实验目的:1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS 功能调用。

实验内容:1.安排一个数据区,内存有若干个正数,负数和零。

每类数的个数都不超过9。

2.编写一个程序统计数据区中正数,负数和零的个数。

3.将统计结果在屏幕上显示。

二、预习题:1.十进制数0 -- 9 所对应的ASCII 码是什么?如何将十进制数0 -- 9 在屏幕上显示出来?答:0的ASCII码是30h,以后依次递增。

要屏显0-9的数码,只需将AH置成02H(DOS功能调用),然后将要显示的数码的ASCII 码存进DL里,然后执行INT 21H就可以打印字符。

或者,若这些数码是以字符串的格式存储,则可以将AH置成09H,(最后以’$’字符结束,)然后将串首地址传给DS,然后执行INT 21H就可以打印字符串。

2.如何检验一个数为正,为负或为零?你能举出多少种不同的方法?答:可以将待检验数与0比较(使用CMP指令后判断CF、OF或者以表达式【实用EQ、GE 等操作符】的返回值来判断),也可以将待检验数与80H相与,判断ZF的值。

三、源程序DATA SEGMENTBUF0 DB 2BH,3AH ;'+',':'POSI DB 0BUF1 DB 0AH,0DH,30H,3AH ;LF,CR,'0',':'ZERO DB 0BUF2 DB 0AH,0DH,2DH,3AH ;LF,CR,'-',':'NEGA DB 0NUM DB 72H,88H,91H,01H,00H,00H,23H,77H,21H;you can add other numbersCNT EQU $-NUM ;LENTHDATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP (?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV CX,0MOV BX,0LOOP1: MOV AL,NUM[BX]CALL FAR PTR CMPRINC BXINC CXCMP CX,CNT ;LOOP CNT TIMESJNZ LOOP1ADD POSI,30HADD ZERO,30HADD NEGA,30H ;TRANSFER TO ASC2 CODE MOV AH,02H ;TO PRINT CHARSMOV CX,0MOV BX,0LOOP2: MOV DL,BUF0[BX]INT 21HINC BXINC CXCMP CX,0DH ;LOOP 13 TIMESJNZ LOOP2MOV AX,4C00HINT 21HRETSTART ENDP CMPR PROC FAR CMP AL,0JGE BIGGERINC NEGAJMP EXIT BIGGER: JE EQUAL INC POSIJMP EXIT EQUAL: INC ZERO EXIT: RET CMPR ENDP CODE ENDS END START四、程序流程图(图表一:主程序流程图)(图表二:cmpr子程序流程图)五、实验结果与调试过程(图一:程序运行结果)分析:设置的数据区待分析数据为“72H,88H,91H,01H,00H,00H,23H,77H,21H”,其中正数为72H,01H,23H,77H,21H;负数为88H,91H;还有两个零。

可见程序得出的结果是正确的。

(图二:反汇编结果)分析:DATA段地址:1466;POSI偏移地址:0002;ZERO偏移地址:0007;NEGA偏移地址:000C;CODE段地址:1468;子程序CMPR偏移地址:0049;CNT的值+09D。

六、选作题:统计出正奇数,正偶数,负奇数,负偶数以及零的个数。

源代码如下:DATA SEGMENTBUF DB 2BH,4FH,3AH ;'+','O',':'POSOD DB 0DB 0AH,0DH,2BH,45H,3AH ;LF,CR,'+','E',':' POSEV DB 0DB 0AH,0DH,30H,3AH ;LF,CR,'0',':'ZERO DB 0DB 0AH,0DH,2DH,4FH,3AH ;LF,CR,'-','O',':' NEGAOD DB 0DB 0AH,0DH,2DH,45H,3AH ;LF,CR,'-','E',':' NEGAEV DB 0NUM DB 72H,88H,91H,01H,00H,00H,23H,77H,21H ;you can add other numbersCNT EQU $-NUM ;LENTHDATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP (?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV CX,0MOV BX,0LOOP1: MOV AL,NUM[BX]CALL FAR PTR CMPRINC BXINC CXCMP CX,CNT ;LOOP CNT TIMESJNZ LOOP1ADD POSOD,30HADD POSEV,30HADD ZERO,30HADD NEGAOD,30HADD NEGAEV,30H ;TRANSFER TO ASC2 CODE MOV AH,02H ;TO PRINT CHARSMOV CX,0MOV BX,0LOOP2: MOV DL,BUF[BX]INT 21HINC BXINC CXCMP CX,1BH ;LOOP 26 TIMESJNZ LOOP2MOV AX,4C00HINT 21HRETSTART ENDPCMPR PROC FARCMP AL,0JGE BIGGERTEST AL,01HJNZ NODDINC NEGAEVJMP EXITNODD: INC NEGAODJMP EXITBIGGER: JE EQUALTEST AL,01HJNZ PODDINC POSEVJMP EXITPODD: INC POSODJMP EXITEQUAL: INC ZEROEXIT: RETCMPR ENDPCODE ENDSEND START运行结果:(图三:选做题程序运行结果)根据NUM中的数据,这个结果是正确的。

相关文档
最新文档