汇编语言怎么给寄存器赋值累加器a是八位的,可以被32位r0赋值吗,如何赋值的呢,毕竟只有8位?

微机原理及应用实验报告

机电工程学院 精密测控实验室

1、掌握MCS-51单片机指令系统及用汇编语言编程技巧;

2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。

1、编写排序程序并上机调试通过。

递减次序排序,即最大数放在60H中,最小数放在69H中。

2.、编写多字节加法程序并上机调试通过。

8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH

单元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地址的区域中(低字节在前)。

3.实验设备名称、型号:

4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单:

程序1、 编写排序程序并上机调试通过。

减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小

的顺序则不动,否则两两交换,这样比较下去,比较9次后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如果一次比较完毕,没有发生交换,说明已

经按照从大到小的顺序排列了。则可以退出循环,结束程序。

程序结构框图和程序代码如下:

程序2:编写多字节加法程序并上机调试通过。

8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地址的区域中(低字节在前)。

解:改程序由三个字节数相加,其结果不会超过4个字节,可以采用循环求和的办法,

吧加数和被加数依次从低位带进位相加,当然加最低位时必须先对进位位清零。可以采用线性结构,也可以采用循环结构。我在设计该程序采用单重循环,结构简单,特别是当相加的数较长时,优势更加明显。

程序结构框图和源代码如下:

1、如果题目1改为递增排序,如何修改程序,为什么?

答:将NEXT中的指令中的JC 指令换为JNC指令即可

2、如果题目1改为从30H单元开始的16个单元中无符号数排序,改哪几条指令?

答:改变R7的值为15,将值赋予30H到3FH上就可以了

3、如果题目2改为从50H开始的4字节数与60H开始的四字节数相加,如何修改?

4、写出题目2中你处理最高位进位的相应指令。

5、循环程序中为何常用间接寻址方式(@Ri,@DPTR)?

答:因为间接寻址可以实现程序的循环,便于编写程序。

通过实际模拟操作,加深了对单片机的理解,更好的理解编程语言,本次实验较为简单, 我是独立按时完成,当我看到发光二极管一次亮时别提我的兴奋劲了。在试验的编程过程中 弄清了定时器的使用方法,以及延时的计算。

实验三 定时/计数器实验

1、 掌握MCS-51单片机内部定时/计数器的功能与特点,工作方式选择和编程方法,中

断功能的使用和中断服务程序的设计;

2、 解和熟悉MCS-51单片机实验板的功能。

1、用MCS-51单片机的内部定时器定时中断,通过P1口控制实验板上八个LED发光二极管轮流循环显示发光,每个LED发光二极管显示时间为0.5秒;

2、用MCS-51单片机的内部定时器定时中断,编写一段电子秒表程序。(选做)

3.实验设备名称、型号:

4.画出软件程序流程图写出上机调试通过的汇编语言程序清单:

1、 用MCS-51单片机的内部定时器定时中断,通过P1口控制实验板上八个LED发光二

极管轮流循环显示发光,每个LED发光二极管显示时间为0.5秒.

分析:采用的晶振为11.0592MHz,所以时间周期T=1.085069μs。采用方式一计时需要

460800 次, 超过了计时范围, 故在采用一个内循环, 取为10 , 则共需

1、你采用的是定时器0还是定时器1?如果换用另外一个定时器,需要修改那些语句?为什么?

答:采用定时器0 ,若用另一个则要替换的语句是

2、如果将延时时间变为1秒,如何修改程序,为何?

3、改变发光二极管循环点亮方向,如何修改程序?如果间隔闪亮(亮一个,黑一个,亮一个??)如何修改程序?你还能做哪些花样?

如果要间隔闪亮可以将A 连续两次左移即RL A 变为 RL A 再加RL A就可以了。我还可以要其两同时亮,将累加器A 的值变为0FDH 就可以了语言是MOV A # 0FEH 变为MOV A ,#0FDH

通过实际模拟操作,加深了对单片机的理解,更好的理解编程语言,本次实验较为简单, 我是独立按时完成,当我看到发光二极管一次亮时别提我的兴奋劲了。在试验的编程过程中弄清了定时器的使用方法,以及延时的计算。

