单片机程序分析
单片机考试常见试题程序分析题

单片机考试常见试题程序分析题work Information Technology Company.2020YEAR程序分析及编程1.设(A)=04H,(CY)=1, 写出下列各条指令的结果。
RL A; (A)= 08HRR A; (A)= 02HRLC A; (A)= 09HRRC A; (A)= 82H2设(A)=7AH,(R0)=30H,(30H)=A5H,(CY)=1, 写出下列各条指令的结果。
MOV A ,R0 (A)=30H (R0)=30HXCH A, R0 (A)=30H (R0)=30HXCHD A,@R0 (A)=A5H (R0)=30H(30H)=30HADD A,#30H (A)=D5H (CY)=1ADDC A,30H (A)=06H (CY)=1SUBB A,#30H (A)=D5H (CY)=14.已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。
下述程序执行后:请问:A=(),SP=(),(51H)=(),(52H)=(),PC=()。
POP DPHPOP DPLMOV DPTR,#4000HRL AMOV B,AMOVC A,@A+DPTRPUSH AMOV A,BINC AMOVC A,@A+DPTRPUSH ARETORG 4000HDB10H,80H,30H,50H,30H,50H答:(A)=50H , (SP)=50H , (51H)=30H , (52H)=50H , (PC)=5030H5.假定A=83H,(R0)=17H,(17H)=34H,执行以下指令后,A的内容为()。
:ANL A,#17HORL 17H,AXRL A,@R0CPL A答:0CBH6.如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后则:DPH=(),DPL=(),SP=():POP DPHPOP DPLPOP SP答:DPH=3CH , DPL=5FH , SP=4FH7.假定,SP=60H,A=30H,B=70H,执行下列指令后,SP的内容为(),61H单元的内容为(),62H单元的内容为()。
单片机常见错误例程分析

单片机常见错误例程分析单片机是一种集成电路,对于初学者来说,由于经验不足,常会遇到一些错误。
下面我们来分析一些单片机常见的错误例程,以及解决方法。
一、看门狗定时溢出引起的复位单片机中通常都有看门狗(Watchdog)定时器,用于监控系统运行。
如果在程序中没有及时喂狗,导致看门狗定时器溢出,会引起复位。
解决方法:1.在主程序中设定喂狗的指令,以避免看门狗定时溢出。
2.在适当的位置设置看门狗使能的指令,保证看门狗定时器能正常工作。
3.尽量避免在中断服务程序中关闭看门狗定时器,以免因为中断响应过慢导致看门狗复位。
二、中断服务程序执行时间过长当中断服务程序执行时间过长时,会导致主程序无法继续正常运行。
这种情况下,单片机很可能无法响应其他外部事件。
解决方法:1.在中断服务程序中尽量减少对资源的占用,避免复杂的运算和长时间的延时操作。
2.将必要的数据交给主程序处理,减少中断服务程序的工作量。
3.合理设置中断优先级,确保重要的中断能及时响应。
三、电源噪声导致系统不稳定单片机对电源的稳定性要求较高,如果电源存在噪声,则可能导致系统不稳定,甚至崩溃。
解决方法:1.在供电线路上添加合适的滤波电容,以减小电源噪声。
2.使用稳压电源,保证电源输出的稳定性。
3.合理布线,避免电源和信号线的干扰。
四、编程错误编程错误是单片机常见的错误之一、例如,写入错误的寄存器地址、错误的命令、错误的数据等。
解决方法:1.熟悉单片机的手册,了解相关寄存器、命令和数据的使用方法。
2.仔细检查编程代码,避免拼写错误和语法错误。
3.使用调试工具,例如仿真器、逻辑分析仪等,进行实时调试。
五、外围设备连接错误单片机通常需要与外围设备进行通信,如果连接错误,可能导致通信失败或者数据传输错误。
解决方法:1.确保电路连接正确,检查信号线、电源线等的连接是否松动、接触不良。
2.根据外围设备的手册,仔细查阅相关接口的使用说明书,确保连接方式正确。
3.使用示波器、逻辑分析仪等工具,对通信信号进行监测和分析,找出错误原因。
单片机软件设计方法与流程

