第3章答案指令系统1-40
- 格式:doc
- 大小:88.00 KB
- 文档页数:9
第3章习题解答1.指令长度和机器字长有什么关系?半字长指令、单字长指令、双字长指令分别表示什么意思?解:指令长度与机器字长没有固定的关系,指令长度可以等于机器字长,也可以大于或小于机器字长。
通常,把指令长度等于机器字长的指令称为单字长指令;指令长度等于半个机器字长的指令称为半字长指令;指令长度等于两个机器字长的指令称为双字长指令。
2.零地址指令的操作数来自哪里?一地址指令中,另一个操作数的地址通常可采用什么寻址方式获得?各举一例说明。
解:双操作数的零地址指令的操作数来自堆栈的栈顶和次栈顶。
双操作数的一地址指令的另一个操作数通常可采用隐含寻址方式获得,即将另一操作数预先存放在累加器中。
例如,前述零地址和一地址的加法指令。
3.某机为定长指令字结构,指令长度16位;每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。
若双操作数指令已有K种,无操作数指令已有L种,问单操作数指令最多可能有多少种?上述三类指令各自允许的最大指令条数是多少?解:X= (24一K)×26一[L/26]双操作数指令的最大指令数:24一1。
单操作数指令的最大指令数:15×26一l(假设双操作数指令仅1条,为无操作数指令留出1个扩展窗口)。
无操作数指令的最大指令数:216一212一26。
其中212为表示某条二地址指令占用的编码数,26为表示某条单地址指令占用的编码数。
此时双操作数和单操作数指令各仅有1条。
4.设某机为定长指令字结构,指令长度12位,每个地址码占3位,试提出一种分配方案,使该指令系统包含:4条三地址指令,8条二地址指令,180条单地址指令。
解:4条三地址指令000 XXX YYY ZZZ..011 XXX YYY ZZZ8条二地址指令100 000 XXX YYY..100 111 XXX YYY180条单地址指令101 000 000 XXX..111 110 011 XXX5.指令格式同上题,能否构成:三地址指令4条,单地址指令255条,零地址指令64条?为什么?解:三地址指令4条000 XXX YYY ZZZ..011 XXX YYY ZZZ单地址指令255条100 000 000 XXX..111 111 110 YYY只能再扩展出零地址指令8条,所以不能构成这样的指令系统。
单片机课后习题解答练习练习练习第二章单片机结构及原理1、mcs-51单片机内部涵盖哪些主要功能部件?它们的促进作用就是什么?请问:(1)一个8bitcpu就是微处理器的核心,就是运算和逻辑排序的中心。
(2)片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。
(3)4krom程序存贮器:存贮程序及常用表格。
(4)128bram数据存贮器:暂存一些中间变量和常数等。
(5)两个16bit定时器/计数器:全然硬件定时器(6)32根可编程i/o口线:标准8位双向(4个)i/o接口,每一条i/o线都能独立地作输入或输出。
(7)一个可编程全双工串行口。
(8)五个中断源。
2、什么是指令?什么是程序?请问:指令就是规定计算机继续执行某种操作方式的命令。
程序是根据任务要求有序编排指令的集合。
3、如何重新认识89s51/52存储器空间在物理结构上可以分割为4个空间,而在逻辑上又可以分割为3个空间?答:89s51/52存储器空间在物理结构上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。
在逻辑上有3个存储器地址空间:片内、片外统一的64kb程序存储器地址空间,片内256b数据存储器地址空间,片外64kb的数据存储器地址空间。
4、开机复位后,cpu使用的是哪组工作寄存器?他们的地址是多少?cpu如何确定和改变当前工作寄存器组?请问:开机登位后,cpu采用的就是第0组与工作寄存器,地址为00h~07h,cpu通过发生改变状态字寄存器psw中的rs0和rs1去确认工作寄存器组。
5、什么是堆栈?堆栈有何作用?在程序设计时,有时为什么要对堆栈指针sp重新赋值?如果cpu在操作中要使用两组工作寄存器,sp应该多大?请问:堆栈就是一个特定的存储区,主要功能就是暂时存放数据和地址,通常用以维护断点和现场。
堆栈指针sp登位后指向07h单元,00h~1fh为工作寄存器区,20h~2fh为十一位串行区,这些单元存有其他功能,因此在程序设计时,须要对sp再次赋值。
第3章 指令系统3.1 3.2 3.3 3.4 汇编语言 寻址方式 PIC18F452指令系统 程序设计举例3.1汇编语言• 指令:是 指令:是CPU CPU根据人的意图来执行某种操作的命令。
根据人的意图来执行某种操作的命令。
• 程序设计语言:是实现人机交换信息的基本工具,分为机 器语言、汇编语言和高级语言。
• 机器语言:用二进制编码表示每条指令 机器语言:用二进制编码表示每条指令,是计算机能 ,是计算机能直接 直接 识别和执行的语言。
识别和执行 的语言。
• 汇编语言:是用助记符、符号和数字 汇编语言:是用助记符、符号和数字等来表示指令的程序 等来表示指令的程序 设计语言。
它与机器语言指令是一一对应的。
设计语言。
它与机器语言指令是一一对应的。
? 汇编语言编写的程序能否直接被计算机执行? • 高级语言:面向问题和计算过程的语言,可通用于各种不 同的计算机。
用户编程时不必了解所用计算机的指令系统。
Why study assembly language?• Many critical programs are written in assembly language • To better understand the functions and architecture of a computer system • To better understand the working of high level languages • To design efficient programs • A tool for writing system programs • Embedded systems development– Mixed languages programming3• PIC18F452 PIC18F452汇编语言指令格式 汇编语言指令格式 标记段: 标记段 :操作码 [目的 目的操作数 操作数][, ][,源 源操作数 操作数][ ][; ;注释 注释] ]MOVLW BTFSS BCF GOTO 0x7F WREG, 7 WREG, 0 Stop ;load test data ;clear bit 0Stop:• 其中操作码 其中操作码是必不可少的。
第3章 8086微处理器的指令系统(1)3.1 指令系统概述● 指令系统是一台计算机所能(识别和执行)的全部指令的集合。
它与(微处理器)有着密切的关系,不同的微处理器有不同的指令系统。
8086CPU 包含133条指令● 指令是使计算机执行某种(特定操作)的二进制编码。
指令一般包括两个部分:(操作码域)和(地址域)。
填空操作码域:存放指令的操作码,即指明该指令应由计算机完成何种操作。
地址域:确定操作数的值或地址、操作结果的地址,有的指令的地址域还指出下一条指令的地址。
● 机器指令:计算机能(直接识别)的二进制代码。
● 汇编语言:汇编语言是一种符号语言,用助记符表示操作码,用符号或符号地址表示操作数或操作数地址,它与机器指令是一一对应的● 汇编程序:将汇编语言源程序翻译成机器语言(就是一条一条的机器指令),即目标程序。
3.2寻址方式● 根据(指令内容)确定(操作数地址)的过程,称为寻址。
● 根据寻址方式计算所得到的地址叫做(有效地址EA ),也就是(段内偏移地址)。
有效地址还需要与相应的(段基地址)组合才是20位的(物理地址PA) ,该工作由微处理器来完成。
牢记什么是EA ?什么是PA ?怎么计算?后面有关于EA 和PA 的解释及计算方法!● 寻址方式在两种方式下被涉及:(操作数)的寻址方式和(指令)的寻址方式。
如果没有特别说明,寻址方式是指源操作数的寻址方式。
1、隐含寻址(隐含了规定的操作数)例:DAA 指令,只有操作码,无操作数。
规定对AL 中的内容进行压缩BCD 码转换。
2、立即寻址(操作数(立即数)直接放在指令中,不需访问存储器)例:MOV AX ,1234H (若CS=1000H ,IP=100H )3、寄存器寻址(操作数就放在内部寄存器中,不需访问存储器)例:INC CX ;(CX)←(CX)+1 MOV AX ,BX ;执行后BX 内容不变 4、直接寻址(指令中直接给出操作数的存放地址) 例1:MOV AX ,[4000H] (DS =3000H )☞操作数寻址 可以进行寄存器寻址的寄存器: (16位)AX 、BX 、CX 、DX 、SI 、DI 、SP 、BP(8位) AH 、AL 、BH 、BL 、CH 、CL 、DH 、DL例2:MOV ES:[1234H],BL (ES =4000H )注意:(1)指令中给出的[4000H]和[1234H]是操作数的偏移地址。
DSP复习要点第一章绪论1、数的定标:Qn表示。
例如:16进制数2000H=8192,用Q0表示16进制数2000H=0.25,用Q15表示2、‟C54x小数的表示方法:采用2的补码小数;.word 32768 *707/10003、定点算术运算:乘法:解决冗余符号位的办法是在程序中设定状态寄存器STl中的FRCT位为1,让相乘的结果自动左移1位。
第二章CPU结构和存储器设置一、思考题:1、C54x DSP的总线结构有哪些特点?答:TMS320C54x的结构是围绕8组16bit总线建立的。
(1)、一组程序总线(PB):传送从程序存储器的指令代码和立即数。
(2)、三组数据总线(CB,DB和EB):连接各种元器件,(3)、四组地址总线(PAB,CAB,DAB和EAB)传送执行指令所需要的地址。
2、C54x DSP的CPU包括哪些单元?答:'C54X 芯片的CPU包括:(1)、40bit的算术逻辑单元(2)、累加器A和B(3)、桶形移位寄存器(4)、乘法器/加法器单元(5)、比较选择和存储单元(6)、指数编码器(7)、CPU状态和控制寄存器(8)、寻址单元。
1)、累加器A和B分为三部分:保护位、高位字、地位字。
保护位保存多余高位,防止溢出。
2)、桶形移位寄存器:将输入数据进行0~31bits的左移(正值)和0~15bits的右移(负值)3)、乘法器/加法器单元:能够在一个周期内完成一次17*17bit的乘法和一次40位的加法4)、比较选择和存储单元:用维比特算法设计的进行加法/比较/选择运算。
5)、CPU状态和控制寄存器:状态寄存器ST0和ST1,由置位指令SSBX和复位指令RSBX控制、处理器模式状态寄存器PMST2-3、简述’C54x DSP的ST1,ST0,PMST的主要功能。
答:’C54x DSP的ST1,ST0,PMST的主要功能是用于设置和查看CPU的工作状态。
•ST0主要反映处理器的寻址要求和计算机的运行状态。
第3章8086寻址⽅式和指令系统-题第3章8086寻址⽅式和指令系统⼀、单项选择题(共50⼩题)1、指令MOV AX,[3070H]中源操作数的寻址⽅式为()A、寄存器间接寻址B、⽴即寻址C、直接寻址D、变址寻址2、DS是()A、数据段寄存器B、代码段寄存器C、堆栈段寄存器D、附加数据段寄存器3、CF是()A、进位标志位B、辅加进位标志位C、符号标志位D、全零标志位4、SS是_()A、数据段寄存器B、代码段寄存器C、堆栈段寄存器D、附加数据段寄存器5、指令MOV [BX],AX中A、⽬的操作数是寄存器操作数B、源操作数是存储器操作数C、⽬的操作数是存储器操作数D、源操作数是⽴即操作数6、CS是()A、数据段寄存器B、代码段寄存器C、堆栈段寄存器D、附加数据段寄存器B、源操作数存于堆栈段C、⽬的操作数存于数据段D、⽬的操作数存于堆栈段8、BX是()A、8位通⽤寄存器B、16位通⽤寄存器C、16位段寄存器D、16位变址寄存器9、ZF是()A、进位标志B、⽅向标志C、符号标志D、零标志10、IP是()A、指令指针寄存器B、堆栈指针寄存器C、通⽤寄存器D、变址寄存器11、SI是()A、8位通⽤寄存器B、16位通⽤寄存器C、16位段寄存器D、指令指针寄存器12、DL是()A、16位段寄存器B、16位通⽤寄存器C、8位通⽤寄存器D、16位标志寄存器13、指令IDIV BX 的含义是()A、(AX)/(BX)B、(DX:AX)/(BX)C、(AL)/(BX)D、(AL)/(BL)B、DXC、BPD、DI15、设SS=2000H,执⾏下列程序段后SP=()MOV SP,2000HPUSH AXA、21FFEHB、20000HC、22000HD、22002H16、寄存器间接寻址⽅式中,操作数在( )中。
A、通⽤寄存器B、堆栈C、内存单元D、段寄存器17、JMP WORD PTR[DI]是( )A、段内间接转移B、段间间接转移C、段内直接转移D、段间直接转移18、堆栈指针SP的作⽤是( )。
第三章MCS-51单片机指令系统习题含答案第三章MCS-51单片机指令系统习题含答案3.1 判断下列说法是否正确。
(A)立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。
(√)(B)指令周期是执行一条指令的时间。
(√)(C)指令中直接给出的操作数称为直接寻址。
(×)3.2在基址加变址寻址方式中,以(A)作变址寄存器,以(DPTR)或(PC)作基址寄存器3.3 MCS-51共有哪几种寻址方式?各有什么特点?答:共有7种寻址方式。
(1)寄存器寻址方式操作数在寄存器中,因此指定了寄存器就能得到操作数。
(2)直接寻址方式指令中操作数直接以单元地址的形式给出,该单元地址中的内容就是操作数。
(3)寄存器间接寻址方式寄存器中存放的是操作数的地址,即先从寄存器中找到操作数的地址,再按该地址找到操作数。
(4)立即寻址方式操作数在指令中直接给出,但需在操作数前面加前缀标志“#”。
(5)基址寄存器加变址寄存器间接寻址方式以DPTR或PC作基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的16位地址作为操作数的地址,以达到访问数据表格的目的。
(6)位寻址方式位寻址指令中可以直接使用位地址。
(7)相对寻址方式在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址。
3.4 MCS-51指令按功能可以分为哪几类?答:MCS-51指令系统按功能分为:数据传送类(28条);算术操作类(24条);逻辑运算类(25条);控制转移类(17条);位操作类(17条)。
3.5 指令格式是由(操作码)和(操作数)所组成,也可能仅由(操作码)组成。
3.6 假定累加器A中的内容为30H,执行指令:1000H:MOVC A,@A+PC后,把程序存储器(1031H)单元的内容送入累加器中3.7 在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的(地址)。
第三章80x86 指令系统3-1 指令由操作码字段和操作数字段组成。
8086的指令长度在1~6字节范围。
3-2 分别指出下列指令中源操作数和目的操作数的寻址方式。
若是存储器寻址,使用表达式表示出EA=?PA=?(1) MOV SI, 2100H (2) MOV CX, DISP[BX] (3) MOV [SI], AX(4) ADC ZX, [BX][SI] (5) AND AX, DX (6) MOV AX, [BX+10H](7) MOV AX, ES:[BX] (8)MOV AX, [BX+SI+20H] (9) MOV [BP], CX(10) PUSH DS解:源操作数寻址目的操作数寻址EA PA1) MOV SI, 2100H 立即数寻址寄存器————(2) MOV CX, DISP[BX] 寄存器相对寻址寄存器[BX+SISP] (DS)*16+(BX+DISP)(3) MOV [SI], AX 寄存器寻址寄存器间接[SI[ (DS)*16+(SI)(4) ADC ZX, [BX][SI] 基址变址寻址寄存器[BX+SI] (DS)*16+(BX)+(SI)(5) AND AX, DX 寄存器寻址寄存器————(6) MOV AX, [BX+10H] 寄存器相对寻址寄存器[BX+DISP] (DS)*16+(BX)+10H(7) MOV AX, ES:[BX] 带段超越寄存器寻址寄存器[BX] (ES)*16+(BX)(8)MOV AX, [BX+SI+20H] 相对基址变址寻址寄存器[BX+SI+20H] (DS)*16+(BX)+(SI)+20H(9) MOV [BP], CX 寄存器寻址寄存器间接[BP] (SS)*16+(BP)(10) PUSH DS 固定寻址寄存器[SP] (SS)*16+(SP)3-3 已知8086中一些寄存器的内容和一些存储器单元的内容如图3-1所示,试指出下列各条指令执行后,AX中的内容。
单片机,第三章答案本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March思考题:【3-1】汇编语言与C语言哪种语言的可读性和可移植性强在对速度和时序敏感的场合应该使用什么语言对于复杂的单片机系统一般采用C与汇编混合编程的形式这句话对吗【3-2】二进制机器语言与C和汇编语言两者之间是什么关系用C或汇编编制的程序在ROM中是以编译后的二进制代码的形式存放这句话对吗【3-3】80C51系列单片机指令的格式包含哪几个部分各部分之间的间隔符是什么四个部分中哪个部分是必须存在的,哪几个部分是可有可无的标号的格式和代表的意义是【3-4】80C51系列单片机有哪几种寻址方式【3-5】80C51单片机中立即数是存放在ROM中还是RAM中【3-6】判断下列说法是否正确。
(1)立即数寻址方式是被操作的数据本身就在指令中,而不是它的地址在指令中。
()(2)指令周期是执行一条指令的时间。
()(3)指令中直接给出的操作数称为直接寻址。
()(4)内部寄存器Rn(n=0~7)可作为间接寻址寄存器。
()【3-7】80C51单片机可以进行直接寻址的区域是【3-8】80C51单片机可以进行寄存器寻址的范围是【3-9】80C51单片机可以进行寄存器间接寻址的寄存器是寻址的范围是【3-10】在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的()。
【3-11】80C51单片机变址寻址方式中可以作基址的寄存器是可以作变址的寄存器是@A+PC,@A+DPTR所找到的操作数是在ROM中对吗【3-12】80C51单片机相对寻址改变的是PC的当前值,即改变的CPU执行指令的顺序这句话对否【3-13】若访问特殊功能寄存器,只可以采用那种寻址方式【3-14】若访问外部RAM单元,只可以使用哪种寻址方式【3-15】若访问内部RAM单元,可使用哪些寻址方式【3-16】若访问内外程序存储器,可使用哪些寻址方式【3-17】80C51单片机可以进行位寻址的字节单元范围除11个可位寻址的特殊功能寄存器外还包括哪个区域分别找出位地址是00H、08H、22H、7FH、D0H、E0H对应的字节地址【3-18】已知(30H)=40H,(40H)=10H,(10H)=32H,(P1)=0EFH,试写出执行以下程序段后有关单元的内容。
第3章指令系统1,简述下列基本概念:指令,指令系统,机器语言,汇编语言,高级语言。
1、指令:CPU根据人的意图来执行某种操作的命令指令系统:一台计算机所能执行的全部指令集合机器语言:用二进制编码表示,计算机能直接识别和执行的语言汇编语言:用助记符、符号和数字来表示指令的程序语言高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入了解的通用性语言2,什么是计算机的指令和指令系统?2、见第1题。
3,简述89C51汇编指令格式。
3、操作码[目的操作数] [,源操作数]4,简述89C51寻址方式和所能涉及的寻址空间。
5,要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式?5、SFR:直接寻址,位寻址,寄存器寻址;片外RAM:寄存器间接寻址6,在89C51片内RAM中,已知(30H)=38H, (38H)=40H, (40H)=48H, (48H)=90H, 请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。
6、MOV A,40H ;直接寻址(40H)→AMOV R0,A ;寄存器寻址(A)→R0MOV P1,#0F0H ;立即数寻址0F0→P1MOV @R0,30H ;直接寻址(30H)→(R0)MOV DPTR,#3848H ;立即数寻址3848H→DPTRMOV 40H,38H ;直接寻址(38H)→40HMOV R0,30H ;直接寻址(30H)→R0MOV P0,R0 ;寄存器寻址(R0 )→P0MOV 18H,#30H ;立即数寻址30H→18HMOV A,@R0 ;寄存器间接寻址((R0)) →AMOV P2,P1 ;直接寻址(P1)→P2最后结果:(R0)=38H,(A)=40H,(P0)=38H,(P1)=(P2)=0F0H,(DPTR)=3848H,(18H)=30H,(30H)=38H,(38H)=40H,(40H)=40H,(48H)=38H 注意:→左边是内容,右边是单元7,对89C51片内RAM的高128字节的地址空间寻址要注意什么7、用直接寻址,位寻址,寄存器寻址8,指出下列指令的本质区别。
8,MOV A,DATA ;直接寻址2字节1周期MOV A,#DATA ;立即数寻址2字节1周期MOV DATA1,DATA2 ;直接寻址3字节2周期MOV 74H,#78H ;立即数寻址3字节2周期如果想查某一指令的机器码,字节数或周期数可查阅书本后面的附录A9,设R0内容为32H, A的内容为48H, 片内RAM的32H单元内容为80H, 40H单元内容为08H, 请指出在执行下列程序段后上述各单元内容的变化。
9、MOV A,@R0 ;((R0))=80H→AMOV @R0,40H ;(40H)=08H→(R0)MOV 40H,A ;(A)=80→40HMOV R0,#35H ;35H→R0最后结果:(R0)=35H (A)=80H,(32H)=08H,(40H)=80H10,如何访问SFR,可使用哪些寻址方式?10、用直接寻址,位寻址,寄存器寻址11,如何访问片外RAM,可使用哪些寻址方式?11、只能采用寄存器间接寻址(用MOVX指令)12,如何访问片内RAM,可使用哪些寻址方式?12、低128字节:直接寻址,位寻址,寄存器间接寻址,寄存器寻址(R0~R7)高128字节:直接寻址,位寻址,寄存器寻址13,如何访问片内外程序存储器,可使用哪些寻址方式?13、采用变址寻址(用MOVC指令)14,说明十进制调整的原因和方法。
14、压缩BCD码在进行加法运算时应逢十进一,而计算机只将其当作十六进制数处理,此时得到的结果不正确。
用DA A指令调整(加06H,60H,66H)15,说明89C51的布尔处理机功能。
15、用来进行位操作16,已知(A)=83H, (R0)=17H, (17H)=34H, 请写出执行完下列程序段后A的内容。
16、ANL A,#17H ;83H∧17H=03H→AORL 17H,A ;34H∨03H=37H→17HXRL A,@R0 ;03H⊕37H=34HCPL A ;34H求反等于CBH所以(A)=CBH17,使用位操作指令实现下列逻辑功能,要求不得改变未涉及位的内容。
(1)使ACC.0置1;(2)清除累加器高4位;(3)清除ACC.3,ACC.4,ACC.5,ACC.6 。
17、(1)SETB ACC.0或SETB E0H ;E0H是累加器的地址(2)CLR ACC.7CLR ACC.6CLR ACC.5CLR ACC.4(3)CLR ACC.6CLR ACC.5CLR ACC.4CLR ACC.318,编程实现把内部RAM R0~R7 的内容传递到20H~27H单元。
18、MOV 27H,R7MOV 26H,R6MOV 25H,R5MOV 24H,R4MOV 23H,R3MOV 22H,R2MOV 21H,R1MOV 20H,R019,试编写程序,将内部RAM 20H、21H和22H3个连续单元的内容依次存入2FH、2EH 和2DH 中。
19、MOV 2FH,20HMOV 2EH,21HMOV 2DH,22H20,编写程序,进行两个16位数减法,6F5DH –13B4H, 结果存入内部RAM的30H和31H单元,30H存储低8位。
20、CLR CMOV A,#5DH ;被减数的低8位→AMOV R2,#0B4H ;减数低8位→R2SUBB A,R2 ;被减数减去减数,差→AMOV 30H,A ;低8位结果→30HMOV A,#6FH ;被减数的高8位→AMOV R2,#13H ;减数高8位→R2SUBB A,R2 ;被减数减去减数,差→AMOV 31H,A ;高8位结果→30H注意:如果在你的程序中用到了进位位,在程序开始的时候要记得清0进位位21,编写程序,若累加器A的内容分别满足下列条件,则程序转至LABEL存储单元。
设A中存储的是无符号数。
(1)A≥10; (2)A>10; (3)A≤10。
21、(1)A≥10CJNE A,#0AH,L1 ;(A)与10比较,不等转L1LJMP LABEL ;相等转LABELL1:JNC LABEL ;(A)大于10,转LABEL或者:CLR CSUBB A,#0AHJNC LABEL(2)A>10CJNE A,#0AH,L1 ;(A)与10比较,不等转L1RET ;相等结束L1:JNC LABEL ;(A)大于10,转LABELRET ;(A)小于10,结束或者:CLR CSUBB A,#0AHJNC L1RETL1:JNZ LABELRET(3)A≤10CJNE A,#0AH,L1 ;(A)与10比较,不等转L1L2:LJMP LABEL ;相等转LABELL1:JC L2 ;(A)小于10,转L2RET或者:CLR CSUBB A,#0AHJC LABELJZ LABELRET22,已知(SP)=25H, (PC)=2345H, (24H)=12H, (25H)=34H, (26H)=56H。
问此时执行“RET”指令以后,(SP)=? (PC)=?22、(SP)=23H,(PC)=3412H参看书上80页23,若(SP)=25H, (PC)=2345H, 标号LABEL所在地址为3456H。
问执行长调用指令“LCALL LABEL”后,堆栈指针和堆栈内容发生什么变化?PC值等于什么?23、(SP)=27H,(26H)=48H,(27H)=23H,(PC)=3456H参看书上79页24,上题中LCALL指令能否直接换成ACALL指令,为什么?如果使用ACALL 指令,则可调用的地址范围是什么?24、不能。
ACALL是短转指令,可调用的地址范围是2KB。
在看这个题的时候同时看一下AJMP指令。
同时考虑调用指令ACALL和LCALL 指令和RET指令的关系。
25,编写指令,查找在内部RAM的20H~50H单元中是否有0AAH这一数据。
若有,则将51H单元置为01H;若未找到,则将51H单元清0。
25、MOV R2,#31H ;数据块长度→R2MOV R0,#20H ;数据块首地址→R0LOOP:MOV A,@R0 ;待查找的数据→ACLR C ;清进位位SUBB A,#0AAH ;待查找的数据是0AAH吗JZ L1 ;是,转L1INC R0 ;不是,地址增1,指向下一个待查数据DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找MOV 51H,#00H ;等于0,未找到,00H→51HRETL1:MOV 51H,#01H ;找到,01H→51HRET26,编写指令,查找在内部RAM的20H~50H单元中出现00H的次数,并将查找结果存入51H单元。
26、MOV R2,#31H ;数据块长度→R2MOV R0,#20H ;数据块首地址→R0LOOP:MOV A,@R0 ;待查找的数据→AJNZ L1 ;不为0,转L1INC 51H ;为0,00H个数增1L1:INC R0 ;地址增1,指向下一个待查数据DJNZ R2,LOOP ;数据块长度减1,不等于0,继续查找RET27,外部数据RAM中有一个数据块,存有若干字符、数字,首地址为SOURCE。
要求将该数据块传送到内部RAM以DIST开始的区域,直到遇到字符“$”时结束(“$”也要传送,它的ASCII码是24H)。
27、MOV DPTR,#SOURCE ;源首地址→DPTRMOV R0,#DIST ;目的首地址→R0LOOP:MOVX A,@DPTR ;传送一个字符MOV @R0,AINC DPTR ;指向下一个字符INC R0CJNE A,#24H,LOOP ;传送的是“$”字符吗?不是,传送下一个字符RET28,已知R3和R4中存有一个16位的二进制数,高位在R3中,低位在R4中。
请编程将其求补,并存回原处。
28、MOV A,R3 ;取该数高8位→AANL A,#80H ;取出该数符号判断JZ L1 ;是正数,转L1MOV A,R4 ;是负数,将该数低8位→ACPL A ;低8位取反ADD A,#01H ;加1MOV R4,A ;低8位取反加1后→R4MOV A,R3 ;将该数高8位→ACPL A ;高8位取反ADDC A,#00H ;加上低8位加1时可能产生的进位SETB ACC.7MOV R3,A ;高8位取反加1后→R3L1:RET29,已知30H和31H中存有一个16位的二进制数,高位在前,地位在后,请编程将它们乘以2,再存回原单元中。
29、CLR C ;清进位位CMOV A,31H ;取该数低8位→ARLC A ;带进位位左移1位MOV 31H,A ;结果存回31HMOV A,30H ;取该数高8位→ARLC A ;带进位位左移1位MOV 30H,A ;结果存回30H30,内存中有两个4字节以压缩的BCD码形式存放的十进制数,一个存放在30H~33H单元中,一个存放在40H~43H单元请编程求他们的和,结果存放在30H~33H单元中。