单片机汇编语言实验教程(1).
汇编语言实验一
实验一查看CPU和内存,用机器指令和汇编指令编程一.实验目的:掌握DEBUG 的基本命令及其功能二.实验内容:1. 预备知识:Debug的使用(1) 什么是Debug?Debug是DOS、Windows都提供的实模式(8086方式)程序的调试工具。
使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。
(2) 我们用到的Debug功能●用Debug的R命令查看、改变CPU寄存器的内容;●用Debug的D命令查看内存中的内容;●用Debug的E命令改写内存中的内容;●用Debug的U命令将内存中的机器指令翻译成汇编指令;●用Debug的T命令执行一条机器指令;●用Debug的A命令以汇编指令的格式在内存中写入一条机器指令。
(3) 进入DebugDebug是在DOS方式下使用的程序。
我们在进入Debug前,应先进入到DOS方式。
用以下方式可以进入DOS:①重新启动计算机,进入DOS方式,此时进入的是实模式的DOS。
②在Windows中进入DOS方式,此时进入的是虚拟8086模式的DOS。
(4) 用R命令查看、改变CPU寄存器的内容1)显示CPU内部所有寄存器内容和标志位状态;格式为:-R2)显示和修改某个指定寄存器内容,格式为:-R 寄存器名若要修改一个寄存器中的值,比如AX中的值,可用R命令后加寄存器名来进行,输入“r ax”后按Enter键,将出现“:”作为输入提示,在后面输入要写入的数据后按Enter 键,即完成了对AX中内容的修改。
若想看一下修改的结果,可再用R命令查看(5) 用Debug的D命令查看内存中的内容1)格式:-d 段地址:偏移地址,Debug将列出从指定内存单元开始的128个内存单元的内容。
使用D命令,Debug将输出3部分内容,如图2.34所示。
中间是部分从指定地址开始的128个内存单元的内容,用十六进制的格式输出,每行的输出从16的整数倍的地址开始,最多输出16个单元的内容。
51单片机汇编语言教程
51单片机汇编语言教程汇编语言是一种低级程序设计语言,直接操作计算机硬件,能够充分发挥硬件的性能,是学习嵌入式系统开发的基础。
而51单片机是广泛应用于嵌入式系统中的一种微控制器,具有功能强大、易于掌握等特点。
本篇文章将为大家介绍51单片机汇编语言的基本概念、编程指令以及应用实例,帮助读者快速入门。
一、51单片机汇编语言概述1.1 51单片机简介51单片机是一种由英特尔公司设计的8位微控制器,其核心是一个CPU,具有RAM、ROM、I/O端口等外围设备。
它采用的是汇编语言编程,具有指令集简单、易于学习等特点,因此深受嵌入式系统开发者的喜爱。
1.2 汇编语言的基本概念汇编语言是一种低级语言,与高级语言相比,更接近计算机底层的硬件操作。
在汇编语言中,程序员通过编写指令来告诉计算机具体的操作,如数据存储、运算等。
二、51单片机汇编语言基础知识2.1 寄存器寄存器是51单片机中的一种重要的存储设备,用于存储数据、地址等信息。
51单片机共有32个寄存器,其中一部分用于存储通用数据,一部分用于存储特定功能的数据。
在汇编语言编程中,我们可以使用这些寄存器来存储数据和进行运算。
2.2 程序存储器程序存储器是51单片机中存储程序的地方,它可以分为ROM和RAM两种类型。
其中,ROM存储的是不可修改的程序代码,而RAM 存储的是可以读写的数据。
2.3 I/O端口I/O端口是51单片机与外部设备进行数据交互的接口,通过输入/输出指令,可以实现数据的输入与输出。
在汇编语言中,我们需要了解如何使用I/O端口来与外部设备进行通信。
三、51单片机汇编语言编程指令3.1 数据传输指令数据传输指令用于将数据从一个地方传输到另一个地方。
常用的数据传输指令有MOV、MOVC、MOVX等,通过这些指令可以实现数据的读取、存储和传输等操作。
3.2 算术运算指令算术运算指令用于对数据进行加、减、乘、除等运算操作。
51单片机中的算术运算指令包括ADD、SUB、MUL、DIV等,通过这些指令可以对数据进行各种运算操作。
单片机实验——汇编语言指令
成绩单片机原理及应用实验报告实验名称汇编语言指令实验班级姓名学号(后两位)指导教师实验日期实验一汇编语言指令一、实验目的1、掌握WAVE软件的使用,初步掌握程序的调试方法,包括跟踪、单步运行和断点设置等。
2、熟悉MCS-51单片机的指令系统。
二、实验内容完成以下内容:1、假定外部数据存储器2000H单元的内容为80H,执行下列指令后,累加器A中的内容是( 80H ):MOV DPTR,#2000HMOVX A,@DPTR注意:完成本实验,需完成题目的“假定”条件,将外部数据存储器2000H单元预先赋值,如何实现?2、执行下列指令后,(SP)的内容是(07H ),61H单元的内容是(25H ),62H单元的内容是( 80H).MOV SP,#60HMOV ACC,#25HMOV B,#80HPUSH ACCPUSH B3、执行下列指令后,A的内容是(85H),CY的内容是(1),AC的内容是(1),OV的内容是(1)。
MOV A,#85HMOV R0,#20HMOV 20H,#0AFHADD A,@R04、假定(A)=0FFH,执行下列指令后,A的内容是(86H ),R3的内容是(10H ),30H的内容是(OF1H或241),40H的内容是(01H )。
MOV R3,#0FHMOV 30H,#0F0HMOV R0,#40HMOV 40H,#00HINC AINC R3INC 30HINC @R05、假定(A)=059H,(R5)=73H,执行下列指令:ORG 0000HMOV A,#059HMOV R5,#73HADD A,R5DA AEND后,A的内容是(),CY的内容是()。
6、程序如下:MOV A, #0BFHMOV 20H, #85HSETB CADDC A, 20H结果为:(A)= 45H CY=1 AC=1 OV=1 P=17、程序如下:MOV A, #0BFHMOV 20H, #85HSETB CSUBB A, 20H结果为:(A)= CY= AC= OV= P=8、假定(A)=0FH,(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH,执行下列指令:ORG 0000HMOV A,#0FHMOV R7,#19HMOV 30H,#00HMOV R1,#40HMOV 40H,#0FFHDEC ADEC R7DEC 30HDEC @R1END后,A的内容是(),R7的内容是(),30H的内容是(),40H的内容是()。
单片机汇编实验报告
单片机汇编实验报告1. 实验目的本实验旨在通过编写单片机汇编程序,掌握单片机的基本操作,理解汇编语言和单片机的工作原理。
2. 实验器材•STC89C52单片机开发板•串口线•电脑3. 实验原理单片机是一种集成了处理器、存储器、输入输出设备等功能的微型计算机系统。
通过编写汇编语言程序,可以利用单片机的内部寄存器和外部接口,实现各种功能。
4. 实验步骤步骤一:准备工作1.将STC89C52单片机开发板与电脑通过串口线连接。
2.打开开发板电源,确保电源工作正常。
步骤二:编写汇编程序1.打开汇编语言编辑器,例如Keil C51。
2.创建一个新的汇编语言项目,命名为“experiment.asm”。
3.编写汇编程序,实现所需的功能。
例如,可以编写一个简单的程序,使LED灯闪烁。
步骤三:编译和烧录程序1.选择适当的编译选项,将汇编程序编译为二进制文件。
2.将生成的二进制文件烧录到单片机中。
可以使用烧录软件或者编程器完成这一步骤。
步骤四:连接外部电路1.根据需要,连接外部电路到单片机的GPIO引脚。
例如,如果需要控制LED灯,可以将LED的阳极连接到单片机的某个输出引脚,将LED的阴极连接到单片机的地。
步骤五:运行实验1.将开发板连接到电源,确保电源正常工作。
2.按下开发板上的复位按钮,使单片机开始执行程序。
3.观察实验现象,并记录下实验结果。
5. 实验结果与分析通过以上步骤,我们成功编写并烧录了一个简单的汇编程序到单片机中。
在运行实验时,LED灯按照程序的要求进行闪烁。
这表明我们的实验设计和编程是正确的。
6. 实验总结在本次实验中,我们通过编写汇编程序,学习了单片机的基本操作和工作原理。
通过实际操作,我们更好地理解了汇编语言的编写和单片机的工作方式。
同时,我们还学会了使用烧录软件将程序烧录到单片机中,并通过外部电路观察实验结果。
7. 实验改进在以后的实验中,我们可以尝试更复杂的功能,例如通过单片机控制电机或者LCD显示屏等。
单片机汇编语言入门实例
一、用单片机控制发光二极管图1为单片机控制发光二极管的实验电路图。
图中用P1口作为输出端,P1口的P1.0~P1.7引脚分别接了8个LED。
实例1:用单片机控制LED闪烁发光源程序如下:MAIN:SETB P1.0LCALL DELAYCLR P1.0LCALL DELAYLJMP MAINDELAY:MOV R7,#250D1:MOV R6,#250D2:DJNZ R6,D2DJNZ R7,D1RETEND程序说明:1、SETB P1.0:将P1.0口置“1”,既让P1.0输出高电平,让LED 熄灭。
2、LCALL DELAY:LCALL称为子程序调用指令,指令后面的参数DELAY是一个标号,用于标识第6行程序,执行LCALL指令时,程序转到LCALL后面的标号所指示的程序行处执行,如果执行指令过程中遇到RET指令,则程序就返回到LCALL指令下面的一条指令继续执行。
3、CLR P1.0:将P1.0口置“0”,既让P1.0输出低电平,让LED 亮。
4、LCALL DELAY:调用延时子程序DELAY。
5、LJMP MAIN:跳转到第1条指令处执行第1条指令。
6、第6~10条指令是一段延时子程序,子程序只能在被调用时运行,并有固定的结束指令RET。
7、END:不是S51单片机的指令,不会产生单片机可执行的代码,而是用于告诉汇编软件“程序到此结束”,这类用于汇编软件控制的指令称为“伪指令”。
延时程序说明:1、程序中的R6、R7代表工作寄存器的单元,用来暂时存放一些数据。
2、MOV指令的含义是传递数据。
指令“MOV R7,#250”的含义是:将数据250送到R7中。
250前面的“#”号表示250是一个数,而不是一个地址,“#”号后面的数称为立即数。
3、DJNZ指令后面有两个符号,一个是R6,一个是D2。
R6是寄存器,D2是标号。
DJNZ指令的执行过程是:将其后面第一个参数中的值减1,然后看这个值是否等于0,如果等于0,往下执行,如果不等于0,则转移到第二个参数所指定的位置去执行,这里是转移到由D2所标识的这条语句去执行。
51单片机汇编语言教程
51单片机汇编语言教程:1课:单片机简叙1、什么是单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
单片机是一种控制芯片,一个微型的计算机,而加上晶振,存储器,地址锁存器,逻辑门,七段译码器(显示器),按钮(类似键盘),扩展芯片,接口等那是单片机系统。
天!PC中的CPU一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。
不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只8只引脚。
为什么会这样呢?功能有强弱,打个比方,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。
另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。
既然如此,单片机的功能肯定不强,干吗要学它呢?话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用PIII?应用的关键是看是否够用,是否有很好的性能价格比。
所以8051出来十多年,依然没有被淘汰,还在不断的发展中。
2、MCS51单片机和8051、8031、89C51等的关系更多单片机学习资料请来我们平常老是讲8051,又有什么8031,现在又有89C51,89s51它们之间究竟是什么关系?MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
单片机汇编语言程序设计实验
单片机汇编语言程序设计实验一、实验目的掌握汇编语言设计、编程及程序的调试方法,并熟悉键盘操作。
二、实验内容(一)清零实验把7000H~70FFH的内容清零。
1、实验程序及框图2、实验步骤①当DVCC单片机仿真实验系统独立工作时(1)将固化区EPROM中实验程序目标码传送到仿真RAM区,操作如下:输入0后按F1键,再输入0FFF后按F2键,再输入0后按EPMOV稍等,系统返回初始状态,显示“P.”。
(2)根据表2—1所示,通过键盘输入实验程序的起始地址0030H,再按执行键EXEC,表示连续运行该程序,稍侯,按RESET键退出运行;如果以单步运行程序,则输入0030后,按SETP键,按一次执行一条语句,直到执行到003CH 为止,按MON键退出运行;如果以断点运行程序,则先输入003CH(断点地址),再按F1键,再输入0030(起始地址),然后按EXEC键执行程序,当执行到003CH 时自动停下来,此时按MON键退出。
(3)用存贮器读写方法检查7000H~70FFH中的内容应全是00H。
②当DVCC仿真实验系统联PC机时(1)在闪动“P.”状态,按PCDBG键;(2)在PC机处于在Win95/98软件平台下,单击DVCC图标。
(3)在“系统设置”选项中设定仿真模式为内程序、内数据。
对硬件实验4、5、6、7、8、9、12、15而言,仿真模式应设定为内程序、外数据。
(4)根据屏幕提示进入51/96动态调试菜单。
(5)联接DVCC实验系统(Ctrl+H)(6)装载目标文件(Ctrl+L)(7)设置PC起始地址(8)从起始地址开始连续运行程序(F9)或单步(F8)或断点运行程序(9)单步、断点运行完后,在存贮器窗口内检查7000H~70FFH中的内容是否全为00H(二)拆字实验把7000H的内容拆开,高位送7001H低位,低位送7002H低位。
7001H、7002H高位清零,一般本程序用于把数据送显示缓冲区时用。
汇编语言单片机实验
汇编语言单片机实验软件实验一数据传送一、实验目的1.熟悉KEIL软件的程序调试方法2.掌握从外部数据存储器传送到内部存储器的指令3.掌握算术运算指令二、实验内容本实验为软件实验:数据传送实验。
这个实验包括两个小实验:1.从外部数据存储器传送到内部RAM中;2.求16个学生的年龄之和,数据存放在20H单元中。
此实验均可在脱机模拟状态下调试运行,也可以连接上仿真器与实验箱在线仿真运行。
1.从外部数据存储器传送到内部RAM中本实验在程序编译之前,将外部数据存储器(XDA TA)和内部数据存储器(DATA)窗口打开,并在XDA TA窗口在0000H、0001单元分别键入54H、55H。
然后程序单步运行或全速运行,观察寄存器A,B,DPTR,R1,R2,R3的值是不是如程序所希望的那样变化,最后看R3的值是不是54H+55H=A9H。
实验源程序如下:ORG 00HAJMP STARTORG 30HSTART: MOV A, #56HMOV B, #78HMOV DPTR, #00HMOVX A, @DPTRMOV R1, AINC DPTRMOVX A, @DPTRADD A, R1MOV R3, AHERE: AJMP HEREEND2.求16个学生的年龄之和程序运行前,先将16个学生的年龄放在内部数据区20H单元开始的地方,码制为BCD码,程序运行结束时,16个学生的年龄和放在寄存器A和B中(B为高位,A为低位)。
实验源程序如下:ORG 00HAJMP STARTORG 30HSTART: MOV R0, #20HMOV R7, #16MOV A, #00HMOV B, ALOOP: ADD A, @R0DA AJNC NEXTINC BNEXT: INC R0DJNZ R7, LOOPHERE: SJMP HEREEND三、实验步骤1.运行KEIL软件2.新建项目 project/new project/3.保存项目选择保存项目的名称和位置如abc.uv2选择单片机的CPU型号如atmel公司的 89c524.新建源文件 file/new5.输入源程序6.保存源文件 file/save as 选择保存的名称和位置,如abc.a517.将源文件加入项目中source group 1 右键选择“add file to group”选择源文件点击确定8.编译项目 rebuild all target files9.调试程序单击start/stop debug session 进入程序调试状态10.单步执行程序,或者全速、断点执行程序 debug/step(go)11.查看执行结果view/memory window address d:00h 内部RAMX:0000H 外部RAMC:0000H ROM可以查看相应存储器内的内容或者选择 view/watcha and call stack window 查看相应变量内容12.给相应单元赋值,并执行程序,记录执行结果,写出实验报告。
单片机汇编语言程序设计
6.定义空间指令DS
指令格式:
地址
ROM
[标号:]DS <表达式>
2000H
说明:DS伪指令是定义存储区,即从标
2001H 号指定的单元开始保留表达式所代表的
存储单元数。
2002H
【例】
2003H
ORG 2000H
单片机汇编语言程序设计
单片机汇编语言程序设计
1.1 源程序的编辑与汇编
1.源程序的编辑 源程序的编写要依据80C51汇编语言的基本规则,特别要用好常用
的汇编命令(即伪指令),例如: ORG 0040H MOV A,#7FH MOV R1,#44H END
这里的ORG和END是两条伪指令,其作用是告诉汇编程序此汇编源程 序的起止位置。编辑好的源程序应以.ASM扩展名存盘,以备汇编程序调 用。
这里使用的“字符名称”不是标号,不能用“:”来隔分隔符;其 中的“项”可以是一个数值,也可以是一个已经有定义的名字或可以求 值的表达式。该指令的功能是将一个数或特定的汇编符号赋予规定的字 符名称。用EQU指令赋值的字符名称可以用做数据地址、代码地址、位 地址或直接当做一个立即数使用。因此,给字符名称所赋的值可以是8 位二进制数,也可以是16位二进制数。
置循环初值
置循环初值
循环体
N 循环条件? Y
循环条件? Y
N 循环体
(a)先处理后判断方式
(b)先判断后处理方式
4.子程序结构 在汇编语言程序设计时,通过循环程序可以解决连续重复执行同
一程序段的问题,而对于不连续重复执行同一程序段的问题,为避免 重复编制程序,节省程序代码所占的存储空间,可将其编制成独立的 程序即子程序,在需要的位置采用特定的指令调用该子程序,执行后 再返回到调用位置继续执行后序程序指令。子程序调用是实现I/O操 作的重要方法。
51单片机汇编语言教程(精华版本)
30H
②
①
第2章 单片机结构及原理
①区共有32个字节单元(00H~ 1FH),分为4组,每组8个单元, 命名为工作寄存器R0~R7)。
任一时刻CPU只能选用一组工作寄
存器为当前工作寄存器组。
30H
当前工作寄存器组通过PSW中 的RS1和RS0标志位(工作寄存 器组指针)进行设置。
①
PSW7 CY 位7
RAM
作用:存放程序运行结果
字长:8位
30H
数量:256B
第2章 单片机结构及原理
低128B( 00H~7FH )为普通RAM区 高128B (80H~FFH)为特殊功能寄存器区
第2章 单片机结构及原理
(1) 低128字节的区域
①工作寄存器区(00H-1FH)
③
②可位寻址区(20H-2FH)
③用户RAM区(30H-7FH)
(最后一组不足时左边添0凑齐4位)
记忆: 1010B = 0AH 1011B = 0BH
1100B = 0CH
1101B = 0DH 1110B = 0EH 1111B = 0FH
第1章 单片机基础知识概述
(4)十进制整数转换成二、十六进制整数
转换规则:“除基取余”。十进制整数不断除以转换进制 基数,直至商为0。每除一次取一个余数,从低位排向高位。
第1章 单片机基础知识概述
二进制:0、1 ;规则:逢二进一,后缀为B。 一般表达式为:
N B bn1 • 2n1 bn2 • 2n2 b1 • 21 b0 •20
其中,基数为2,各位加权数为0,1。 例如:
1101B 1 23 1 22 0 21 1 20
第1章 单片机基础知识概述
30H
51单片机汇编语言及C语言经典实例解析
51单片机汇编语言及C语言经典实例实验及课程设计一、闪烁灯如图1 所示为一简单单片机系统原理图:在P1.0 端口上接一个发光二极管L1,使L1 在不停地一亮一灭,一亮一灭的时间间隔为0.2 秒。
延时程序的设计方法,作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为0.2 秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:如图4.1.1 所示的石英晶体为12MHz,因此,1 个机器周期为 1 微秒,机器周期微秒如图 1 所示,当P1.0 端口输出高电平,即P1.0=1 时,根据发光二极管的单向导电性可知,这时发光二极管L1 熄灭;当P1.0 端口输出低电平,即P1.0=0 时,发光二极管L1 亮;我们可以使用SETB P1.0 指令使P1.0端口输出高电平,使用CLR P1.0 指令使P1.0 端口输出低电平。
C 语言源程序#include <AT89X51.H>sbit L1=P1^0;void delay02s(void) //延时0.2 秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}void main(void){while(1){L1=0;delay02s();L1=1;delay02s();}汇编源程序ORG 0START: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP START DELAY: MOV R5,#20 ;延时子程序,延时0.2 秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND图2 程序设计流程图图1 单片机原理图二、多路开关状态指示如图 3 所示,AT89S51 单片机的 P1.0-P1.3 接四个发光二极管 L1-L4,P1.4-P1.7 接了四个开关 K1-K4,编程将开关的状态反映到发光二极管上。
单片机实验汇编语言程序
MOV TL0,#0B0H
MOV 30H,#3FH
MOV 31H,#3FH
MOV 32H,#3FH
MOV 33H,#3FH
MOV 34H,#3FH
ACALL DISP
MOV R6,#3
MOV R7,#0
实验二 软件延时控制实验
ORG 000
AJMP MAIN
ORG 30H
MAIN:
MOV P1,#0EFH
MOV A,#0EFH
AA1:
CALL DELAY
CALL DELAY
org 30h
main:
mov tmod,#00000110b
mov th0,#255
mov tl0,#255
mov r3,#0
setb ea
setb et0
setb tr0
ajmp $
DOT0:
MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R3,AA1
MOV R3,#10
MOV A,R4
RR A
MOV R4,A
MOV P1,A
AA1:
RETI
实验五 计数控制实验
org 0Leabharlann 0 ajmp main org 0bh
ajmp dot0
AA2:
DJNZ R4,AA2
DJNZ R3,AA3
RET
实验三 按键检测与控制实验
ORG 000H
AJMP MAIN
ORG 30H
MAIN:
MOV A,P2
汇编语言实验
实验一汇编语言源程序的输入一、实验目的1.通过实验了解和熟悉微机系统的配置。
2.学习在DEBUG状态下输入汇编源程序的方法。
3.初步掌握调试(在DEBUG状态下)的过程。
二、实验原理1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。
用单步跟踪的方法验证指令的功能。
2. 以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行结果。
注:⑴微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”;⑵在DEBUG状态下执行程序时,“INT 20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CS和IP寄存器原来的值。
三、实验仪器微机一台,软盘一块。
四、实验步骤1.开机和关机操作顺序开机:先打开微机外部设备电源开关,如显示器、打印机,最后打开主机电源开关。
关机:与开机相反,先关掉主机电源开关,然后关闭所有外设的电源开关。
2. 开机之后,把已准备好的PC-DOS系统软盘插入到A驱动器中,等待微机系统自检完成。
若自检无故障,计算机将自动引导A驱动器的DOS操作系统,实现DOS系统的启动,并出现提示符:A >若微机系统带有硬盘驱动器,且PC-DOS操作系统已装入硬盘,机器自检后(A驱动器门应打开),可以在硬盘上直接启动PC-DOS操作系统,此时,出现提示符:C >若计算机启动、自检出现故障,不能启动DOS系统时,可同时按下Ctrl+Alt+Del三个键,再重新启动一次(热启动),或关断主机电源重新送电一次(冷启动),若再失败,说明主机确有故障,应停止上机。
3. 装入DEBUG程序若计算机系统启动正常,可以从磁盘上调用DEBUG程序到内存。
一般C盘上或PC-DOS软盘上装有DEBUG软件,若没有,可以用COPY命令从其它盘拷贝过来,然后从装有DEBUG的磁盘上调用DEBUG程序。
例如:C > DEBUG↙(↙回车符)-(-DEBUG 提示符)或A > DEBUG-当显示器出现提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。
实验五汇编语言程序设计实验(一)
实验五汇编语言程序设计实验(一)一、实验目的1、了解和掌握汇编语言子程序和主程序的设计。
2、掌握循环程序的设计。
3、掌握汇编语言主程序与子程序的调用和参数传递。
4、进一步熟悉在PC机上建立,汇编,链接,调试和运行8086、8088汇编语言程序的过程。
二、实验内容1、复习汇编语言源程序的上机过程:2、编写一个完整程序(包含循环设计和子程序设计)在以strg为首地址的缓冲区中存放着1个字符串,以-1作为结束标志,编程统计字符串长度,并将结果存入lenth单元。
要求统计字符串用子程序完成。
data segmentstrg db ‘abcd’,-1lenth dw ?data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axlea dx,strgcall scountmov lenth,bxmov ah,4chint 21hscount proc nearpush sixor bx,bxmov si,dxnext:cmp byte ptr[si],-1jz overinc bxinc sijmp nextover:pop siretscount endpcode endsend start三、实验器材IBM PC 微机一台四、实验要求1、正确理解本次实验的目的,内容和原理。
2、能编写相应的程序五、实验报告要求完成下面任务:从键盘输入1个长度小于100的字符串,存入以buff 为首地址的缓冲区,其中如有大写字母,要求用子程序转换成小写字母,字符串以回车键作为结束。
写出操作步骤,程序清单,程序注释,实验现象。
51单片机C语言实验及实践教程1
51单片机C语言实验及实践教程第一章:硬件资源模块第二章:keil c 软件使用at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅1.闪烁灯at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅2.模拟开关灯at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅3.多路开关状态指示at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅4.广告灯的左移右移at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅5.广告灯(利用取表方式)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅6.报警产生器at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅7.I/O并行口直接驱动LED显示at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅8.按键识别方法之一at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅9.一键多功能按键识别技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅10.00-99计数器at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅11.00-59秒计时器(利用软件延时)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅12.可预置可逆4位计数器at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅13.动态数码显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅14.4×4矩阵式键盘识别技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅15.定时计数器T0作定时应用技术(一)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅16.定时计数器T0作定时应用技术(二)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅17.99秒马表设计at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅18.“嘀、嘀、……”报警声at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅19.“叮咚”门铃at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅20.数字钟(★)at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅21.拉幕式数码显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅22.电子琴at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅23.模拟计算器数字输入及显示at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅24.8×8LED点阵显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅25.点阵LED“0-9”数字显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅26.点阵式LED简单图形显示技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅27.ADC0809 A/D转换器基本应用技术at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅28.数字电压表at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅29.两点间温度控制at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅30.四位数数字温度计at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅31.6位数显频率计数器at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅32.电子密码锁设计at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅33.4×4键盘及8位数码管显示构成的电子密码锁at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅34.带有存储器功能的数字温度计-DS1624技术应用at89s51单片机实验及实践课题┅┅┅┅┅┅┅┅┅┅┅35DS18B20数字温度计使用第一章AT89S51单片机实验及实践系统板简介AT89S51单片机实验及实践系统板(以后简介系统板)集成多个硬件资源模块,每个模块各自可以成为独立的单元,也可以相互组合,因此,可以为不同阶层的单片机爱好者及单片机开发者提供不同的开发环境。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文由zaoangy贡献
doc文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
实验一熟悉MCS-51寻址方式及传送类指令
一.实验目的: 1.熟悉uVision2集成调试环境 2.熟悉
MCS-51寻址方式及传送类指令二.uVision2集成调试环境的使用uVision2是德国Keil Software公司用于多种嵌入式微处理器的一个理想、快速、
可靠的程序调试器。
此调试器包含一个高速模拟器,能够让你模拟整个8051
系统,包括片上外围.....器件和外部硬件。
1.创建项目uVision2是以项目来管理你的任务,它可以使你的8051应用系统设计变得简单。
要创建一个应用,你需要按下列步骤进行操作:①第一次使用,首先为我们编写的实验程序在D盘上新建一个文件夹D:\单片机实验;②启动uVision2,新建一个项目文件并从器件库中选择一个器件,操作步骤如下:直接在桌面上点击uVision2程序图标就可以启动它。
要新建一个项目文件,从uVision 2的Project菜单中选择New Project,这将打开一个标准的Windows对话框,此对话框要求你输入项目文件名,例如为实验一新建项目:D:\单片机实验\ex1.vu2。
紧接着,Select
Device for Target,即为你的项目选择一个CPU。
我们选择Gene ric下的8032。
2.新建一个源文件你可以用菜单选项File-New来新建一个源文件。
这将打开一个空的编辑窗口让你输入你的源代码。
编辑后,我们把我们的实验程序保存为D:\单片机实验\dpj1.asm。
3.将你的源文件加入到你的项目中在你的P roject Workspace窗口双击Target1及Suorce Group1,将你的目标系统一直展开到看到源文件组,如图1(a所示。
右击Suorce Group1,出现Add files选项, 选择它可打开一个标准的文件对话框,从对话框中选择你刚刚生成的文件dpj1.asm 。
(a
(b
图1Suorce Group1中的文件STARTUP.A51是大多数不同的8051CPU准备的启动代码。
我们暂且先不用它,用右键点击删除它(Remove File…STARTUP.ASM‟ 。
现在你的项目中只包含一个源文
件:dpj1.asm,如图1(b。
4.编译(或汇编你的源程序依次点击Project、Build Target即可编译(或汇编你的源程序 (留意一下,在工具栏上可找到相应快捷按钮。
在下面的输出窗口Output Window(如图2可看到编译(汇编的结果,应该没有错误才可继续下面实验。
否则修改你的源程序,直到没有错误为止。
如图2 4.调试你的程序依次点击Debug,Start/Stop Debug Session进入调试模式(也可利用快捷按钮,并且如再按一次该按钮,则又切回到程序编辑状态。
你现在就可以采用指令单步、函数单步、运行到光标处行、连续运行等命令调试你的程序(这些命令在Debug下Step、Step over,Run to Cursor line、Go。
也可利用快捷按钮。
你也可以设置断点后,连续执行程序进行调试。
如程序运行到中间想从头再来,只要按RST按钮即可。
常用调试快捷按钮符号Rst说明复位连续运行指令单步函数单步Go Step into Step over Run to Cursor line运行到光标处行Start/Stop Debug Session调试模式/编辑模式切换
5.存储器、寄存器的查看、修改在调试程序时,经常需要查看存储器内容,你可以查看80C52内的4个存储器逻辑空间的任一个。
在调试模式下,依次点击V iew,Memory Window,你可以看到包含4个存储器空间的窗口,你在第一个存储器空间的Address栏内输入C:0,即可看到从0000H开始的一段程序存储内容;你也可以在其它Address栏内分别填入X:0、D:0、I:0就可以查看外部数据存储器空间、直接寻址的片内存储空间(包括片内
00-7FH的RAM,及80H-0FFH的SFR、间接寻址的片内存储空间(包括片内00-7FH的RAM,及8032的80H-0FFH的数据RAM 。
如要修改Memory Window内存储单元内容,可用鼠标右键点击选定存储单元, 根据提示即可修改。
在Project Workspace窗口,你还可以看到8031的所
有寄存器,这对调试程序也很重要。
如要查看单片机的外围部件,像端口P0-
P3,定时器T0、T1等,可点击Peripherals。
三.传送类指令练习MCS-51
单片机的存储空间如表所示:
数据空间片内/片内片外寻址方式空间范围表示
方法RAM直接间接 00-7FH DATA片内SFR直接寻址80-FFH SFR RAM间接寻址80H-FFH IDATA片外RAM间接寻址0000-FFFFH XDATA片内ROM间接寻址0000-0FFFH CODE
程序空间片外ROM间接寻址0000-0FFFH CODE ROM 间接寻址1000H-0FFFF H CODE
1.直接寻址只能在DATA区和SFR中进行,如下例MOV A,
03H;把地址03H中的数移入累加器MOV43H,22H;把地址22H
中的数移入地址43H中MOV02H,C;把Cy中的数移入位地址02H
中MOV42H,#18H;把立即数18移入地址42H中MOV0 9H,
P1;把端口1中的数移入地址09H中 2.间接寻址要使用DPTR,PC,R0,
R1寄存器作为指针访问各存储器。
可访问的空间为CODE、IDATA、XDATA 存储区,对DATA存储区也可进行间接寻址。
只能用直接寻址方式对位地址进行寻址。
DATA和IDATA区寻址:MOV R1,#22H;设置R1为指向DATA区内的地址22H的指针MOV R0,#0A9 H;设置R0为指向IDATA区内的地址0A9H的指针MOV A,@R1;读入地址22H的数据MOV@R0,A;将累加器中的数据写入地址A9H INC R0;RO
中的地址变为AAH IN C R1;R1中的地址变为23H MOV34H,
@R0;将地址AAH中的数据写入34H MOV@R1 ,#67H;把立即数写入地址23H XDATA区寻址:MOV DPTR,#3048H;DPTR指向外部存储区MOVX A,@DPTR;读入外部存储区地址3048H中的数INC DPTR;指针加一 MOV A,#26H;立即数26H写入A中MOVX
@DPTR,A;将26H写入外部存储区地址3 049H中MOV R0,#87H; R0指向外部存储区地址87H MOVX A,@R0;将外部存储区地址87H
中的数读入累加器中CODE区寻址:MOV DPTR,#TABLE_BASE;DPTR 指向表首地址MOV A,#5;把偏移量(立即数5装入累加器中MOVC A, @A+DPTR;从表中读出数据到累加器中(5的平方
SJMP INDEX2TABLE_BASE:DB0,1,4,9,16,25,36;平方表INDEX2:MOV A,# 5;把偏移量(立即数5装入累加器中ADD A,
#2;由于SJMP EXIT指令占用2字节, 修正偏移量MOVC A,@A+PC;从表中读出数据到累加器中(5的平方SIMP EXIT EXI T:DB
0,1,4,9,16,25,36;平方表SJMP¥
四.实验步骤 1.熟悉uVision2集成调试环境的使用。
2.按照上述二.2条, 新建一源程序文本文档,并将第三步中字体为蓝色的程序录入。
3.
在已录入的程序前插入如下程序,作为内存初始化;dpj1MOV A,#0MOV
R0,#0FFH INI:MOV@R0, A INC A DJNZ R0,INI 4. 5. 6. 7.在录入的程序最后加上:END作为程序结束保存文件名为“dpj1.asm”(如该文件已存在,也可存为其它*.asm文件。
切换到调试模式,先将光标置于上述
内存初始化程序的下一行,也即第2步录入的正式程序的第一行,利用Run to Cursor line,直接将程序运行到正式程序的第一行。
单步逐条向下执行指令。
每执行一条指令,都要分析一下指令源操作数、目的操作数在存储空间的哪个单元,看一看你所理解的指令执行结果与实际运行结果是否符合,并且把每条指令执行后目的操作数的值记录下来。
将实验结果整理后写到实验报告上。
8.
1。