单片机软件设计方法与流程在单片机软件设计中,方法和流程是非常重要的。
本文将介绍单片机软件设计的一般方法和流程,并提供一些实用的技巧和经验分享。
一、需求分析在进行单片机软件设计之前,首先需要进行需求分析。
了解项目的具体需求,包括功能需求、性能需求、可靠性需求等。
需求分析是软件设计的基础,只有清楚了解需求,才能进行后续的设计工作。
二、功能设计在进行单片机软件设计时,首先需要进行功能设计。
根据需求分析的结果,确定要实现的功能,并将功能进行逻辑划分和模块化设计。
可以使用流程图、UML图等工具来进行功能设计,清晰地展现出每个功能的实现流程和数据传输。
三、算法设计在进行单片机软件设计中,算法设计是关键的一步。
根据功能需求,确定合适的算法实现方案。
有效的算法设计可以提高程序的效率和性能。
在确定算法之后,可以使用伪代码或流程图来描述算法的实现过程。
四、软件架构设计在进行单片机软件设计之前,需要进行软件架构设计。
软件架构设计是整个软件设计的框架,包括模块划分、模块之间的接口设计、数据流向等。
合理的软件架构设计可以提高软件的可维护性和可扩展性。
五、编程实现在完成软件设计之后,需要进行编程实现。
根据设计的结果,采用合适的编程语言进行编写。
在编程过程中,需要注意代码的规范性和易读性,添加必要的注释和文档说明,方便后续的维护和阅读。
六、调试测试在完成编程实现之后,需要进行调试测试。
通过单元测试、集成测试等手段,验证程序的功能和性能是否符合需求。
在进行调试测试时,需要注意测试用例的编写和测试结果的分析,及时修复bug和优化程序的效率。
七、优化改进在进行单片机软件设计之后,可以进行优化改进。
通过对程序的性能进行评估和分析,找出瓶颈所在,并采取相应的优化措施。
优化改进可以提高程序的响应速度和资源利用效率。
八、文档撰写在完成单片机软件设计之后,需要进行文档撰写。
撰写软件设计文档可以记录设计的过程和结果,方便后续的维护和复用。
软件设计文档应包括需求分析、功能设计、算法设计、架构设计、编程实现、测试结果等内容。
1实验一:MCS-51单片机指令分析

实验一:MCS-51单片机指令分析第一部分:位操作指令练习1、实验目的:学习并掌握MCS-51单片机程序开发系统操作方法,学习掌握Medwin仿真环境及其使用方法。
2、实验内容:万利仿真器开发环境Medwin使用练习。
3、实验仪器: PC机一台,万利仿真器Medwin开发环境。
4、实验步骤:第1步:实验准备:(1) 安装Medwin开发环境,并设置其相应的驱动。
(2) 打开Medwin开发环境,连接状态标志为绿色,说明开发环境与仿真器连接成功。
如未成功,检查连接、驱动程序设置等是否正确。
第2步:程序输入:首先在Medwin下新建一个项目,并新建一后缀名为.ASM的文件(.ASM表示汇编源文件),并添加入之前建立的项目中,在此文件中按照汇编语言语句规定的格式输入程序(只输源程序部分,具体程序参考下面的程序)。
第3步:程序运行和调试:(1) 程序编译输入源程序完毕后,可在“项目管理”窗口中点击“编译/汇编”选项,如果程序没有输入错误、语法错误等,则编译能够正确完成,在下面的消息窗口中,产生编译成功信息。
如果程序有输入错误,语法错误等,则消息窗口中会指出错误所在行及错误类型,此时必须返回源程序的错误行重新修改程序,修改完毕后,重新执行“编译/汇编”,直到程序没有输入错误、语法错误为止。
(2)产生代码并装入编译成功后,在“项目管理”窗口中点击“产生代码并装入”选项,对编译无误后产生的.OBJ文件进行连接,并把代码装入仿真器,代码装入仿真器后,才可以对程序实行仿真。
此时,可以在反汇编窗口中查看编译产生的机器码。
(3)程序的全速、单步执行在“调试”窗口中点击“全速”或者“单步”选项,完成程序的仿真运行,“全速”运行表示程序从头至尾一次运行结束,只能看到程序运行后所有寄存器的最终状态结果;“单步”运行表示程序按照指令逐行运行,此时可以查看每行指令运行后的寄存器的状态结果。
(4)查看单片机各种资源状态及内容在“察看”窗口中可以查看单片机内部及程序变量等各种资源,在单步或程序断点运行中可以实时观察单片机内部特殊功能寄存器、内部外部RAM、程序变量等内容,可以很方便的观测程序的运行状况。
单片机控制电磁阀程序分析

