实验一 指令与寻址方式认知实验(Keil)
基于Keil的单片机指令系统实验
实验1基于Keil的单片机指令系统实验一、实验目的:掌握Keil uVision4的项目文件创建、编译、运行和软件仿真的基本操作方法掌握数据传送类指令和算术运算类指令二、实验仪器:计算机、KEIL软件三、实验步骤:在KEIL中编写汇编程序(参考教材第1章)(1).打开KEIL软件。
双击桌面快捷图标即可进入如图1.1所示的集成开发环境编辑操作界面,主要包括三个窗口:工程项目窗口、编辑窗口和输出窗口。
图1.1μVision2编辑操作界面单击 Project 菜单,在弹出的下拉菜单中选中 New Project 选项,新建一个项目,如图1.2所示。
图1.2 Project界面然后选择你要保存的路径,输入工程文件的名字(比如保存到uv目录里,工程文件的名字为shiyan1),如下图1.3所示,然后点击保存。
图1.3 Project保存设置界面这时会弹出一个对话框,要求你选择单片机的型号。
可以根据你使用的单片机来选择,keil几乎支持所有的51核的单片机,这里以Atmel的89C51来说明,如下图1.4所示。
首先选择Atmel公司,然后点击左边的+号选择AT89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定,在随后弹出的对话框选择“否”。
图1.4 器件选择完成以上步骤后,屏幕如下图1.5所示。
图1.5 初始化编辑界面首先进行选项设置,将鼠标指向“Target 1”并单击右键, 再从弹出的右键菜单中单击“Options for Target”选项,如图1.6所示。
图1.6 “Options for Target”选项从弹出的“Options”窗口中选择“Output”标签栏,并如图1.7所示设置其中各项:图1.7“Output”标签栏首先选择“Select Folder for Objects”按钮,为后面生成*.hex文件选择一个存放目录,然后在后面的空格里面为将要生成的hex文件命名一个文件名,再将下面的“Create HEX File”前的选项前打:“√”,最后确认即可。
2019实验1 Keil软件学习与及操作实践
实验1 Keil软件学习与操作实践一、实验目的:熟悉Keil C51 集成开发环境的使用方法,初步掌握Keil C51基本的操作和使用,能够输入、编译和仿真调试简单的程序。
二、实验内容:在Keil C51 集成开发环境编写程序,实现P1.0口单灯闪烁的功能(假设P1.0口所接发光二极管低电平点亮),编写程序后在Keil C51 集成开发环境完成编译和仿真,实现全速运行、单步运行、并学会设置断点、查看相关寄存器等操作。
三、实验设备:安装Keil C51的计算机一台。
四、实验步骤:(参考教材第11章)1)建立一个工程项目选择芯片确定选项。
执行Keil C51软件的菜单“Project | New Project…”,弹出一个名为“Create New Project”的对话框。
先选择一个合适的文件夹准备来存放工程文件,最后,为工程取名,并保存。
如图1-1所示,紧接着,Keil C51提示您选择CPU器件。
在这里可以选择Atmel公司的AT89S52。
图1-1 Keil C51 工程的建立2)编写(或加入)汇编源文件或C 源文件,并添加到工程中。
执行菜单“File | New…”,出现一个名为“Text n”(其中n 表示序号)的文档。
如图1-2所示。
执行菜单“File | Save”,弹出一个名为“Save As”的对话框。
将文件名改为你事先起好的名称,如:led.asm然后保存。
注意:扩展名“.ASM或.c”不可省略。
单击Keil C51软件左边项目工作窗口“Target 1”上的“+”,将其展开。
然后右击“Source Group 1”文件夹,会弹出如图 1.7所示的选择菜单。
单击其中的“Add Files to Group 'Source Group 1'”项,将源程序文件添加到工程中。
然后编写如下程序源文件,并再次保存。
ORG 0000HMAIN: CLR P1.0 ;(1)点亮LEDMOV 30H,#255LCALL DELAY ;(2)调用延时子程序SETB P1.0 ;(3)熄灭LEDMOV 30H,#200LCALL DELAY ;(4)调用延时子程序AJMP MAIN ;(5)返回MAIN处执行DELAY:MOV R7,30H ;(6)延时程序D1:MOV R6,#250 ;(7)D2:DJNZ R6,D2 ;(8)R6存放内循环次数DJNZ R7,D1 ;(9)R7存放外循环次数RET ;(10)END3)设置参数单击“Project”菜单“Option…”选项(可能需要选择两次),在“Output”标签页,选中“Create HEX File”项,然后“确定”。
实验一 汇编语言的应用及Keil C编译环境
实验一汇编语言的应用及Keil C编译环境一、实验目的熟悉51指令系统,掌握程序设计方法。
二、实验内容1、通过执行程序中的相关指令,将有关数据写入工作寄存器区、位寻址区、数据缓冲区和特殊功能寄存器区各存储单元2、编写并调试一个排序子程序,其功能为用冒泡法将内存RAM中几个单字节无符号的正整数,按从小到大的次序重新排列。
三、实验步骤及参考程序:1、编写程序,将有关数据写入工作寄存器区、位寻址区、数据缓冲区和特殊功能寄存器区各存储单元,并参考预备知识中有关内容对程序的执行结果进行检查。
参考程序A:工作寄存器区的数据传送地址机器码源程序注释检查数据ORG 0000H ;表示程序从地址0000H存放0000H 78 11 MOV R0,#11H ;将立即数11H送到寄存器R0中( H)=11H 0002H 79 22 MOV R1,#22H ;将立即数22H送到寄存器R1中( H)=22H 0004H 7A 33 MOV R2,#33H ;将立即数33H送到寄存器R2中( H)=33H 0006H 7B 44 MOV R3,#44H ;将立即数44H送到寄存器R3中( H)=44H0008H75 D010MOV PSW,#10H ;使工作寄存器工作于2区( H)=10H000BH 78 55 MOV R0,#55H ;将立即数55H送到寄存器R0中( H)=55H 000DH 79 66 MOV R1,#66H ;将立即数66H送到寄存器R1中( H)=66H 000FH 7A 77 MOV R2,#77H ;将立即数77H送到寄存器R2中( H)=77H 0011H 7B 88 MOV R3,#88H ;将立即数88H送到寄存器R3中( H)=88HEND ;程序结束参考程序B:位寻址区的数据传送地址机器码源程序注释检查数据ORG 0100H ;表示程序从地址0100H存放0100H 75 20F0 MOV 20H,#0F0H ;将字节地址20H单元中的内容置F0H(20H)=0103H D2 00 SETB 00H ;将位地址00H单元中的内容置1 ( H)=1 0105H D2 01 SETB 01H ;将位地址01H单元中的内容置1 ( H)=1 0107H D2 02 SETB 02H ;将位地址02H单元中的内容置1 ( H)=1 0109H D2 03 SETB 03H ;将位地址03H单元中的内容置1 ( H)=1 010BH C2 04 CLR 04H ;将位地址04H单元中的内容置0 ( H)=0 010DH C2 05 CLR 05H ;将位地址05H单元中的内容置0 ( H)=0 010FH C2 06 CLR 06H ;将位地址06H单元中的内容置0 ( H)=0 0111H C2 07 CLR 07H ;将位地址07H单元中的内容置0 ( H)=0(20H)= 0113H 75 90 FF MOV P1,#0FFH ;将字节地址90H单元中的内容置FFH (90H)= 0116H C2 90 CLR 90H ;将P1.0置0 ( H)=0 0118H D2 90 SETB 90H ;将P1.0置1 ( H)=1 011AH C2 91 CLR 91H ;将P1.1置0 ( H)=0 011CH D2 91 SETB 91H ;将P1.1置1 ( H)=1END ;程序结束参考程序C:数据缓冲区和特殊功能寄存器区的数据传送地址机器码源程序注释检查数据ORG 0200H ;表示程序从地址0200H存放0200H 75 30 99 MOV 30H,#99H ;将立即数99H送到30H中(30H)=(PC)=0203H75 45 AA MOV 45H,#0AAH ;将立即数AAH送到45H中(45H)=(PC)=0206H 75 81 50 MOV SP,#50H ;将立即数50H送到堆栈指针SP中( H)=50H(PC)=0209H 74 60 MOV A,#60H ;将立即数60H送到累加器A中( H)=60H(PC)=020BH 75 90 55 MOV P1,#55H ;将立即数55H送到P1口中( H)=55H(PC)=020EH 75 D0 90 MOV PSW,#90H ;使工作寄存器工作于2区、进位位CY置1( H)=90H(PC)=0211H 90 12 34 MOV DPTR,#1234H ;将立即数1234H送到数据指针DPTR中( H)=12H( H)=34H END ;程序结束2、参照预备知识中“观测和修改存储器内容”中方法6,利用鼠标右键修改存储单元的数据,将内部RAM 50H到5AH中放入不等的数据,运行参考程序,检查50H到5AH单元是否按从小到大的次序排列,自己修改程序将50H到5AH单元内容改为从大到小排列。
实验一 Keil软件的使用及简单程序的调试方法
实验一 Keil软件的使用及简单程序的调试方法一、实验目的掌握Keil的使用方法和建立一个完整的单片机汇编语言程序的调试过程及方法。
二、实验器材计算机1台三、实验内容1.Keil的使用方法。
2.建立一个单片机汇编语言程序的调试过程及方法四、实验步骤1.Keil的使用方法。
Keil C51 软件是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言和C 语言的程序设计,界面友好,易学易用。
启动Keil 后的界面如下:几秒钟后即进入Keil的编辑界面。
用户便可建立项目及应用程序。
2.简单程序的调试方法Keil是通过项目工程来管理汇编程序的。
因此在调试程序前必须建立一个工程,工程名称及保存位置由用户来指定,注意每位同学的工程名称用“学号姓名实验*”来命名。
(1)建立一工程单击Project菜单,在弹出的下拉菜单中选中New Project选项。
并在弹出的对话框中确定保存的位置及工程名称。
又弹出一对话框,要求用户选择相应的硬件CPU及相关设置。
选择Atmel公司的AT89C51单片机。
如下图所示单击“确定”后在弹出的对话框中行选择“否”即工程建好了,但该工程没有任何语句,需要再建一个程序文件并将其添加到此工程中。
(2)建一文件单击“File”/“New”命令,则弹出文件的编辑窗口,此时该文件还没有指明其文件名称及保存位置,该文件还没有加载到所建立的工程中。
单击“File”/“Save”命令在弹出的对话框中指明文件的类型为.ASM汇编型及文件名后单击“保存”即可进行汇编源文件的编辑。
如下图所示。
(3)将文件添加到工程中单击“Target 1”前的“+”号则展开后变成“-”号,并右键单击“Source Group 1”在弹出的下拉菜单中执行“Add Files to Group ‘Source Group 1’”命令并弹出对话框在该对话框中的“文件类型”下拉列表中选择“Asm source file”后找到要添加的文件名并选中,单击“Add”即可。
单片机指令系统与寻址方式
单片机指令系统与寻址方式单片机要正常运作,事先需编制程序,再把程序放入存贮器中,然后由CPU执行该程序。
程序是由指令组成的,指令的基本组成是操作码和操作数。
单片机的品种许多,设计时怎样表示操作码和操作数,都有各自的规定,再有指令代码也各不相同,因此,必需对所选单片机的全部指令,也就是所谓“指令系统”,有足够的了解。
各个系列的单片机虽然有不同的指令系统,但也有其共同性。
把握一种单片机的指令系统,对其它系列单片机可以起到触类旁通的作用。
MCS-51单片机应用广泛,派生品种多,具有代表性,所以,这里以MCS-51系列的指令系统为例说明“指令”的组成和应用。
1、MOV A,#20H这条指令表示把20H这个数送入累加器A中(一个特别功能寄存器)。
2、ADD A,70H这条指令表示把累加器A中的内容(在上例中送入的#20H)和存贮器中地址为70H单元中的内容(也是一个数字),通过算术规律单元(英文缩写为ALU)相加,并将结果保留在A中。
这里MOV、ADD 等称为操作码,而A、#20H、70H等均称为操作数。
在汇编语言程序中,操作码通常由英文单词缩写而成,这样有助于记忆,所以又称助记符。
如MOV就是英文单词MOVE的缩写,含有搬移的意思;而ADD即为英文单词,其意为相加。
因此,对于略懂英语的用户,把握单片机指令的含意是较为便利的。
操作数有多种表示法,如以上的#20H称为马上数,即20H就是真正的操作数。
而70H是存贮器中某个单元的地址,在该单元中,放着操作数(比如说是3AH),ADD A,70H 不是将70H和A中的内容相加,而是从存贮器70H单元中将3AH取出和A中的内容相加。
由上可知,要找到实际操作数,有时就要转个弯,甚至转几个弯,这个过程称为寻址,MCS-51共有7种寻址方式,现介绍如下:一、马上寻址:操作数就写在指令中,和操作码一起放在程序存贮器中。
把“#”号放在马上数前面,以表示该寻址方式为马上寻址,如#20H。
2019实验1 Keil软件学习与及操作实践
实验1 Keil软件学习与操作实践一、实验目的:熟悉Keil C51 集成开发环境的使用方法,初步掌握Keil C51基本的操作和使用,能够输入、编译和仿真调试简单的程序。
二、实验内容:在Keil C51 集成开发环境编写程序,实现P1.0口单灯闪烁的功能(假设P1.0口所接发光二极管低电平点亮),编写程序后在Keil C51 集成开发环境完成编译和仿真,实现全速运行、单步运行、并学会设置断点、查看相关寄存器等操作。
三、实验设备:安装Keil C51的计算机一台。
四、实验步骤:(参考教材第11章)1)建立一个工程项目选择芯片确定选项。
执行Keil C51软件的菜单“Project | New Project…”,弹出一个名为“Create New Project”的对话框。
先选择一个合适的文件夹准备来存放工程文件,最后,为工程取名,并保存。
如图1-1所示,紧接着,Keil C51提示您选择CPU器件。
在这里可以选择Atmel公司的AT89S52。
图1-1 Keil C51 工程的建立2)编写(或加入)汇编源文件或C 源文件,并添加到工程中。
执行菜单“File | New…”,出现一个名为“Text n”(其中n 表示序号)的文档。
如图1-2所示。
执行菜单“File | Save”,弹出一个名为“Save As”的对话框。
将文件名改为你事先起好的名称,如:led.asm然后保存。
注意:扩展名“.ASM或.c”不可省略。
单击Keil C51软件左边项目工作窗口“Target 1”上的“+”,将其展开。
然后右击“Source Group 1”文件夹,会弹出如图 1.7所示的选择菜单。
单击其中的“Add Files to Group 'Source Group 1'”项,将源程序文件添加到工程中。
然后编写如下程序源文件,并再次保存。
ORG 0000HMAIN: CLR P1.0 ;(1)点亮LEDMOV 30H,#255LCALL DELAY ;(2)调用延时子程序SETB P1.0 ;(3)熄灭LEDMOV 30H,#200LCALL DELAY ;(4)调用延时子程序AJMP MAIN ;(5)返回MAIN处执行DELAY:MOV R7,30H ;(6)延时程序D1:MOV R6,#250 ;(7)D2:DJNZ R6,D2 ;(8)R6存放内循环次数DJNZ R7,D1 ;(9)R7存放外循环次数RET ;(10)END3)设置参数单击“Project”菜单“Option…”选项(可能需要选择两次),在“Output”标签页,选中“Create HEX File”项,然后“确定”。
实验一 KeilC的使用与汇编语言上机操作
实验一KeilC的使用与汇编语言上机操作实验目的:熟悉KeilC环境,通过在KeilC环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。
实验内容:1.掌握KeilC环境的使用1)字节拆分、合并:调试e421.asm程序,观察相关寄存器和单元的内容。
2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。
2. 编写两个十六位数的加法程序。
有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。
思考题:1.怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly 窗口有何作用?2.字节拆分、合并还有哪些方法,举一例说明。
3. 若按递减1规律填充数据块,应如何修改程序?4. 若从7020H单元开始,连续填充10个字节,应该如何修改程序?5. 若完成双字节BCD码加法,应如何修改程序?字节拆分、合并程序File name: e421.asmDescription: 1字节BCD码转换为2字节ASCII2字节ASCII码转化为1字节BCD码Date:Designed by:Source used: 30H: BCD data31H, 32H:ASCII data31H, 32H ->33HORG 0000HLJMP MAINORG 0100HMAIN: MOV SP, #40H ;赋堆栈指针MOV 30H, #49H ;30H单元赋值MOV R0, #32H ;R0指针赋值MOV @R0, #0 ;32H单元清零MOV A, 30HXCHD A, @R0 ;拆分字节ORL 32H, #30H ;转换为ASCIISWAP AORL A, #30H ;转换为ASCIIMOV 31H, A ;结果存于31H单元MOV A, 31H ;从31H单元取值ANL A, #0FH ;转换为BCDSWAP AMOV 33H, A ;结果存于33H单元MOV A, 32H ;从32H单元取值 ANL A, #0FH ;转换为BCDORL 33H, A ;合并字节HERE: SJMP HERE ;踏步END数据块填充程序:将片外RAM 7000H-70FFH单元按一定规律填充File name: fill.asmDate: 2011.8.20Designed by: CDHSource used: R0: 计数器DPTR: 片外数据指针ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,#40HFILL: CLR A ;A寄存器清零MOV R0, #00H ;设循环计数器MOV DPTR, #7000H ;设数据指针FILL1: MOVX @DPTR, A ;传送到片外RAMINC A ;A内容加1INC DPTR ;修改数据指针INC R0 ;修改循环计数器CJNE R0, #00H, FILL1 ;判断是否结束HERE: SJMP HERE ;原地踏步END。
实验一-keil单片机编程软件的使用
实验一 keil单片机编程软件的使用一、实验目的1、了解单片机编程软件原理2、学习使用keil软件二、概述Keil 软件由德国Keil Software/Keil Elektronik 开发,近几年在国内得到迅速普及,国内使用的一般是比较稳定的6.2 版本以及最新的7.0 版本,Keil 软件公司的8051 单片机软件开发工具可用于众多的8051 派生器件,以实现嵌入式应用。
开发工具清单如下:C51 优化C 编译器A51 宏汇编器BL51 代码连接器/定位器OC51 目标文件转换器OH51 目标十六进制转换器LIB51 库文件管理器Windows 版dScope-51 模拟器/调试器Windows 版Vision/51这些工具都集合在一个套件内。
工具套件是几个应用程序的集合,这些程序用来创建8051 应用系统,使用汇编器汇编8051 汇编程序,使用编译器将C 源代码编译成目标文件,使用连接器创建一个绝对目标文件模块供仿真器使用。
使用Keil 的开发工具其项目开发周期和任何软件开发项目都大致一样1. 创建C 或汇编语言的源程序2. 编译或汇编源文件3. 纠正源文件中的错误4. 从编译器和汇编器连接目标文件5. 测试连接的应用程序三、实验设备1、keil编程软件。
四、预习要求1、了解单片机汇编指令,指令格式。
2、了解keil软件安装过程。
五、试验内容及步骤1、了解keil软件的工作环境及各菜单的用法。
2、完成下面程序的编制1)新建一个工程文件,文件名为:prj1.uv22)新建一个程序文件,文件名为:text1.a3)在工程文件prj1.uv2 中添加程序文件text1.a4)打开程序文件text1.a,在此文件中输入下列程序:X1 DATA 20HORG 0000HAJMP RESETORG 0040HRESET: MOV R2,#08HMOV A,#01HLOOP: MOV P1,ARL ADJNZ R2,LOOPMOV X1,#0MOV A,#80HLOOP1: MOV P1,ARR AINC X1CJNE X1,#08H,LOOP1AJMP RESETEND3、对工程进行设置1)使用鼠标右键点击工程名Target 1,选择菜单上的Option for Target Target1或图标在Target 设置界面,把晶振频率选到12MHz.2)在Debug 设置界面,选择软件仿真。
实验一 用DEBUG熟悉指令功能和寻址方式
实验一用DEBUG熟悉指令功能和寻址方式一、实验性质:验证型二、实验目的:掌握debug的使用,能建立和运行汇编语言程序掌握寻址方式DEBUG的命令DEBUG的命令都用单个字母表示,其后可以跟一个或多个参数,参数之间用空格或逗号分隔。
DEBUG的命令参数大多数是地址或地址范围,其地址书写格式为:[段地址:]偏移地址其中的段地址可以用段寄存器名表示,也可以用一个十六进制数表示。
如:ES:10043A5:200地址范围的书写格式为:Ⅰ.[段地址:]起始偏移地址终止偏移地址Ⅱ.[段地址:]起始领衔地址L长度如:CS:10010F和CS:100L10所指的地址范围是一致的。
当输入的命令不正确时,DEBUG将在该行底下指出错误所在。
注意:在DEBUG下,输入的数据和显示的数据都是十六进制数,不用在数据后加“H”A汇编与反汇编命令1.汇编命令A格式:A[地址]功能:从键盘输入汇编程序,并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。
说明:如果不指定汇编地址,则以CS:IP为地址。
例:0BB6:0000-0005写入三条指令。
2.反汇编命令U格式:U[地址]/[地址范围]功能:将指定地址范围内的机器代码翻译成汇编源程序指令显示出来,并同时显示地址及代码。
注意:反汇编时一定确认指令的起始地址,否则得不到正确的结果。
例:反汇编看CS:0005-0011单元的指令。
B显示与修改内存单元内容的命令1.显示内存单元内容命令D格式1:D[地址]格式2:D地址范围只写一个D,表示显示从当前地址单元开始的128个单元中的字节数据说明:D命令在屏幕上显示的内容分为三部分,左边是每一行存储单元的起始地址,中间是各字节单元的内容,右边是各单元内容对应的ASCII码字符(不可显示的字符用"."代替)。
指定要显示的单元的逻辑地址,即写出完整的段地址和偏移地址。
指定要显示数据区起始单元的地址和最后一个单元的地址。
(完整版)Keil创建一个汇编程序的步骤
Keil创建一个汇编程序的步骤1、在C盘新建文件夹“实验一”,启动Keil2、建立一个新工程,单击Project菜单,在弹出的下拉菜单中选中New Project选项,如图1-1所示。
图1-13、然后选择你要保存的路径“C:/ 实验一”,输入工程文件的名字“实验一”,然后点击保存。
4、这时会弹出一个对话框,要求你选择单片机的型号,这里选择Atmel 89C51,如图1-2所示,选择89C51之后,右边栏是对这个单片机的基本的说明,然后点击确定。
完成后,屏幕如图1-3所示。
图1-2图1-35、在图1-3中,单击“File”菜单,再在下拉菜单中单击“New”选项。
新建文件后屏幕如图1-4所示。
图1-46、此时光标在编辑窗口里闪烁,这时可以键入应用程序了,建议首先保存该空白的文件,单击菜单上的“File”,在下拉菜单中选中“Save As”选项单击,屏幕如1-5图所示,在“文件名”栏右侧的编辑框中,键入欲使用的文件名如”Text1.asm”,然后,单击“保存”按钮。
图1-57、回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”上单击右键,并单击“Add File to Group ‘Source Group 1’”选项,在出现的对话框1-6中选中“Text1.asm”,此时出现对话框如图1-7所示,在Type 选择栏中选择第二项“Assembly Language File”,确定文件类型为汇编语言。
8、然后得到如图1-8所示的操作界面,注意比对左侧编辑框项目是否和图1-8一致,下面可以在右侧空白栏中编写汇编程序了。
图1-6图1-7图1-8实验一汇编语言实验一、实验目的1.利用单片机的P1 口作I/O 口,掌握P1 口同时作为输入和输出的用法。
2.掌握汇编语言程序编写方法。
二、实验设备(仪器)PC 微机一台,Keil软件三、实验内容1.寻址方式实验。
2. 单片机I/O口实验。
1_寻址方式与基本指令实验
2.1 寻址方式与基本指令实验2.1.1 实验目的1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。
2、掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。
3、熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法2.1.2 实验预习要求1、认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。
2、认真阅读本书第三部分,熟悉DEBUG调试工具的使用方法。
3、复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。
4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。
2.1.3 实验内容1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。
(1)程序装入后,代码段寄存器CS的内容为___0711_____H,代码段第一条可执行指令MOVA X, DATA对应的机器代码为____B81007______H,它是一个_____3__字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是______寄存器间接寻址____,其值为____82H______。
(2)执行完MOV DS, DA TA指令后,数据段寄存器DS的内容为___076A_____H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为__076B8______H、___076BA_____H和____076BE____H。
(3)程序中第一条ADD AL, [BX] 指令对应的机器代码为___0207_______H,它是一个____2____字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为_____寄存器间接寻址_____,该操作数所在存储单元的逻辑地址(DS): (BX)为___076A:0001______,其物理地址为_____076A0_____H;执行完该指令后(AL)=__EA___H,CF=___0___,OF__0____,ZF_0_____,SF__1____,AF__0____,PF__0____;若两操作数为无符号数,计算结果是否正确___正确____?若两操作数为带符号数,计算结果是否正确____正确____?若计算结果正确,结果是正数还是负数___正数___?(4)执行完第二条ADD AL, [BX] 指令后(AL)=___72__H,CF=___1___,OF___1___,ZF____0__,SF___0___,AF___1___,PF____1__;若两操作数为无符号数,计算结果是否正确___正确____?若两操作数为带符号数,计算结果是否正确____不正确____?(5)指令MOV SUM, AL中目的操作数的寻址方式为_____基址变址寻址方式_____。
认识实验 Keil使用简介
认识实验 Keil使用简介
1.3 编译、连接
在设置好工程后,即可进行编译、连接。选择 菜单 Project→Build target,对当前工程进行连 接,如果当前文件已修改,软件会先对该文件进行 编译,然后再连接以产生目标代码;如果选择
Rebuild All target files 将会对当前工程中的
断点设置的方法有多种,常用的是在某一程序行设置断点,设置
好断点后可以全速运行程序,一旦执行到该程序行即停止,可在此 观察有关变量值,以确定问题所在。
在程序行设置/移除断点的方法是将光标定位于需要设置断点的程
序行,使用菜单 Debug->Insert/Remove BreakPoint 设置或移除 断点(也可以用鼠标在该行双击实现同样的功能);Debug>Enable/Disable Breakpoint 是开启或暂停光标所在行的断点功 能;Debug->Disable All Breakpoint 暂停所有断点;Debug>Kill All BreakPoint 清除所有的断点设置。
CPU(即你所用芯片的型号,一般选择AT89C51)。选择 后再点击“确定”按钮,回到主界面。
在工程窗口的文件页中点击
“Target1” 前面 “+”号展开 ,点击“Source Group1”使其反白显示,点击鼠标右键 ,选中下拉菜单的“Add file to Group”Source Group1” ,出现一个对话框,寻找源文件,注意 “文件类型”的选 择,选中源文件后双击将其加入工程项目。(可加入多个 文件)
观察窗口是很重要的一个窗口,工程窗口中仅可以观察到
工作寄存器和有限的寄存器如 A、B、DPTR 等,如果需要 观察其它的寄存器的值或者在高级语言编程时需要直接观察 变量,就要借助于观察窗口了。
单片机实验-寻址方式和指令系统实验指导书
实验6. 寻址方式和指令系统一.实验目的1.了解MSP430G2xxx汇编格式指令和常用寻址方式2.了解C语言函数调用过程3.通过反汇编了解C编译器实现初始化变量的方法4.掌握计算机中数的表示和编码二. 实验任务1.汇编格式指令和寻址方式的学习(可在simulator下完成)L6_1.c源程序见下,建立C项目,进入DEBUG状态,点击view/disassembly,在反汇编窗口得到L6_1.c汇编格式指令的程序代码,如图6-1和图6-2,阅读该程序的汇编格式代码,思考:1) 程序用到了哪些指令?2) 程序用到了哪几种寻址方式?3)用单步执行命令F11,跟踪函数delay的调用和返回,用view/register和view/ memory查看堆栈指针SP和堆栈内的内容,记录堆栈指针SP和堆栈内容的变化;4) 修改l6_1.C,将变量i定义为全局变量,通过反汇编的代码,比较与定义为局部变量的不同;5) 修改L6_1.C, 将变量i的类型从 unsigned int 类型,改为unsigned long 类型,反汇编看看函数delay的代码发生了什么变化?程序执行的结果有什么不同?为什么?(需在实验板上运行)。
L66__1.c程序清单(提供电子版)图6-1 L6-1.c程序中main函数的反汇编代码图6-2 L6_1.c程序中delay函数的反汇编代码2. 了解C语言程序的执行过程(可在simulator 方式下完成)指令计数寄存器PC决定CPU取指令的地址,所以PC寄存器的内容决定了程序的流程。
已知MSP430G2xxx单片机复位后, PC寄存器从存储器0xFFFE~0xFFFFH单元获取一个字内容作为执行第一条指令的地址。
以L4_1.C的项目为例,请问实验中查看到该地址的值是多少?程序执行的第一条指令是什么指令?main函数的入口是单片机上电就被执行的第一条语句吗?说明:如图6-3,可在项目设置option/Debugger/set up中,去除对run to前的选项,再将程序下载到单片机中,观察当前上电复位PC的值与0xFFFE~0xFFFF存储单元内容的关系,对比不去除run to前的选项的不同。
寻址方式认知实验
黄淮学院电子科学与工程系单片机原理及应用课程基础性实验报告实验名称寻址方式认知实验实验时间2013 年月日学生姓名实验地点同组人员专业班级电子1101B1、实验目的1、熟悉51单片机的各种寻址方式,进一步理解和巩固课堂学习的内容。
2、初步掌握单片机汇编语言的设计和调试的基本方法。
3、熟悉Keil c51模拟仿真系统的调试工具的使用方法。
2、实验主要仪器设备和材料:计算机和单片机应用软件3、实验内容:(1)、编写如下参考程序,编译、模拟调试,并回答下列问题:MOV A, #30H ; 将立即数30H 送到累加器AMOV R0, #40HMOV @R0, A ;该指令语句中,目的操作数的寻址方式为;MOV R1, 40H ;运行到此,R1 的值为;END(2)、请在1题基础上,增加适当的语句,使地址42H的内部数据存储器单元,赋值为30。
(3)、编译、模拟调试运行,并回答下列问题:MOV A, #10MOV DPTR , #1000H ;指定外部数据存储器地址为1000HMOVX @DPTR , A ;将A的内容送DPTR间址的单元INC A ;累加器A 数值加1INC DPTR ;DPTR 地址值加1=1001HMOVX @DPTR , AINC AINC DPTRMOVX @DPTR , AEND指令序列完成的功能:.4、实验步骤:●新建一个工程项目文件。
●新建一个源文件,扩展名为.ASM。
●把新建一个源文件添加到工程项目中。
●编译项目并生成可编程PROM的以.HEX为扩展名的文件。
●编译完毕之后,选择【Debug】/【Start/Stop Debug Session】选项,即就进入仿真环境。
●单击【Debug】/【Go】或单击按钮,即可全速运行程序。
●在菜单【View】/【Memory Window】窗口中,选择查看程序运行的结果。
5、实验数据记录:(1)、编写如下参考程序,编译、模拟调试结果如下:单元地址 A R0 R1 40H单元内容3、编译、模拟调试运行结果如下:单元地址1000H 1001H 1002H单元内容6、实验数据的分析:。
寻址方式与基本指令实验
寻址方式与基本指令实验班级:软件工程1102班姓名:水雪利学号: 04113068日期:2013年5月13日一、试验目的(1)熟悉80x86寻址方式及基本指令的功能。
(2)掌握汇编语言程序设计上机过程和汇编语言源程序结构,为后续汇编语言程序设计打好基础。
(3)熟悉Microsoft的DEBUG使用方法。
二、实验内容1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。
(1)程序装入后,代码段寄存器CS的内容为_0771____H,代码段第一条可执行指令MOV AX, DATA对应的机器代码为b87007___H,它是一个_3__字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是___立即数寻址___,其值为__0770h___。
(2)执行完MOV DS, DATA指令后,数据段寄存器DS的内容为_0770___H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为___07700__H、07701__H和____07702____H。
(3)程序中第一条ADD AL, [BX] 指令对应的机器代码为_____0207_____H,它是一个_2_字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为__直接寻址___,该操作数所在存储单元的逻辑地址(DS): (BX)为_0771:000b___,其物理地址为_0771b___H;执行完该指令后(AL)=____0001__H,CF=_0_____,OF_0_____,ZF___1___,SF__1____,AF 0______,PF_0_____;若两操作数为无符号数,计算结果是否正确___是____?若两操作数为带符号数,计算结果是否正确__是______?若计算结果正确,结果是正数还是负数__负____?(4)执行完第二条ADD AL, [BX] 指令后(AL)=_0002_____H,CF=__1____,OF_1_____,ZF__1____,SF_0_____,AF__1____,PF_1_____;若两操作数为无符号数,计算结果是否正确___是____?若两操作数为带符号数,计算结果是否正确___否_____?(5)指令MOV SUM, AL中目的操作数的寻址方式为__寄存器间接寻址__。
keil c51实验报告
keil c51实验报告Keil C51实验报告引言:Keil C51是一款嵌入式系统开发工具,被广泛应用于单片机编程和开发。
本实验报告将介绍在使用Keil C51进行单片机编程时的一些实验结果和经验总结。
一、实验背景在嵌入式系统开发中,单片机是最常用的控制器之一。
单片机的编程需要使用特定的开发工具,Keil C51就是其中之一。
Keil C51提供了强大的集成开发环境,使得单片机的编程工作变得更加高效和便捷。
二、实验目的本实验的目的是通过使用Keil C51开发工具,学习单片机的编程方法和技巧,并通过实验验证编写的程序的正确性和可靠性。
三、实验过程1. 硬件准备在进行实验之前,首先需要准备好所需的硬件设备,包括单片机开发板、电源、连接线等。
确保硬件设备的连接正确且稳定。
2. 软件安装下载并安装Keil C51开发工具,根据提示进行相应的设置和配置。
确保软件的安装和配置正确。
3. 编写程序使用Keil C51开发工具,编写所需的程序。
根据实验要求和目标,编写相应的代码,并进行调试和测试。
在编写过程中,可以使用Keil C51提供的丰富的函数库和工具,提高编程的效率和质量。
4. 烧录程序将编写好的程序通过编程器烧录到单片机中。
确保烧录的程序正确无误。
5. 实验验证将烧录好的单片机连接到实验电路中,进行实验验证。
通过观察实验结果和数据,判断编写的程序是否达到了预期的效果和要求。
四、实验结果与分析通过使用Keil C51进行单片机编程实验,我们得到了以下实验结果和分析:1. 实验一:LED闪烁在这个实验中,我们使用Keil C51编写了一个简单的程序,控制LED灯的闪烁。
通过调试和测试,我们成功地实现了LED灯的闪烁效果。
这个实验验证了我们对Keil C51开发工具的基本掌握程度。
2. 实验二:温度传感器读取在这个实验中,我们使用Keil C51编写了一个程序,通过温度传感器读取环境的温度值,并将其显示在数码管上。
单片机实验报告内容
实验一(1) KEIL 软件使用实验一、实验目的1.熟悉keil 公司µVision 集成开发环境;2.掌握keil 软件使用方法;3.了解keil 软件的软仿真功能。
二、实验仪器和设备Keil 软件;THKSCM-2综合实验装置;三、实验原理及实验内容1.µVision 的界面以µVision2/3为例,其界面如图一所示。
首先它有一般应用软件的典型风格,如具有菜单栏和快捷工具栏,另外可以打开的主要界面是工程窗口和对应的文件编辑窗口、运行信息显示窗口、存储器信息显示窗口及调试信息显示窗口等。
图一µVision 的界面为了便于单片机资源的观察,在工程窗口可以展开Register 标签,从而可以方便地观察工程窗口编辑窗口运行信息显示窗口存储器信息窗口变量观察窗口片内外设窗口虚拟串口单片机寄存器的状态;打开存储器信息显示窗口可以显示ROM、RAM的内容;还可以打开多种窗口用于应用软件的调试。
2.目标程序的生成(1)建立工程为了获得目标程序,通常需要利用多个程序构成工程文件,这些程序包括汇编语言源文件、C语言源文件、库文件、包含文件等;生成目标文件的同时,还可以自动生成一些便于分析和调试目标程序的辅助文件,如列表文件等。
对这些文件需要进行较好的管理与组织,常用的办法就是建立一个工程文件。
用鼠标单击Project菜单的下拉选项New µVision Project,在弹出的窗口中输入准备建立的工程文件名(不用输入扩展名,系统会自动添加)。
如输入文件名:lx1。
为了便于管理,建议为该工程建立一个独立的文件夹,如lx1。
(2)配置工程刚建立的工程仅是一个框架,应该根据需求添加相应的程序。
在工程窗口的Source Group 1处单击鼠标右键会弹出一个菜单,点其中的选项Add Files to Group ‘Source Group 1’,在弹出的窗口中改变文件类型,填入文件名。
指令系统的寻址方式_单片机原理及应用技术-基于Keil C和Proteus仿真_[共3页]
第3章 单片机编程语言 31(12)C 或Cy :进位标志位或位处理机中的累加器。
(13)@:间接寻址寄存器或基址寄存器的前缀,如@Ri 、@A+DPTR 。
(14)(х):表示х地址单元或寄存器中的内容。
(15)((х)):表示以х单元或寄存器中的内容作为地址再间接寻址单元的内容。
(16)→:箭头右边的内容被箭头左边的内容所取代。
3.1.4 指令系统的寻址方式寻址方式是指在执行一条指令的过程中,寻找操作数或操作数地址的方式。
一般寻址方式越多,功能就越强,灵活性就越大,指令系统就越复杂。
STC89C52单片机的寻址方式和传统的MCS-51单片机的寻址方式一致,包含操作数寻址和指令寻址两个方面,但寻址方式更多是指操作数的寻址,而且如果有两个操作数时,默认是源操作数的寻址方式。
本节仅介绍操作数的7种寻址方式,如表3-1所示。
表3-1寻址方式 序号寻址方式 寻址空间 1立即数寻址 程序存储器中的立即数 2直接寻址 内部128 B RAM 、特殊功能寄存器3寄存器寻址 R0~R7、A 、B 、C (位)、DPTR 等 4寄存器间接寻址 片内数据存储器、片外数据存储器 5基址加变址寻址 读程序存储器固定数据和程序散转 6相对寻址 程序存储器相对转移 7 位寻址 内部RAM 中的可寻址位、SFR 中的可寻址位下面分别介绍指令系统的这7种数据寻址方式。
1.立即数寻址直接在指令中给出操作数即立即数,就是放在程序存储器内的常数。
为了与下面介绍的直接寻址指令中的直接地址加以区别,需在操作数前加前缀标志“#”。
【例3-2】MOV A ,#7AH ;机器码74H 7AH ,把立即数7AH 送累加器A 。
图3-1 例3-2图2.直接寻址指令中直接给出操作数的单元地址,而不是操作数,该单元地址中的内容才是真正的操作数。
格式上没有“#”号,以区别于立即数寻址。
【例3-3】MOV A ,30H ;机器码为E5H 30H ,把直接地址30H 单元的内容送累加器A 。
实验一 指令功能训练
实验一指令功能训练
学习使用keil软件,复习指令,编写简单程序。
通过本次实验,能够能够使用Keil软件编写软件并进行调试。
实验提纲:
1、使用Keil软件建立工程。
(1)新建工程→选择器件→编写源程序→把源程序加入到工程下面的组里,使之成为工程的一部分。
(2)设置Keil软件,在“Target”属性页设置“Xtal”,为12MHz,在“output”属性页选中“Create Hex File”。
(3)编辑、编译源程序,进行调试直至语法无误。
(4)进入调试状态,使用“Debug”菜单,进入调试界面。
(5)单步运行,观察特殊功能寄存的变化。
观察存储器的值:在“View”菜单,选“Memory Window”菜单,会弹出观察窗口。
数据存储器00H—7FH,可以直接寻址和间接寻址,键入d:0x××或i: 0x××可以观察或修改该存储单元的值。
外部数据存储:键入x: 0x××××可以观察或修改该存储单元的值。
程序存储器:键入c: 0x××××可以观察该存储单元的值。
2、指令寻址方式训练
(1)立即寻址:
(2)直接寻址:
(3)寄存器寻址
(4)间接寻址
(5)相对寻址
(6)变址寻址
(7)位寻址
3、指令训练
(1)数据传送指令
(2)算术运算指令
(3)逻辑运算指令
(4)控制转移指令
(5)位操作指令。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一指令与寻址方式认知实验
一、实验目的
1.了解单片机基本指令及其寻址方式;
2.掌握在µVision环境中查看指令操作结果的技巧。
二、实验仪器和设备
Keil软件;THKSCM-2综合实验装置;
三、实验原理及实验内容
1.示例及相关设置
(1)建立一个文件夹:lx31。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx31.asm文件名存盘到lx31文件夹中。
ORG 0000H
MAIN:MOV R7,#16
MOV A,#00H
MOV R0,#30H
LP:MOV @R0,A
INC R0
INC A
DJNZ R7,LP
SJMP $
END
(3)在lx31文件夹下建立新工程,以文件名lx31存盘(工程的扩展名系统会自动添加)。
(4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置:
○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。
○2晶振频率设为11.0592MHz。
○3Output标签下的Create HEX File前小框中要打钩。
○4在Debug标签选择Use Simulator(软件模拟)。
(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。
利用单步、执行到光标处两种方法运行程序,观察程序运行的结果。
(6)分析程序的功能,研究观察以下指令的寻址方式及其操作效果。
2.示例及相关设置
(1)建立一个文件夹:lx32。
(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx32.asm文件名存盘到lx32文件夹中。
ORG 0000H
MOV R0,#20H
MOV R1,#22H
MOV A,@R0
ADD A,@R1
MOV 24H,A
INC R0
INC R1
MOV A,@R0
ADDC A,@R1
MOV 25H,A
SJMP $
END
(3)在lx32文件夹下建立新工程,以文件名lx32存盘(工程的扩展名系统会自动添加)。
(4)在Project菜单的下拉选项中,单击Options for Target ‘Target1’,在弹出的窗口中要完成一下设置:
○1单片机芯片选择AT89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。
○2晶振频率设为11.0592MHz。
○3Output标签下的Create HEX File前小框中要打钩。
○4在Debug标签选择Use Simulator(软件模拟)。
(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。
利用单步、执行到光标处两种方法运行程序,观察程序运行的结果。
(6)分析程序的功能,说明指令ADDC A,@R1与ADD A,@R1的异同。
(7)设计小程序,观察以下几组指令的操作效果:
ADD、ADDC;
AJMP、SJMP;
MOV、MOVC;
XCD、XCHD、SW AP;
ANL、ORL;
DJNZ;
JZ、JC;
RL、RLC等。
(8)设计小程序,研究一下指令,观察堆栈的操作效果:
PUSH、POP;
ACALL、RET。
四、实验结果和数据分析
问题:1、完成三中1与2的(5)(6)两步,并写出结果。
2、结合三中第2的(7)(8)两步设计一个小程序,并给出结果。