实验四 串行数据传送实验

1、掌握MCS-51单片机内部串行通信接口的功能与特点,工作方式选择和编程方法,中

断功能的使用和中断服务程序的设计;

2、一步了解和熟悉MCS-51单片机实验板的功能。

1、用查询方式在二块单片机实验系统之间进行串行数据通信;

2、用中断方式在二块单片机实验系统之间进行串行数据通信。

3.实验设备名称、型号:

4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单:

要间隔0.5s。故需要执行0.5÷(2T)=230400次。取三次循环,第一次为4,第二次

可以缩短显示时间。当修改为 MOV R3,#04H

MOV R5,#02H时从视觉看已经看不出变化。

用定时器实现方法:采用的晶振为11.0592MHz,所以时间周期T=1.085069μs。采用方式一 计时需要460800 次,超过了计时范围,故在采用一个内循环,取为50,则共需 =9216。X=216-=DC1EH

1、要显示实验当天的日期(如),怎样调试?

2、用其中4位数码管显示“good”,程序如何修改?

通过实际模拟操作,加深了对单片机的理解,更好的理解编程语言,本次实验我能够根 据老师给出的代码理解完成,并且取得满意的结果。在试验的编程过程中弄清了很多在课堂 上没有理解的操作码的含义。熟悉了各个操作码的使用方法及为什么如此用。

第二篇:微机实验报告 11200字

(1) 掌握TD- PITC 80X86微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。

(2) 掌握使用运算指令类编程及调试方法。

(3) 掌握运算类指令对各状态标志位的影响及其测试方法。

(4) 学习使用软件监视变量的方法。

通过对样例程序的操作,学会使用在TD- PITC环境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会:如何设置断点,如何单步运行程序,如何连续运行程序,怎样查看寄存器的内容,怎样修改寄存器的内容,怎样查看存储器的内容,怎样修改存储器的内容

3.1 实验内容一——BCD码转换为二进制

将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3501H起始的内存单元中,自行绘制流程图并编写程序。 实验步骤:

1) 运行Wmd86软件,进入Wmd86集成开发环境。

2) 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里我们选择汇编语言。

3) 语言选择后,点击新建来新建一个文档。默认文件名为Wmd861.

4) 编写实验程序。并保存,此时系统会提示输入新的文件名,输完后点击保存。 实验程序清单如下:

5) 点击编译文件,若程序无误,再点击进行连接。

6) 连接PC与实验系统的通讯电缆,打开实验系统电源。

7) 编译、连接都正常并且上下机位通讯成功后,就可以下载程序,联机调试了。可以通过输入端口列表中的“端口测试”来检查通讯是否正常。点击下载程序,编译、链接下载一次完成。下载完成后,在输入区的结果栏会显示“加载成功!”,表明程序以正确下载。起始运行语句下会有一条绿色的背景。

8) 将四个二位十进制数的BCD码存入3500H~3507H中,即:将输出区切换到调试窗口,键入E3500,然后输入01 02 03 04 05 06 06 08(每个数用空格隔开),存储器在初始状态时,默认数据是CC。

9) 点击运行程序,然后再点击停止程序运行,接下来观察程序的运行结果,使用命令D3510显示转换结果为:0C 22 38 4E。

10) 反复输入几组数据,验证程序的功能。

a、输入:将输出区切换到调试窗口,键入E3500,然后输入02 00 03 02 06 03 07 06 输出:点击运行程序,然后再点击停止程序运行,接下来观察程序的运行结果,使用命令D3510显示转换结果为14 20 4F 4C

b、输入:将输出区切换到调试窗口,键入E3500,然后输入07 02 06 03 04 06 01 00 输出:点击运行程序,然后再点击停止程序运行,接下来观察程序的运行结果,使用命令D3510显示转换结果为48 3F 2E 0A

1)叙述修改实验数据有几种方法?这些方法各有什么特点?

答:修改实验数据的方法有:

1、 直接通过源程序的赋值语句来修改。特点是需要对程序进行修改,编译。要重新编译、加载、运行。操作简单,但时间长,易于操作。

2、 通过键入E命令对存储器的内容直接修改。其特点是可一次修改多个变量,但需明确变量的地址。