单片机控制电磁阀程序分析
电磁阀
电磁阀(ElectromagneTIc valve)是用电磁控制的工业设备,是用来控制流体的自动化基础元件,属于执行器,并不限于液压、气动。
用在工业控制系统中调整介质的方向、流量、速度和其他的参数。
电磁阀可以配合不同的电路来实现预期的控制,而控制的精度和灵活性都能够保证。
电磁阀有很多种,不同的电磁阀在控制系统的不同位置发挥作用,最常用的是单向阀、安全阀、方向控制阀、速度调节阀等。
电磁阀工作原理
电磁阀里有密闭的腔,在不同位置开有通孔,每个孔连接不同的油管,腔中间是活塞,两面是两块电磁铁,哪面的磁铁线圈通电阀体就会被吸引到哪边,通过控制阀体的移动来开启或关闭不同的排油孔,而进油孔是常开的,液压油就会进入不同的排油管,然后通过油的压力来推动油缸的活塞,活塞又带动活塞杆,活塞杆带动机械装置。
这样通过控制电磁铁的电流通断就控制了机械运动。
单片机外部中断详解及程序

单片机外部中断详解及程序单片机在自主运行的时候一般是在执行一个死循环程序,在没有外界干扰(输入信号)的时候它基本处于一个封闭状态。
比如一个电子时钟,它会按时、分、秒的规律来自主运行并通过输出设备(如液晶显示屏)把时间显示出来。
在不需要对它进行调校的时候它不需要外部干预,自主封闭地运行。
如果这个时钟足够准确而又不掉电的话,它可能一直处于这种封闭运行状态。
但事情往往不会如此简单,在时钟刚刚上电、或时钟需要重新校准、甚至时钟被带到了不同的时区的时候,就需要重新调校时钟,这时就要求时钟就必须具有调校功能。
因此单片机系统往往又不会是一个单纯的封闭系统,它有些时候恰恰需要外部的干预,这也就是外部中断产生的根本原由。
实际上在第二个示例演示中,就已经举过有按键输入的例子了,只不过当时使用的方法并不是外部中断,而是用程序查询的方式。
下面就用外部中断的方法来改写一下第二个示例中,通过按键来更改闪烁速度的例子(第二个例子)。
电路结构和接线不变,仅把程序改为下面的形式。
#include ;unsigned int t=500; //定义一个全局变量t,并设定初始值为500次//===========延时子函数,在8MHz晶振时约1ms=============void delay_ms(unsigned int k){unsigned int i,j;for(i=0;i<k;i++){for(j=0;j<1140;j++);}}//============主函数==================================void main( void ){DDRB = 0xFF; //设置端口B为输出方向PORTB = 0xFF; //设置端口B的输出为全高电平DDRD = 0x00; //设置端口D为输入方向PORTD = 0xFF; //设定端口D为内部上拉方式,无信号输入时处于高电平状态MCUCR = 0x0A; //设定INT0、INT1为下降沿触发GICR = 0xC0; //使能INT0、INT1中断SREG = 0x80; //使能总中断while(1){PORTB = 0x55; //让接在端口B上的LED显示01010101 delay_ms(t); //延时t个msPORTB = 0xAA; //让接在端口B上的LED显示01010101 delay_ms(t); //延时t个ms}}//============中断函数(外部0)==========================#pragma vector = INT0_vect__interrupt void INT0_Server(void){t = 100; //设定t的值为100次}//============中断函数(外部1)==========================#pragma vector = INT1_vect__interrupt void INT1_Server(void){t = 500; //设定t的值为500次}把上述程序进行编译并下载到单片机中,可以看到结果与第二个示例中的完全一致。
单片机指令的执行过程及时序分析

