虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

指令<b>系统</b>分析

  • 离散实验 一个包的传递 用warshall

     实验源代码 //Warshall.cpp #include<stdio.h> void warshall(int k,int n) { int i , j, t; int temp[20][20]; for(int a=0;a<k;a++) { printf("请输入矩阵第%d 行元素:",a); for(int b=0;b<n;b++) { scanf ("%d",&temp[a][b]); } } for(i=0;i<k;i++){ for( j=0;j<k;j++){ if(temp[ j][i]==1) { for(t=0;t<n;t++) { temp[ j][t]=temp[i][t]||temp[ j][t]; } } } } printf("可传递闭包关系矩阵是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元关系的可传递闭包\n"); void warshall(int,int); int k , n; printf("请输入矩阵的行数 i: "); scanf("%d",&k); 四川大学实验报告 printf("请输入矩阵的列数 j: "); scanf("%d",&n); warshall(k,n); } 

    标签: warshall 离散 实验

    上传时间: 2016-06-27

    上传用户:梁雪文以

  • 计算机图形学

    第二章 习题参考答案    1. 问题定义的任务和主要工作? 问题定义的任务:将用户提出的要求具体化、定量化;确定研制系统的范围,明确研制的边 界。问题定义阶段的工作: (1) 通过调查研究,了解系统需求; (2) 确定系统的功能需求、性能需求、可靠性需求、安全及保密性、资源、开发费用及开发进度等的需求; (3) 问题定义阶段的产品——系统目标与范围说明书。 2.可行性研究目的?         确定在问题定义中所提出的问题是否值得去解,在限制条件下,问题能否解决。 3.可行性研究的任务? (1) 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型; (2) 从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性,为以后的行动提出建议; (3) 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划。 4.可行性研究包括哪几方面的内容? (1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足; (2)经济可行性:经济效益是否超出开发成本; (3)操作可行性:系统操作在用户内部行得通吗? (4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。 5.可行性研究的步骤? (1)复查系统的规模和目标; (2)研究目前正在使用的系统,总结现有系统的优劣,提出新系统的雏形; (3)导出新系统的高层逻辑模型; (4)推荐建议方案; (5)推荐行动方针; (6)书写计划任务书(可行性报告); (7)提交审查。 6. 可行性研究报告的主要内容? 可行性分析的结果是可行性研究报告,内容包括: (1) 系统概述:说明开发的系统名称,提出单位和开发单位。 (2) 可行性研究的前提:系统目标;要求;约束和限制;可行性研究的基本准则等。 (3) 对现有系统的分析:处理流程,图示说明现有系统的处理流程和数据流程;现有系统存在的问题。 (4) 系统需求:主要功能;主要性能及其要求;操作要求;信息要求;限制性要求。 (5) 建议系统:系统目标;处理流程;系统结构,功能,性能;系统技术可行性;投资和效益分析;操作可行性;法律可行性。 (6) 其它可选方案:与国内外同类型方案的比较;提出一两个可行性方案供论证和探讨。 (7) 制定下一阶段的预算。 (8) 结论性意见:由用户方、设计方和投资方共同签署意见。

    标签: 计算机图形学

    上传时间: 2017-11-05

    上传用户:小蚁123

  • 道理特分解法

    #include "iostream" using namespace std; class Matrix { private: double** A; //矩阵A double *b; //向量b public: int size; Matrix(int ); ~Matrix(); friend double* Dooli(Matrix& ); void Input(); void Disp(); }; Matrix::Matrix(int x) { size=x; //为向量b分配空间并初始化为0 b=new double [x]; for(int j=0;j<x;j++) b[j]=0; //为向量A分配空间并初始化为0 A=new double* [x]; for(int i=0;i<x;i++) A[i]=new double [x]; for(int m=0;m<x;m++) for(int n=0;n<x;n++) A[m][n]=0; } Matrix::~Matrix() { cout<<"正在析构中~~~~"<<endl; delete b; for(int i=0;i<size;i++) delete A[i]; delete A; } void Matrix::Disp() { for(int i=0;i<size;i++) { for(int j=0;j<size;j++) cout<<A[i][j]<<" "; cout<<endl; } } void Matrix::Input() { cout<<"请输入A:"<<endl; for(int i=0;i<size;i++) for(int j=0;j<size;j++){ cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl; cin>>A[i][j]; } cout<<"请输入b:"<<endl; for(int j=0;j<size;j++){ cout<<"第"<<j+1<<"个:"<<endl; cin>>b[j]; } } double* Dooli(Matrix& A) { double *Xn=new double [A.size]; Matrix L(A.size),U(A.size); //分别求得U,L的第一行与第一列 for(int i=0;i<A.size;i++) U.A[0][i]=A.A[0][i]; for(int j=1;j<A.size;j++) L.A[j][0]=A.A[j][0]/U.A[0][0]; //分别求得U,L的第r行,第r列 double temp1=0,temp2=0; for(int r=1;r<A.size;r++){ //U for(int i=r;i<A.size;i++){ for(int k=0;k<r-1;k++) temp1=temp1+L.A[r][k]*U.A[k][i]; U.A[r][i]=A.A[r][i]-temp1; } //L for(int i=r+1;i<A.size;i++){ for(int k=0;k<r-1;k++) temp2=temp2+L.A[i][k]*U.A[k][r]; L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r]; } } cout<<"计算U得:"<<endl; U.Disp(); cout<<"计算L的:"<<endl; L.Disp(); double *Y=new double [A.size]; Y[0]=A.b[0]; for(int i=1;i<A.size;i++ ){ double temp3=0; for(int k=0;k<i-1;k++) temp3=temp3+L.A[i][k]*Y[k]; Y[i]=A.b[i]-temp3; } Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1]; for(int i=A.size-1;i>=0;i--){ double temp4=0; for(int k=i+1;k<A.size;k++) temp4=temp4+U.A[i][k]*Xn[k]; Xn[i]=(Y[i]-temp4)/U.A[i][i]; } return Xn; } int main() { Matrix B(4); B.Input(); double *X; X=Dooli(B); cout<<"~~~~解得:"<<endl; for(int i=0;i<B.size;i++) cout<<"X["<<i<<"]:"<<X[i]<<" "; cout<<endl<<"呵呵呵呵呵"; return 0; } 

    标签: 道理特分解法

    上传时间: 2018-05-20

    上传用户:Aa123456789

  • 高压直流输电工程技术 第二版

    为了满足全国联网和两电东送的国家战略决策以及我国高压直流输电工程建设和运行的需要,考虑到高压直流输电技术的新发展并吸取国内外高压直流输电工程科研、设计、安装和运行的实际经验,结合葛洲坝—南桥、天生桥—广州、三峡—常州、三峡—广东、贵州—广东、三峡—上海、灵宝背靠背、高岭背靠背等大型直流输电工程的建设和运行,特组织修编了《高压直流输电工程技术(第二版)》一书。该书理论结合工程应用、全西系统、实用性较强,对我国高压直流输电工程的建设和运行具有重要的意义。   本书共十六章,主要内容有:直流输电概论、直流输电换流技术、直流输电稳态特性、直流输电控制系统与控制保护装置、直流输电系统故障分析与保护、换流站无功补偿与交流侧滤波、换流站直流侧滤波、直流输电系统过电压保护与换流站绝缘配合、直流输电外绝缘、直流输电线路环境影响、直流输电换流站主接线与主要设备、直流输电线路、直流输电接地极、背靠背直流输电工程、多端直流输电工程、直流输电工程可靠性分析及可用率等。 本书可供从事高压直流输电工程建设、设计、施工、运行、维护和检修,直流输电设备制造,电力系统规划设计与运行管理以及大功率换流技术等方面的专业技术人员、工程专家、管理干部等使用,也可以作为有关专业的研究生和大学生的参考书。

    标签: 高压直流输电工程

    上传时间: 2022-06-07

    上传用户:

  • 基于MATLAB的三相桥式半控整流电路的设计及仿真

    本设计首先简要介绍了MATLAB的特点以及在整流电路中的应用,通过对三相桥式半控整流电路实例进行分析讨论了三相桥式整流电路在不同控制角在电路带电感性负载和电阻性负载时输出负载电压的变化。然后利用MATLAB SIMULINK对电力电力电路进行仿真的方法,并给出了三相桥式整流电路在不同控制角在电路带电感性负载和电阻性负载的仿真波形,证实了该软件的简便直观、高效快捷和真实准确性。与理论分析进行对比,更容易发现电路中一些忽略的东西。用MATLAB系统建立模型和实际系统中的设计过程非常的相似,用户不用进行编程,也无需推到电路、系统的数学模型,就可以很快地得到系统的仿真结果,整个过程就像用笔在纸上画一样简单,通过对仿真结果分析就可以将系统结构进行改进或将有关参数进行修改使系统达到要求的结果和性能,这样就可以极大的加快系统的分析或设计过程,并使一些器件变更时对输出电压波形的对比更直观方便快捷关键词:MATLAB 三相半控桥 仿真模型 方便快捷

    标签: matlab 整流电路

    上传时间: 2022-06-19

    上传用户:

  • [从零开始学电子元器件识别与检测技术].李建清.扫描版

    电子元器件是组成电子电路的最小单位,也是修理中需要检测和更换的对象。本书对常用电子元器件的外形、性能、识别及检测技术进行了系统的分析,内容新颖、资料翔实、通俗易懂,具有较强的针对性和实用性。按照结构清晰、层次分明的原则,本书可分为以下几部分:第一部分为基本元器件篇。主要包括本书的第一章~第七章。重点介绍了电阻、电容、电感、变压器、二极管、三极管、场效应管、晶闸管的基本组成,识别方法和检测技巧。这些元器件是电路的基本组成元件,也是必须理解和掌握的内容。第二部分为特殊元器件篇。主要包括本书的第八章~第十二章。重点介绍了电声器件、石英晶体、陶瓷器件、开关、插接件、继电器、传感器和显示器件的识别及检测,这些元器件虽不如基本元器件应用广泛,但在电路中具有特殊的作用,是分析和理解电路的基础。第三部分为集成电路篇。主要包括本书的第十三章、第十四章。重点介绍了常用集成电路的分类、识别、检测和拆焊,并对应用十分广泛的集成稳压器进行了详细的分析。第四部分为贴片元器件篇。主要包括本书的第十五章。贴片状元器件(SMD/SMC)是无引线或短引线的新型微小型元器件,它适合于在没有通孔的印制板上安装,是表面组装技术(SMT)的专用元器件。目前,片状元器件已在计算机、移动通信设备、医疗电子产品等高科技产品和摄像机、彩电高频头、VCD机等家用电器中得到广泛应用。本篇重点分析了常用片状元件的性能及识别技巧,可供维修和使用片状元件时参考。本书具有较强的针对性和实用性,内容新颖、资料翔实、通俗易懂,同时,考虑到读者使用方便,对书中所给出的元器件均进行了认真的分类和总结。由于时间仓促,书中错漏之处在所难免,敬请广大读者批评指正。

    标签: 电子元器件

    上传时间: 2022-06-24

    上传用户:

  • VIP专区-嵌入式/单片机编程源码精选合集系列(4)

    VIP专区-嵌入式/单片机编程源码精选合集系列(4)资源包含以下内容:1. I2C接口设计文档.2. 非常有用的自抗扰pid控制器程序。搞控制的可以看看。.3. 卡尔曼滤波在化工传热过程中的应用.4. 交通灯模拟控制器.5. uc/os操作系统的文件系统源码.6. 999秒的定时器.7. 24CXX的读写操作.8. 12864LCM的应用实例.9. 开发源代码的CPU卡的COS源程序。.10. 汇编语言编写的抢答器设计报告.11. 用汇编语言编写的步进电机的课程设计.12. 微型计算机接口枪答器课程设计.13. tcp/ip 协议的源码.14. 2500ad 的6502 编译器资料.15. 6502 的编译器的源码和文档.16. cc65 的编译器文档.17. 一个汉字显示的例子(嵌入式).18. at29c040 card 读写程序源码.19. 嵌入式的命令行解释器.20. 研华数据采集卡PCI1713,PCI1720,PCL730测试程序.21. 在嵌入式系统DeltaSYSTEM中实现PING主机.22. 机器人的实时控制。VxWork,Windows系统在机器人控制方面的应用。链接来自 http://www.automationit.hut.fi.23. pci驱动程序的源代码.24. 在大型通信系统(机架插板式)中多块单板通过TDM总线.25. 嵌入式TCPIP协议.26. rtLinux源代码.27. pid学习资料代码.28. 多线程管理器源代码thread manager,VC开发的.29. s3c44b0的bootload程序.30. 在ADS和SDT上都可运行的S3C44B0的源程序.31. LCD的源代码.32. 在GNU上开发的应用程序源代码.33. 在线编辑WORD文档.34. 实时多任务系统内核分析.35. PLD实验参考源程序.36. 世界各国电话来电显示标准.37. 第十三届全国电源技术年会论文集锦.38. A CCITT-16 CRC calculator. The source contains both the calculated (smaller but slower) version, and.39. 8051 RC5 Decoder A simple RC5 decoder written in C . Written to emulate a SAA3049..40. 开源嵌入式数据库Berkeley DB-4.2.52.

    标签: EWB 数字电子技术 仿真实验

    上传时间: 2013-04-15

    上传用户:eeworm

  • 企业物资管理系统 为了使物资管理部门的责、权、利得到落实, 以提高总体的经济效益,采用J2EE 技术体系, 设计与实现了B/S 模式下的企业物资管理系统, 依据开发实例,分析了企业物资管理系统的

    企业物资管理系统 为了使物资管理部门的责、权、利得到落实, 以提高总体的经济效益,采用J2EE 技术体系, 设计与实现了B/S 模式下的企业物资管理系统, 依据开发实例,分析了企业物资管理系统的业务需求和设计目标, 详细讨论了系统的实现技术、实现方案及安全设计

    标签: J2EE 管理系统 模式 开发实例

    上传时间: 2015-10-22

    上传用户:liglechongchong

  • 电网月度(年度)检修计划图示化智能分析 技术报告。系统设计了通过B/S模型IE浏览器登陆系统网站上报检修计划

    电网月度(年度)检修计划图示化智能分析 技术报告。系统设计了通过B/S模型IE浏览器登陆系统网站上报检修计划,二级单位主任直接通过网页审批检修计划,实现了上报计划流程的网络化。

    标签: 检修 电网 IE浏览器

    上传时间: 2014-10-31

    上传用户:zaizaibang

  • 单片机指令系统原理

    单片机指令系统原理 51单片机的寻址方式 学习汇编程序设计,要先了解CPU的各种寻址法,才能有效的掌握各个命令的用途,寻址法是命令运算码找操作数的方法。在我们学习的8051单片机中,有6种寻址方法,下面我们将逐一进行分析。 立即寻址 在这种寻址方式中,指令多是双字节的,一般第一个字节是操作码,第二个字节是操作数。该操作数直接参与操作,所以又称立即数,有“#”号表示。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如:MOV  A,#3AH这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。MOV  DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。这里也特别说明一下:在80C51单片机的指令系统中,仅有一条指令的操作数是16位的立即数,其功能是向地址指针DPTR传送16位的地址,即把立即数的高8位送入DPH,低8位送入DPL。 直接寻址 直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。例如:MOV  A,30H  这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。 在80C51单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具体的说就是:1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形式给出。2、位寻址区。20H-2FH地址单元。3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV  IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是这条指令可以以MOV  IE,#85H 的形式表述,也可以MOV  80H,#85H的形式表述。 关于数据存储器RAM的内部情况,请查看我们课程的第十二课。 直接寻址是唯一能访问特殊功能寄存器的寻址方式! 大家来分析下面几条指令:MOV  65H,A       ;将A的内容送入内部RAM的65H单元地址中MOV  A,direct    ;将直接地址单元的内容送入A中MOV  direct,direct;将直接地址单元的内容送直接地址单元MOV  IE,#85H      ;将立即数85H送入中断允许寄存器IE 前面我们已学过,数据前面加了“#”的,表示后面的数是立即数(如#85H,就表示85H就是一个立即数),数据前面没有加“#”号的,就表示后面的是一个地址地址(如,MOV 65H,A这条指令的65H就是一个单元地址)。 寄存器寻址 寄存器寻址的寻址范围是:1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专用寄存器的学习中,我们已知道,是由程序状态字PSW中的RS1和RS0来确定的),因此在使用前常需要通过对PSW中的RS1、RS0位的状态设置,来进行对当前工作寄存器组的选择。2、部份专用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和进位位CY。 寄存器寻址方式是指操作数在寄存器中,因此指定了寄存器名称就能得到操作数。例如:MOV A,R0这条指令的意思是把寄存器R0的内容传送到累加器A中,操作数就在R0中。INC R3这条指令的意思是把寄存器R3中的内容加1 从前面的学习中我产应可以理解到,其实寄存器寻址方式就是对由PSW程序状态字确定的工作寄存器组的R0-R7进行读/写操作。 寄存器间接寻址 寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。 MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。用于寻址内部或外部数据存储器的256个单元。为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。例:MOV  R0,#30H  ;将值30H加载到R0中    MOV  A,@R0    ;把内部RAM地址30H内的值放到累加器A中    MOVX A,@R0    ;把外部RAM地址30H内的值放到累加器A中 大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。因用DPTR做为间址寄存器的寻址空间是64K,所以访问片外数据存储器时,我们通常就用DPTR做为间址寄存器。例:MOV   DPTR,#1234H  ;将DPTR值设为1234H(16位)    MOVX  A,@DPTR      ;将外部RAM或I/O地址1234H内的值放到累加器A中 在执行PUSH(压栈)和POP(出栈)指令时,采用堆栈指针SP作寄存器间接寻址。例:PUSH  30H    ;把内部RAM地址30H内的值放到堆栈区中堆栈区是由SP寄存器指定的,如果执行上面这条命令前,SP为60H,命令执行后会把内部RAM地址30H内的值放到RAM的61H内。 那么做为寄存器间接寻址用的寄存器主要有哪些呢?我们前面提到的有四个,R0、R1、DPTR、SP 寄存器间接寻址范围总结:1、内部RAM低128单元。对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。 2、外部RAM 64KB。对外部RAM64KB的间接寻址,应使用@DPTR作间址寻址寄存器,其形式为:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的单元的内容送入累加器A中。外部RAM的低256单元是一个特殊的寻址区,除可以用DPTR作间址寄存器寻址外,还可以用R0或R1作间址寄存器寻址。例如MOVX  A,@R0;这条指令的意思是,把R0指定的外部RAM单元的内容送入累加器A。 堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针SP作间址寄存器的间接寻址方式。 寄存器间接寻址方式不可以访问特殊功能寄存器!! 寄存器间接寻址也须以寄存器符号的形式表示,为了区别寄存器寻址我寄存器间接寻址的区别,在寄存器间接寻址方式式中,寄存器的名称前面加前缀标志“@”。 基址寄存器加变址寄存器的变址寻址 这种寻址方式以程序计数器PC或DPTR为基址寄存器,累加器A为变址寄存器,变址寻址时,把两者的内容相加,所得到的结果作为操作数的地址。这种方式常用于访问程序存储器ROM中的数据表格,即查表操作。变址寻址只能读出程序内存入的值,而不能写入,也就是说变址寻址这种方式只能对程序存储器进行寻址,或者说它是专门针对程序存储器的寻址方式。例:MOVC  A,@A+DPTR这条指令的功能是把DPTR和A的内容相加,再把所得到的程序存储器地址单元的内容送A假若指令执行前A=54H,DPTR=3F21H,则这条指令变址寻址形成的操作数地址就是54H+3F21H=3F75H。如果3F75H单元中的内容是7FH,则执行这条指令后,累加器A中的内容就是7FH。 变址寻址的指令只有三条,分别如下:JMP    @A+DPTRMOVC   A,@A+DPTRMOVC   A,@A+PC 第一条指令JMP @A+DPTR这是一条无条件转移指令,这条指令的意思就是DPTR加上累加器A的内容做为一个16位的地址,执行JMP这条指令是,程序就转移到A+DPTR指定的地址去执行。 第二、三条指令MOVC   A,@A+DPTR和MOVC   A,@A+PC指令这两条指令的通常用于查表操作,功能完全一样,但使用起来却有一定的差别,现详细说明如下。我们知道,PC是程序指针,是十六位的。DPTR是一个16位的数据指针寄存器,按理,它们的寻址范围都应是64K。我们在学习特殊功能寄存器时已知道,程序计数器PC是始终跟踪着程序的执行的。也就是说,PC的值是随程序的执行情况自动改变的,我们不可以随便的给PC赋值。而DPTR是一个数据指针,我们就可以给空上数据指针DPTR进行赋值。我们再看指令MOVC   A,@A+PC这条指令的意思是将PC的值与累加器A的值相加作为一个地址,而PC是固定的,累加器A是一个8位的寄存器,它的寻址范围是256个地址单元。讲到这里,大家应可明白,MOVC   A,@A+PC这条指令的寻址范围其实就是只能在当前指令下256个地址单元。所在,这在我们实际应用中,可能就会有一个问题,如果我们需要查询的数据表在256个地址单元之内,则可以用MOVC   A,@A+PC这条指令进行查表操作,如果超过了256个单元,则不能用这条指令进行查表操作。刚才我们已说到,DPTR是一个数据指针,这个数据指针我们可以给它赋值操作的。通过赋值操作。我们可以使MOVC   A,@A+DPTR这条指令的寻址范围达到64K。这就是这两条指令在实际应用当中要注意的问题。 变址寻址方式是MCS-51单片机所独有的一种寻址方式。 位寻址 80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0。 位寻址的范围,也就是哪些部份可以进行位寻址: 1、我们在第十二课学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址区。它的单元地址是20H-2FH。共有16个单元,一个单元是8位,所以位寻址区共有128位。这128位都单独有一个位地址,其位地址的名字就是00H-7FH。这里就有一个比较麻烦的问题需要大家理解清楚了。我们在前面的学习中00H、01H。。。。7FH等等,所表示的都是一个字节(或者叫单元地址),而在这里,这些数据都变成了位地址。我们在指令中,或者在程序中如何来区分它是一个单元地址还是一个位地址呢?这个问题,也就是我们现在正在研究的位寻址的一个重要问题。其实,区分这些数据是位地址还是单元地址,我们都有相应的指令形式的。这个问题我们在后面的指令系统学习中再加以论述。 2、对专用寄存器位寻址。这里要说明一下,不是所有的专用寄存器都可以位寻址的。具体哪些专用寄存器可以哪些专用寄存器不可以,请大家回头去看看我们前面关于专用寄存器的相关文章。一般来说,地址单元可以被8整除的专用寄存器,通常都可以进行位寻址,当然并不是全部,大家在应用当中应引起注意。 专用寄存器的位寻址表示方法: 下面我们以程序状态字PSW来进行说明 D7 D6 D5 D4 D3 D2 D1 D0 CY   AC  F0  RS1  RS0  OV    P  1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示为D5H   MOV  C,D5H 2、位名称表示:表示该位的名称,例如PSW的位5是F0,所以可以用F0表示   MOV  C,F0 3、单元(字节)地址加位表示:D0H单元位5,表示为DOH.5    MOV  C,D0H.5 4、专用寄存器符号加位表示:例如PSW.5    MOV C,PSW.5 这四种方法实现的功能都是相同的,只是表述的方式不同而已。 例题:   1. 说明下列指令中源操作数采用的寻址方式。   MOV R5,R7 答案:寄存器寻址方式   MOV A,55H 直接寻址方式   MOV A,#55H 立即寻址方式   JMP @A+DPTR 变址寻址方式   MOV 30H,C 位寻址方式   MOV A,@R0 间接寻址方式   MOVX A,@R0 间接寻址方式 改错题   请判断下列的MCS-51单片机指令的书写格式是否有错,若有,请说明错误原因。   MOV R0,@R3 答案:间址寄存器不能使用R2~R7。   MOVC A,@R0+DPTR 变址寻址方式中的间址寄存器不可使用R0,只可使用A。   ADD R0,R1 运算指令中目的操作数必须为累加器A,不可为R0。   MUL AR0 乘法指令中的乘数应在B寄存器中,即乘法指令只可使用AB寄存器组合。

    标签: 单片机指令 系统原理

    上传时间: 2013-11-11

    上传用户:caozhizhi