3、 在变量区直接修改。其特点是需将变量加入监视窗口,且变量不宜过多。

2)能否利用“调试窗口”直接对程序进行修改?

3.2 实验内容二——二进制数双精度加法运算

计算X+Y=Z,将计算结果Z存入某单元。实验程序如下

本实验是双精度(2个16位,即32位)加法运算,编程时可利用累加器AX,先求低16位的和,并将运算结果存入低地址存储单元,然后求高16位的和,将结

果存入高地址单元中。由于低16位运算后可能向高位产生进位,因此高16位运算时使用ADC指令,这样在低16位相加运算有进位时,高位相加会加上CF中的1。 实验步骤

1) 编写程序,经编译、链接无误后装入系统。

2) 程序运载完成后,点击“变量区”标签将观察窗口切换到变量监视窗口。

4) 在JMP START语句行设置断点,然后运行程序。

5) 当程序遇到断定后停止运行,查看变量监视窗口,计算结果ZH为0037,ZL为1D3E。

6) 修改AH,AL,YH和YL的值,再次运行程序,观察实验结果,反复测试几组数据,验证程序的功能。

1)如何使用E命令直接修改AH,AL,YH,YL变量的值?

答:重新加载程序后,在寄存器窗口中读出DS的值为0208,以此为起始地址语句中数据所在数据段的段基地址,,因此逻辑地址为0208:0000.再将输出区切换到调试区,输入命令“E0208:0000”。按回车,依次输入AH,AL,YH,YL。在JMP START处设置断点,运行程序。在调试区输入“D0208:0000”,即可得到对应的结果。

2)如何直接修改程序来修改AH,AL,YH,YL变量的值?

实验2 分支程序设计实验

(1) 掌握分支程序的结构

(2) 掌握分支程序的设计、调试方法。

设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图

源数据块与目的数据块在存储中的位置情况

对于两个数据块分离的情况,如图(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:

当源数据块地址<目的块首地址,从数据块末地址开始传送数据,如(b)。 当源数据块地址>目的块首地址,从数据块末地址开始传送数据,如(c)。

1) 按流程图编写实验程序,经编译、链接无误后装入系统。 实验程序清单如下:

2) 用E命令在以SI为起始地址的单元中填入16个数。

3) 运行程序,然后再停止运行。

4) 通过D命令查看DI为起始地址单元中的数据是否与SI单元中数据相同。

5) 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程序的功能。

试编写一个程序,该程序的功能是:当BL寄存器内容为0时,将0—255这256个数据按从小到大的顺序放入到以3100H为起始的单元中去,当BL寄存器内容为1时,将0—255这256个数据按从大到小的顺序放入到以3100H为起始的单元中去。输入程序,编辑调试通过,连接、下载、运行程序,查看结果。

实验3 排序程序设计实验

(1) 掌握分支、循环、子程序调用等基本的程序结构。

(2) 学习综合程序的设计、编制及调试。

3.1 实验内容1—气泡排序法

在数据区中存放着一组数,数据的个数就是数据缓冲区的长度,要求采用气泡法对该数据区中的数据按递增关系排序。设计思想:

(1) 从最后一个数(或第一个数)开始,一次把相邻的两个数进行比较,即第N个数与第N-1个数比较,第N-1个数与第N-2个数比较等等。若第N-1个数大于第N个数,则交换,否则不交换,直至到N个数的相邻两个数都比较完为止。此时,N个数中的最小数将被排在N各数的最前列。

(2) 对剩下的N-1个数重复(1)这一步,找到N-1个数种的最小数。

(3) 再重复(2),知道N个数全部排列好为止。

(1) 分析参考程序,绘制流程图并编写实验程序。

(2) 编译、链接无误后装入系统。

(3) 键入E3000命令修改3000H~3009H单元中的数,任意存入10个无符号数。

(4) 先运行程序,然后再停止程序运行。

(5) 通过键入D3000命令查看程序运行的结果。

(6) 可以反复测试几组数据,观察结果,验证程序的正确性。

3.2 实验内容2—学生成绩名次表

将分数在1~100之间的30个成绩存入首地址为3000H的单元中,3000H+I表示学号为I的学生成绩。编写程序,将排出的名次表存放在3100H开始的数据区,3100H+I中存放的为学号为I的学生的名次。