单片机指令的执行过程及时序分析单片机是一种集成了内存、计算单元和输入输出接口等功能的微型电脑系统。
它的核心部分是指令执行单元,负责执行指令集中的指令。
了解单片机指令的执行过程以及相应的时序分析是学习和开发单片机应用的基础。
本文将介绍单片机指令的执行过程及其相关的时序分析。
一、单片机指令的执行过程单片机指令的执行过程可以分为指令周期和机器周期两个部分。
指令周期是指从一个指令的开始到下一个指令的开始所经过的时间,而机器周期则是指完成一个指令所需要的时间。
1. 取指周期取指周期是指单片机从内存中取出一条指令并将其存放到指令寄存器中的过程。
在取指周期内,单片机先将程序计数器中的指令地址送到内存地址总线上,经过地址译码器的译码,找到对应的存放指令的存储单元,并将存储单元的内容读出,通过数据总线送到指令寄存器中保存。
取指周期是单个机器周期中的第一个周期。
2. 执行周期执行周期是指单片机对从指令寄存器中读取到的指令进行解码与执行的过程。
在执行周期内,单片机将从指令寄存器中读取的指令送到指令译码器中进行解码,确定指令的类型和操作对象,并根据指令要求执行相应的操作,如数据传送、算术运算等。
3. 存储访问周期存储访问周期是指单片机对存储器进行读写操作的过程。
在存储访问周期内,单片机将从指令寄存器中解码出的操作数或者结果地址送到内存地址总线上,通过地址译码器找到相应的存储单元,并进行读或写操作。
存储访问周期的时长取决于存储器的访问速度。
二、单片机指令执行的时序分析在单片机的指令执行过程中,各个时序参数的分析对于正确编写、调试和优化单片机程序至关重要。
下面将分析一些常见的时序参数。
1. 指令周期(Tcy)指令周期是指单片机执行一条指令所需要的时间,它决定了单片机的工作频率。
指令周期的时长取决于单片机的硬件设计和时钟频率。
对于不同型号、不同制造商的单片机,其指令周期可能有所差异。
2. 机器周期(Tc)机器周期是指单片机完成一个基本功能的时间,通常情况下等于一个指令周期,但某些特殊指令可能需要多个指令周期才能完成。
单片机指令的执行周期分析与优化