(1) 分析参考程序,绘制流程图并编写实验程序。

(2) 编译、链接无误后装入系统。

(3) 将30个成绩存入首地址为3000H的内存单元中。

(4) 调试并运行程序。

(5) 检查3100H起始的内存单元中的名次是否正确。

输入30个学生的成绩:

实验4 8259中断控制实验

(1) 掌握8259中断控制器的工作原理。

(2) 学习8259的应用编程方法。

(3) 掌握8259级联方式的使用方法。

在对8259进行编程时,首先必须进行初始化。一般先使用CLI指令将所有的可屏蔽中断禁止,然后写入初始化命令字。8259有一个状态机控制对寄存器的访问,不正确的初始化顺序会造成异常初始化。在初始化主片8259时,写入初始化命令字的顺序是:ICW1、ICW2、ICW3、然后是ICW4,初始化从片8259的顺序与初始化主片8259的顺序是相同的。

实验连接线图如下,单次脉冲输出与主片8259的IR7相连,每按动一次单次脉冲,产生一次外部中断,在屏幕上显示一个字符“7”。

8259单元中断实验连接线图

(1) 按图连接实验线路。

(2) 编写试验程序,经编译、链接无误后装入系统。

(3) 运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“7”以说明响应了中断。

要求单次脉冲输出与主片8259的IR7相连,且每按动一次单次脉冲,产生一次外部中断,在显示屏上输出一个字符“6”。修改实验线路与程序,编译、链接后,运行程序并查看结果。

实验5 8255并行接口实验

(1) 学习掌握8255的工作方式及其应用。

(2) 掌握8255典型应用电路的接法。

3.1 实验内容1—基本输入输出实验

编写程序,使8255的A接口为输入,B接口为输出,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应的变化。

本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。

(1) 实验连线如下,接图连接实验线图。

(2) 编写实验程序,经编译、连接无误后装入系统。

(3) 运行程序,改变拨动开关,同时观察LED显示,验证程序功能。 8255单元基本输入输出实验接线图

开关及LED显示单元 实验程序清单如下:

3.2 实验内容2—流水灯显示实验

编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示。D15~D8与D7~D0正相反,由右向左,每次仅亮一个灯,循环显示。

使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示。D15~D8与D7~D0正相反,由右向左,每次仅亮一个灯,循环显示。

(1) 实验连线如下,接图连接实验线图。

(2) 编写实验程序,经编译、连接无误后装入系统。

(3) 运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

(4) 自己改变流水灯的方式,编写程序。

8255流水灯实验接线图

开关及LED显示单元 实验程序清单如下:

1)在试验1中,将8255芯片的A口个B口的连线进行调换,如何修改程序,得到相同的结果。

2)在试验2中,将8255芯片的A口个C口的连线进行调换,如何修改程序,得到相同的结果。

}

《计算机组成原理与汇编语言程序设计》

一、掌握:CPU基本组成模型(寄存器组成、数据通路结构),同步控制方式与常见时序信号,微命令(脉冲、电位),熟练掌握指令流程(能拟出给定指令的流程)。

首先在掌握上述概念的基础上,结合教材图3-13熟悉模型机的构成(最好分成几大块记忆理解)。

重点了解组合逻辑控制器的设计步骤,就可以掌握有关的指令流程,下面一一加以介绍。首先根据指令系统分析每条指令的流程,写出每一条指令所对应的微操作序列。对所有微操作进行逻辑综合与化简,写出每个微操作的逻辑表达式。根据这些逻辑表达式,对微操作控制信号形成部件进行逻辑设计。

1.确立模型机的指令系统

(1)工作周期(机器周期)

下载文档原格式(Word原格式,共23页)

}

《汇编语言》PPT课件

[版权声明] 本站所有资料由用户提供并上传,若内容存在侵权,请联系邮箱。资料中的图片、字体、音乐等需版权方额外授权,请谨慎使用。网站中党政主题相关内容(国旗、国徽、党徽)仅限个人学习分享使用,禁止广告使用和商用。

}

我要回帖

更多关于 汇编语言怎么给寄存器赋值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信