单片机指令的执行周期分析与优化单片机是一种在嵌入式系统中广泛应用的计算机芯片,它具有体积小、功耗低等优点。
在单片机中,指令的执行周期是决定程序运行效率的一个重要因素。
本文将对单片机指令的执行周期进行分析,并提出相应的优化方法。
一、单片机的指令执行周期在单片机中,指令的执行周期是指完成一条指令所需的时间。
一般情况下,单片机的指令执行周期由指令周期和机器周期两个因素决定。
1. 指令周期:指令周期是单片机执行一条指令所需的时间,它由时钟周期和机器周期两部分组成。
时钟周期是指单片机的时钟频率,它决定了单片机每秒钟能执行多少个周期。
机器周期是指单片机执行一条指令所需的时钟周期数,它取决于具体的指令和处理器的架构。
2. 机器周期:机器周期是单片机执行指令的基本单位,它由若干个时钟周期组成。
在单片机中,一条指令的执行通常分为取指、译码、执行、访存和写回等阶段,每个阶段都需要花费若干个时钟周期。
不同的处理器架构和指令集对机器周期的划分方式有所不同。
二、单片机指令执行周期的优化方法为了提高单片机的运行效率,我们可以进行以下优化:1. 优化指令周期:提高时钟频率是一种有效的方法,它能够减少指令周期的长度,从而提高单片机的运行速度。
然而,要提高时钟频率并不是一件容易的事情,因为它受到硬件设计的制约。
除了提高时钟频率,还可以通过增加流水线级数、优化指令流水等方法来降低单条指令的执行时间。
2. 优化机器周期:通过合理设计指令集和架构,可以减少指令的机器周期数,从而减少整个指令的执行周期。
例如,采用指令重排、指令并行和指令预测等技术可以减少指令阻塞和等待的时间,提高指令的执行效率。
此外,还可以通过增加缓存、改进访存流程等方法来提高访存操作的效率。
3. 优化指令流:在编写程序时,合理选择指令的使用方法和指令的排列顺序,可以有效地减少指令的执行时间。
例如,可以使用位运算代替乘除运算,减少浮点运算的开销等。
此外,还可以通过代码优化、循环展开和循环合并等技术来减少指令的条数,提高单片机的运行速度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有一长度为10字节的字符串存放在8031单片机内部RAM中,其首地址为40H。
要求将该字符串中每一个字符加偶校验位。
(以调用子程序的方法来实现。
)源程序如下:ORG 1000HMOV R0,#40HMOV R7,#10NEXT:MOV A,①ACALL SEPAMOV @R0,AINC R0DJNZ ②,NEXTSJMP $SEPA:ADD A,#00H③PSW.0,SRETORL A,④SRET:⑤① @R0 ② R7 ③ JNB ④ #80H ⑤ RET4设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?(8分)MOV R0,#30H ;R0=30HMOV A,@R0 ;A=5AHMOV R1,A ;R1=5AHMOV B,R1 ;B=5AHMOV @R1,P1 ;(5AH)=7FHMOV A,P1 ;A=7FHMOV 40H,#20H ;(40H)=20HMOV 30H,40H ;(30H)=20H解:每一条指令执行后的结果如注释字段所标。
最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。
四、程序阅读与分析题1、试阅读下面的程序,指出该程序结束后累加器ACC和寄存器TH0的值,并说明该程序完成了怎样的功能。
ORG 0000HMOV SP,#60HMOV A,#10HMOV TH0,#20HPUSH ACCPUSH TH0POP ACCPOP TH0END答:利用堆栈交换了ACC和TH0的内容,(A)=20H,(TH0)=10H2、程序段如下,试说明其功能。
MOV R0,#50HMOV R1,#60HMOV A,@R0ADD A,@R1MOV @R0,AINC R0INC R1MOV A,@R0ADDC A,@R1MOV @R0,AMOV 00H,C答:双字节无符号数加法。
被加数存放在内部RAM的51H、50H单元,加数存放在内部RAM的61H、60H单元,相加的结果存放在内部RAM的51H、50H单元,进位存放在位寻址区的00H位中。
五、综合应用题3、设80C51单片机晶振频率为6MHz,定时器T0工作于方式1。
要求80C51以中断方式工作并在P1.0引脚输出周期为500微秒的方波。
试:计算初值、编写含有初始化功能的主程序和完成方波输出的中断服务程序。
答:机器周期为2微秒。
定时时间250微秒。
需要计数N=125初值为65536-125=65411=FF83H,所以(TH0)=FFH,(TL0)=83H工作方式设置:0000 0001B,即(TMOD)=01H主程序:中断服务程序:(整体结构!)MOV TMOD,#01H MOV TH0,#0FFHMOV TH0,0FFH MOV TL0,#83HMOV TL0,#83H CPL P1.0SETB EA RETISETB ET0SETB TR0SJMP $四、读程序(每小题4分,共20分)1.执行下列程序段中第一条指令后,(1)(P1.7)=__0__ (P1.3)=__0___,(P1.2)=____0_____;执行第二条指令后,(2)(P1.5)=_____1____,(P1.4)=_____1____,(P1.3)=______1___.ANL P1,#73HORL P1,#38H2.下列程序段执行后,(A)=__0DH_______,(B)=_____11H____.MOV A,#0FBHMOV B,#12HDIV AB3.下列程序段执行后,(R0)=____7EH_____,(7EH)=__FFH_______,(7FH)=____3FH_____.MOV R0,#7FHMOV 7EH,#0MOV 7FH,#40HDEC @R0DEC R0DEC @R0(DPTR)=4567H,在执行下列指令后,(SP)=___0BH______,内部RAM(0AH)=____67H_____,4.已知(SP)=09H,(0BH)=___45H______PUSH DPLPUSH DPH5.下列程序中注释的数字为执行该指令所需的机器周期数,若单片机的晶振频率为6MHz,问执行下列程序需要多少时间MOV R3,#100;1LOOP:NOP ;1NOPNOPDJNZ R3,LOOP ;2RET ; 2解:一个机器周期为2μs执行程序所需时间T=2μs*(5×100+3)=1006μs≈1ms五、编程题(每小题4分,共20分)1.请使用位操作指令,实现下列逻辑操作:P1.5=ACC.2∧P2.7∨ACC.1∧P2.0解:.先进行与操作,再进行或操作程序如下:MOV C,ACC.1ANL C,P2,0MOV 12H,CMOV,C,A CC.2ANL C,P2.7ORL C,12HMOV P1.5,CRET2.在外部RAM首地址为TABLE的数据表中有10个字节数据,请编程将每个字节的最高位无条件地置1.解:MOV R2,#10MOV DPRT,#TABLELOOP:MOV X A,@DPRT;取一数ORL A,#80H;最高位置1MOV X @DPTR,A;写回原地址1NC DPTR;处理下一单元DJNZ R2,LOOPRET3.已知内部RAM 30H单元开始存放20H个数据,将其传送到外部RAM的0000H单元开始的存储区,请编程实现。
解:MOV R0,#30HMOV R1,#00HMOV R2,#20HLOOP:MOV A,@R0;取数MOV X @R1,A;存数1NC R01NC R1DJNZ R2,LOOPRET4.已知8个无符号数之和存于R3R4,求其平均值,结果仍存于R3R4中,请编程实现(R3为高字节)。
解:利用移位指令作除8操作,程序如下:MOV R2,#3LOOP :CLR CMOV A ,R3RRC A ;高字节除以2,末位移入C ,高位补0MOV R3,A ;暂存高字节MOV A ,R4RRC A ;低字节除以2,高字节末位移入低字节高位MOV R3,ADJNZ R2,LOOPRET5.两个字符串分别存放在首地址为42H 和52H 的内部RAM 中,字符串长度放在41H 单元,请编程比较两个字符串。
若相等,则把数字00H 送40H 单元,否则把0FFH 送40H 单元。
解:有一个字节不等,整个字符串不相等,所有字节相等,两字串才相等MOV R0,#42HMOV R1,#52HLOOP :MOV A ,@R0CLR C ;不相等,FFH →40HSUBB A ,@R1JNZ LOOP1 ;相等时,比较下一字节INC R0INC R1DJNZ 41H ,LOOPMOV 40H ,#0 ;所有字符均相等,则两字串相等。
RETLOOP1:MOV 40H ,#0FFHRET 三.计算题(22分)1.(A )=3BH ,执行ANL A ,#9EH 指令后,(A )= (CY )=2.JNZ REL 为2B 指令,放于1308H ,转移目标地址是134AH ,求偏移量REL=3.若(A )=C3H ,(R0)=AAH ,执行ADD A ,R0后,(A )= (CY )=(OV )= (AC )=4.若(A )=50H ,(B )=A0H ,执行MUL AB 后,(A )= (B )= (CY )=(OV )=5.SJMP 0E7H 为2B 指令,放于F010H ,目标地址=四.阅读并分析程序(28分)1.2506H M5:MOV SP ,#58H2509H MOV 10H ,#0FH250CH MOV 11H ,#0BH250FH ACALL XHD ;PC+2→PC , 7~015~810~01,1,SP SP PC SP SP SP PC SP addr PC +→→⎧⎫⎪⎪+→→⎨⎬⎪⎪→⎩⎭MOV 20H,11H2514H M5A:SJMP M5AXHD:PUSH 10HPUSH 11HPOP 10HPOP 11HRET问:(1)执行POP 10H后堆栈内容?(2)执行M5A:SJMP M5A后,(SP)= (20H)=已知:片内RAM的20H中为01H,执行下列程序后(30H)=MOV A,20HINC AMOV DPTR,#2000HMOVC A,@A+DPTRCPL AMOV 30H,ASJMP $3.(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40)=20HMOV A,@R0MOV @R0,40HMOV 40H,AMOV R0,#35H问执行程序后,R0= A= 4BH= 40H=4.若PSW=00, 执行下列程序后,PSW的各位状态如何?MOV A,#0FBHMOV PSW,#10H1.数据块传送,将RAM从30H开始的连续32个单元的内容传递给片内RAM从60H开始的连续32个单元。
ORG 1000HMOV R7,_____MOV R0, #30HMOV R1,#60HLOOP:MOV A,@R0MOV _____,AINC R0INC R1DJNZ R7, _____SJMP $END2. 将4个单字节数放片内30H~~33H,它们求和结果放在片内40H,41H单元。
ORG 1000HMOV R7,#04HMOV R0,30HCLR AMOV 41H,ALOOP:ADD A,@R0JNC NEXTINC _____NEXT:INC _____DJNZ R7,LOOPMOV 40H,ASJMP $END3.RAM中40H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD码的十位和个位放在累加器A中,百位放在R2中。
ORG 2200HMOV A,_____MOV B,#64HDIV ABMOV R2,AMOV A,_____XCH A,BDIV ABSWAP _____ORL A,BSJMP $END4.编程序将片内40H-46H单元内容的高4位清零,保持低4位不变。
ORG 1000HMOV R7,#07HMOV R0,_____LOOP:MOV A,@R0ANL A,_____MOV @R0,AINC R0DJNZ R7,LOOPSJMP $END三.计算题:(22分)(1)(A)=1AH (CY)=不受影响(2)REL=40H(3)(A)= 6DH (CY)= 1 (OV)=1 (AC)=0(4)(A)=00H (B)=32H (CY)= 总为0 (OV)=1(5)目标地址=EFF9H四:阅读并分析程序(28分)(1)1)执行POP 10H后堆栈内容?(SP)=5AH2)执行M5A:SJMP M5A后,(SP)=58H (20H)=0FH(2)(30H)=5BH(3)R0=35H A=7FH 4BH=20H 40H=7FH(4)CY AC OV P OF RS11 1 0 1 0 1五、程序填空(10分)1._#20H_ __R1___ _LOOP____2.__41H___ __R0___3.__40H___ _#0AH____ __A___4._#40H____ __#0FH___四、分析程序并写出结果:(共4题,每题5分)1.已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后( 40H ) = MOV @R0 , #11HMOV A , R2ADD A , 20HMOV PSW , #80HSUBB A , P0XRL A , #45HMOV 40H , A2. 已知( R0 )=20H, (20H )=36H, (21H) =17H, (36H) =34H, 执行过程如下:MOV A , @R0MOV R0 , AMOV A , @R0ADD A , 21HORL A , #21HRL AMOV R2 , ARET则执行结束(R0)= (R2)=3. 执行下面一段程序;MOV SP, #60HMOV A, #10HMOV B, #01HPUSH APUSH BPOP APOP BA , B的内容是:(A)= (B)=4. 设在31H单元存有#23H,执行下面程序:MOV A, 31HANL A, #0FHMOV 41H, AMOV A, 31HANL A, #0F0HSW AP AMOV 42H, A则(41H)= (42H)=1.(20H)←11H(A)←20H(A)←(A)+(20)(CY)=1(A)-(P0)-(CY)→(A)即(A)←00H(A)+45H→(A)即(A)←45H(40H)←45H2.(A)←((R0))(A)=36H(R0)←(A)(R0)←36H(A)←((R0))(A)←34H(A)←(A)+(21H)34H+17H=4BH(A)←(A)21H 4BH 21H=6BH(A)←D6H(R2)←D6H(R0)=36H (R2)=D6H3.(A)=01H (B)=10H4. (41H)=03H (42H)=02H有一长度为10字节的字符串存放在8031单片机内部RAM中,其首地址为40H。