首页 理论教育信息技术二类专业总复习章节三:指令系统与汇编语言程序设计

信息技术二类专业总复习章节三:指令系统与汇编语言程序设计

【摘要】:通过本章学习能熟练使用单片机指令编写常见程序。本章考试主要以单项选择题、判断题、填空题和综合分析题为主,特别是综合分析题,考查考生对指令系统和程序设计结构类型的掌握情况。执行指令后,源操作数不改变,目的操作数修改为源操作数。

1.数据传送指令(内部数据存储器读取指令)。(D)

2.程序调用及返回指令(ACALL、LCALL、RET、RETI)。(C)

3.无条件转移指令(AJMP、LJMP、SJMP、JMP)。(C)

4.伪指令(ORG、EQU、DB、DW、BIT)。(B)

5.简单程序编写(内部数据传送,顺序结构、无条件循环结构)。(D)

6.条件转移指令(JZ、JNZ、CJNE、DJNZ)。(C)

7.位处理指令。(D)

8.循环移动指令。(C)

9.单片机分支程序读识(分支结构、有限循环结构)。(D)

10.条件分支程序编写。(B)

11.单片机查表指令(程序存储器读取指令)MOVC。(D)

12.外部RAM数据传送指令MOVX。(D)

13.堆栈指令PUSH。(B)

14.数据交换指令XCH、XCHD、SWAP。(B)

15.查表程序读识。(C)

16.查表程序编写。(B)

17.显示子程序、延时子程序读识。(C)

18.延时子程序编写。(B)

19.单片机循环程序读识(三重循环)。(C)

20.单片机循环程序编写(两重循环)。(B)

21.单片机算术运算指令(ADD、ADDC、SUBB)。(B)

22.加“1”、减“1”指令。(B)

23.乘除、十进制调整指令。(A)

24.单片机逻辑运算指令。(C)

近三年四川省对口升学本章考点内容及考题分析

本章是“单片机技术与应用”科目考试中最为重要的章节,介绍和分析单片机的指令系统及其应用,要求考生重点掌握访问片内、片外RAM数据传送指令的格式和功能,算术运算指令功能,逻辑操作指令功能,位操作指令功能以及控制转移指令的转移范围,复习过程中应着重把握对基本程序执行结果的正确分析、延时子程序的延时时间分析、循环程序的识读。通过本章学习能熟练使用单片机指令编写常见程序。本章考试主要以单项选择题、判断题、填空题和综合分析题为主,特别是综合分析题,考查考生对指令系统和程序设计结构类型的掌握情况。

一、MCS—51系列单片机指令格式

单片机汇编语言指令的格式为

[标号:]操作码助记符[目的操作数][,源操作数]…[;注释]

二、MCS—51系列单片机寻址方式

寻址方式是指在指令执行过程中,如何找到操作数有效地址的方法。

1.立即寻址方式

指令提供的操作数为直接参与操作的8位或16位数据。这种方式的操作数又称为立即数,前面加“#”标志。例如:MOV A,#30 H

2.直接寻址方式

直接寻址是指在指令中直接给出操作数的存储单元地址。例如:MOV A,40 H

3.寄存器寻址方式

操作数存放在寄存器中通过寻址寄存器获得操作数。例如:MOV A,R1

4.寄存器间接寻址方式

寄存器间接寻址是指操作数存放在存储单元中,它的地址没有在指令中直接给出,而是存放在寄存器中,例如:MOV A,@R1

5.相对寻址方式

相对寻址是以指令中给出的操作数作为程序转移的偏移量。例如:JZ 50H

6.变址寻址方式

在这种寻址方式中,指令提供了以DPTR或PC为基址、以累加器A为变址的两种寄存器,通过将两种寄存器的内容相加形成的16位数据,作为操作对象存储单元的地址。例如:

MOVC A,@A+DPTR

7.位寻址方式

指令给出的操作数是内部数据存储器中的可寻址位。例如MOV C,08H;C←(08H)

三、MCS—51系列单片机指令系统

1.数据传送指令

(1)访问片内数据存储器的一般传送指令

这类指令使用“MOV”作为操作码助记符,共16条。把源操作数传送到目的操作数。执行指令后,源操作数不改变,目的操作数修改为源操作数。此类指令属于“复制”类型,而不是“搬家”。

①立即数传送指令

MOV A,#data ;A←data

MOV direct,#data ;direct←data

MOV R n,#data ;R n←data,n=0,1,…,7

MOV @R i,#data ;(R i)←data,i=0,1

MOV DPTR,#data16 ;DPTR←data16

②与累加器有关的数据传送指令

MOV A,R n ;A←(R n)

MOV R n,A ;R n←(A)

MOV A,direc t;A←(direct)

MOV direct,A ;direct←(A)

MOV A,@R i ;A←((R i))

MOV @R i,A ;(R i)←(A)

③内部RAM之间的数据传送指令

MOV direct1,direct2 ;direct1←(direct2)

MOV direct,R n ;direct←(R n)

MOV R n,direct ;Rn←(direct)

MOV direct,@R i ;direct←((R i))

MOV @R i,direct ;(Ri)←(direct)

(2)访问片内特殊传送指令

①字节交换指令

XCH A,R n ;(A)←→(R n)

XCH A,direct ;(A)←→(direct)

XCH A ,@R i ;(A)←→((R i))

②半字节交换指令

XCHD A,@R i ;(A)3~0←→((R i))3~0,即累加器A的低四位

与R i间址的内部RAM单元的低四位进行交换。

③累加器A的高4位与低4位交换指令

SWAP A ;(A)7~4←→(A)3~0

④堆栈操作指令

A.进栈指令

PUSH direct ;SP←(SP)+1,(SP)←(direct)

B.出栈指令

POP direct ;direct←((SP)),SP←(SP)-1

(3)访问片外RAM的数据传送指令

这类指令的操作码助记符为“MOVX”,对外部RAM单元只能使用间接寻址方式,即可以使用DPTR和R i作间接寄存器。

MOVX A,@DPTR ;A←((DPTR))

MOVX @DPTR,A ;(DPTR)←(A)

MOVX A,@R i ;A←((R i))

MOVX @R i,A ;(R i)←(A)

(4)访问程序存储器的数据传送指令(查表指令)

这类指令的助记符为“MOVC”,共两条指令。

MOVC A@A+DPTR ;A←((A)+(DPTR))

MOVC A@A+PC ;A←((A)+(PC))

2.算术运算指令

(1)加减运算指令

加减运算指令的目的操作数是累加器A,源操作数可以是立即数、通用寄存器、内部RAM和R i间址的内部RAM。算术运算结果将影响程序状态字PSW的CY、AC、OV、P的变化。

①加法指令ADD

指令格式:ADD A,source

指令功能:将累加器和源操作数相加,结果送累加器A,源操作数不变。

ADD A,R n ;(A)+(R n)→A

ADD A,direct ;(A)+(direct)→A

ADD A,@R i ;(A)+((R i))→A

ADD A,#data ;(A)+data→A

ADD指令影响程序状态字PSW的CY、AC、OV、P位。

②带进位加法指令ADDC

带进位加法指令助记符为ADDC,指令格式与加法指令相同,指令功能是将累加器A、不同寻址方式的源操作数以及进位标志CY相加,运算结果送累加器A。

ADDC A,R n ;(A)+(R n)+CY→A

ADDC A,direct ;(A)+(direct)+CY→A

ADDC A,@R i ;(A)+((R i))+CY→A

ADDC A,#data ;(A)+data+CY→A

ADDC指令对状态标志位的影响同ADD指令。

③带借位减法指令SUBB

带借位减法指令助记符为SUBB。与加法指令相似,目的操作数为累加器A,源操作数有四种寻址方式。

SUBB A,R n ;(A)-(R n)-CY→A

SUBB A,direc t;(A)-(direct)-CY→A

SUBB A,@R i;(A)-((R i))-CY→A

SUBB A,#data ;(A)-(data)-CY→A

若进行不带借位的减法运算,只需将借(进)位标志CY清零,例如:CLR C。

带借位减法指令对状态标志位的影响与加法指令相同。

④加1指令INC

INC A ;(A)+1→A

INC R n ;(R n)+1→R n

INC direct ;(direct)+1→direct

INC @R i ;((R i))+1→(R i)

INC DPTR ;(DPTR)+1→DPTR

加1指令主要用于修改地址指针和计数次数,它对于CY、AC、OV没有影响。

⑤减1指令DEC

DEC A ;(A)-1→A

DEC R n ;(R n)-1→Rn

DEC direc t ;(direct)-1→direct

DEC @R i ;((R i))-1→(R i)

⑥十进制调整指令

指令格式:DA A

该指令的功能是把A中的数作为两个BCD码相加之和进行调整,得到两位正确的BCD码。

MCS—51系列单片机指令系统对BCD码的运算是首先使用二进制数加法指令进行运算,然后执行十进制调整指令来处理加法结果。

(2)乘除法指令

乘法和除法指令各一条,都是单字节指令。但是执行时间最长,需要4个机器周期。

①乘法指令MUL

指令格式:MUL AB

指令功能:把累加器A和寄存器B中的无符号数相乘,所得16位乘积的低位字节存入A中,高位字节存入B中。

乘法运算影响PSW的状态,进位标志位CY总为0。若乘积大于FFH,即结果中寄存器B的内容不为0,OV置1,否则OV清0。

②除法指令DIV

指令格式:DIV AB

指令功能是A中8位无符号整数除以B中8位无符号整数,所得商存入A中,余数存入B中,并将CY和OV置0。只有当除数B=0时,OV置1,表示除法无意义。

3.逻辑运算指令

(1)逻辑与指令

这类指令的助记符为ANL,共有6条指令。

ANL A,R n ;(A)∧R n→A

ANL A,direct ;(A)∧(direct)→A

ANL A,@R i ;(A)∧((R i))→A

ANL A,#data ;(A)∧data→A

ANL direct,A ;(direct)∧(A)→direct

ANL direct,#data ;(direct)∧data→direct

逻辑与运算常用作字节清零或位清零。

(2)逻辑或指令

ORL A,R n ;(A)∨(R n)→A

ORL A,direct ;(A)∨(direct)→A

ORL A,@R i;(A)∨((R i))→A

ORL A,#data ;(A)∨data→A

ORL direct,A ;(direct)∨A→direct

ORL direct,#data ;(direct)∨data→direct

逻辑或指令可以实现某个单元的某些位置1,其余位不变。

(3)逻辑异或指令

XRL A,R n ;(A)⊕(R n)→A

XRL A,direct ;(A)⊕(direct)→A

XRL A,@R i ;(A)⊕((R i))→A

XRL A,#data ;(A)⊕data→A

XRL direct,A ;(direct)⊕A→direct

XRL direct,#data ;(direct)⊕data→direct

逻辑异或指令可以用来比较两个数据是否相等。当两个数据异或结果为0,则表示相等,否则表示不相等。此外异或运算还可以实现对某个单元的某些位取反,其余位不变。

(4)累加器清零和取反指令

累加器清零指令:CLR A ;0→A

累加器按位取反指令:CPL A ;A取反→A

(5)循环移位指令

①循环右移指令:RR A

该指令将累加器A的内容逐位循环右移一位,D0内容移到D7。

②循环左移指令:RL A

该指令将累加器A的内容逐位循环左移一位,D7内容移到D0。

③带进位循环右移指令:RRC A

该指令将累加器A的内容和进位位一起逐位循环右移一位,并且D0移入进位位CY,CY内移入D7。

④带进位循环左移指令:RLC A

该指令将累加器A的内容和进位位一起逐位循环左移一位,并且D7移入进位位CY,CY内移入D0。

4.程序控制指令

(1)无条件转移指令

①短转移指令:SJMP rel

该指令采用相对寻址方式,目的地址=源地址+字节数+rel。其中偏移量rel取值范围是-128—+127,负数表示向低地址方向转移,正数表示向高地址方向转移。

在用汇编语言编程时,往往将指令写成如下形式:SJMP 目标地址。

在汇编语言程序设计中,在程序结束时,常常需要使程序“原地踏步”。

HALT:SJMP HALT或者SJMP$(在汇编语言源程序中,$代表该指令的首地址)

②绝对转移指令:AJMP addr11

操作:PC+2→PC,addr11→PC10~0

绝对转移指令的目标地址是以指令中的11位地址addr11替换当前PC的低11位内容形成。

绝对转移范围是以AJMP指令的下一条指令高5位地址所确定的2KB范围内。

③长转移指令:LJMP addr16;addr16→PC

该指令把16位地址addr16装入程序计数器PC,转移范围可达64KB。

④间接转移指令:JMP @A+DPTR;(A)+(DPTR)→(PC)

(2)条件转移指令

此类指令均为相对寻址方式,转移范围是:以当前取出转移指令的PC值为基准的-128—+127。

①累加器判零转移指令

JZ re l;若(A)=0,则转移,否则不转。

JNZ rel ;若(A)≠0,则转移,否则不转。

②比较转移指令

CJNE A,direct,rel ;若(A)≠(direct),则转移

CJNE A,#data,rel ;若(A)≠data,则转移

CJNE R n,#data,rel ;若(R n)≠data,则转移

CJNE @R i,#data,rel ;若((R i))≠data,则转移

这组指令对指定的目的操作数和源操作数进行比较,根据比较结果控制程序转移。操作如下:

若目的操作数=源操作数,则不转移,0→CY

若目的操作数>源操作数,则转移,0→CY

若目的操作数<源操作数,则转移,1→CY

显然,可以利用这组指令执行后CY的状态来实现数值比较,即(www.chuimin.cn)

若CY=0,则目的操作数≥源操作数

若CY=1,则目的操作数<源操作数

③减1不为0转移指令

DJNZ R n,rel ;(R n)-1→R n,若R n≠0,则转移

DJNZ direct,rel ;(direct)-1→(direct),若(direct)≠0,则转移

(3)子程序调用和返回指令

子程序调用指令与转移指令类似,执行调用指令使程序转移到子程序的入口地址。与转移指令不同的是,调用子程序后,可以通过子程序的返回指令返回到主程序,这是因为调用指令在转移的同时将主程序的断点地址入栈保护。

①绝对调用指令:ACALL addr11

操作过程:PC←(PC)+2 ;取出指令,PC自动加2

SP←(SP)+1,(SP)←(PC)7~0

SP←(SP)+1,(SP)←(PC)15~8 ;断点地址入栈

(PC)10~0←addr11,(PC)15~11不变 ;进入子程序

绝对调用指令的调用范围,由ACALL指令的下一条指令高5位地址所确定的2 KB范围内。

②长调用指令:LCALL addr16

操作过程:PC←(PC)+3 ;取出指令,PC自动加3

SP←(SP)+1,(SP)←(PC)7~0

SP←(SP)+1,(SP)←(PC)15~8 ;断点地址入栈

PC←addr16;进入子程序

长调用指令的调用范围为64 KB。

③返回指令

RET ;子程序返回指令

RETI ;中断返回指令

这两条指令执行的操作是断点地址出栈,即(SP)→PC15~8,SP-1→SP,(SP)→PC(D7—D0),SP-1→SP。

子程序返回指令通常用在由ACALL或LCALL调用的子程序末尾。中断返回指令作为中断服务程序的结束指令,还具有清除中断响应时被置位的优先级状态、恢复中断逻辑等功能。

(4)空操作指令

NOP ;(PC)+1→(PC)

该指令不执行任何操作,常用于子程序的等待或时间的延迟。

5.位操作指令

(1)位传送指令

MOV C,bit ;(bit)→C

MOV bit,C ;C→(bit)

(2)置、复位指令

CLR C ;0→C

CLR bit ;0→bit

SETB C ;1→C

STEB bit ;1→bit

(3)位逻辑操作指令

ANL C,bit ;(C)∧(bit)→C

ANL C,/bit ;(C)∧(/bit)→C

ORL C,bit ;(C)∨(bit)→C

ORL C,/bit ;(C)∨(/bit)→C

CPL C ;(/C)→C

CPL bit ;(/bit)→(bit)

(4)位条件转移指令

JC rel ;若(CY)=1,则转移,否则不转

JNC rel ;若(CY)=0,则转移,否则不转

JB bit,rel ;若(bit)=1,则转移,否则不转

JNB bit,rel ;若(bit)=0,则转移,否则不转

JBC bit,rel ;若(bit)=1,(bit)←0则转移,否则不转

四、MCS—51系列单片机伪指令

这类指令只是在对源程序进行汇编翻译时提供一些必要的信息,它不能产生可执行的目标代码。

伪指令语句的格式:[标号]<定义符>[参数表][ ;注释]

1.汇编起始伪指令ORG

格式:[符号] ORG 16位地址

功能:规定目标程序或数据块存放的起始地址。例如:

ORG 4000 H

START:MOV A,#20H

……

该伪指令规定第一条指令从地址4000H单元开始存放,即标号START的值为4000H。

2.结束汇编伪指令END

格式:[符号:]END

功能:告诉汇编程序,源程序到此结果,汇编到此截止。

说明:一个程序只能有一条END命令,且位于程序的最后。汇编程序对END语句以后的语句不进行汇编。

3.定义字节伪指令DB

格式:[标号:]DB项或项表

功能:从指定的地址单元开始,存入规定好的字节数据。

4.定义字伪指令DW

格式:[标号:]DW项或项表

功能:从指定的地址开始,存入十六位数据(字数据)。

说明:存入数据时高位在前,低位在后,即高8位存入低地址单元,低8位存入高地址单元。

5.预留存储空间定义伪指令DS

格式:[标号:]DS 表达式

功能:从指令的地址单元开始,保留指定数目的字节单元作为备用空间。

6.赋值伪指令EQU

格式:标号:EQU 赋值项

功能:将右边的值赋给左边用户定义的字符

7.位地址定义伪指令BIT

格式:标号:BIT 位地址

功能:把位地址赋给指定的字符名称。

8.数据地址赋值伪指令DATA

格式:字符名称DATA 表达式

功能:将右边表达式指定的数据地址赋给左边用户定义的字符。

五、汇编语言程序设计举例

1.顺序结构程序设计

这是最简单、应用最普遍的程序结构,程序执行按照指令的顺序逐条执行。

2.分支结构程序设计

在处理复杂问题的过程中,往往需要作出各种判断,然后根据判断结果决定程序的执行流程,从而使程序形成多种分支。

(1)单分支程序:判断部分有两个出口,根据判断结果执行其中的一个分支。通常用条件转移指令来实现程序分支。

(2)多分支程序:程序的判断部分有两个以上出口。

3.循环结构程序设计

在一定条件下,重复某些相同的操作,即对某一部分程序进行循环执行。

4.查表程序设计

所谓查表程序,是用DB、DW伪指令建表,把表格中的数据与位置对应成y与x的关系,由x来表达y在程序存储器中的地址,然后用MOVC指令实现查表。

5.子结构程序设计

在不同程序中或同一程序的不同位置,要用到功能相同的程序段,可以将其独立出来,附加少量的额外指令,编制成可供反复调用的独立程序段。

【例1】 (2018年高考题)下列程序段执行后,分析(61H)中的值为________。

MOV SP,#60H ;(SP)←60 H

MOV A,#10H ;(A)←10H

MOV TH0,#20H ;(TH0)←20 H

PUSH ACC ;进栈(SP)=61H,(61H)←A

PUSH TH0 ;进栈(SP)=61H,(62 H)←TH0

POP ACC ;出栈(A)←(62H),SP=61H

POP TH0 ;出栈(TH0)←(61 H),SP=60 H

【答案】 10H

【解析】 (A)=20 H,(TH0)=10 H,(61 H)=10 H。由此可见,在程序中利用堆栈先进后出的原则可以交换A、TH0的内容。

【例2】 (2017年高考题)以下指令执行完成后,分析(60H)=_________H。

MOV A,#0A3H ;(A)←A3H

MOV R0,#60 H ;(R0)←60 H

MOV @R0,#05BH ;(60H)←5BH

XCHD A,@R0 ;低半字节交换

【答案】 53

【解析】 (A)=0ABH,(60 H)=53 H。

【例3】 (2017年高考题)单片机晶振频率为12 MHz,指令MOV R,direct和NOP周期数为1,指令DJNZ R n,rel和RET周期为2,则以下延时程序延时时间为_________μs。

DELAY2:MOV R2,#248 ;设置循环次数

LOOP2:DJNZ R2,LOOP2 ;控制循环

NOP

RET

【答案】 500

【解析】 根据晶振为12 MHz可知每个机器周期为1μs,第1条指令只执行一次,要1个机器周期 ;第2条为循环结构,循环次数由R2决定,计数248次,总共496个机器周期 ;第3条指令只执行一次,要1个机器周期 ;第4条只执行一次,要2个机器周期。所以总的机器周期数为1+496+1+2=500个机器周期,每个机器周期为1μs,所以延时时间为500μs。

【例4】 (2016年高考题)执行如下两条指令后,分析DPTR的值为_________H。

MOV DPH,#23H

MOV DPL,#34 H

【答案】 2334

【解析】 (DPH)=23H,(DPL)=34 H,(DPTR)=2334H。

【例5】 试编写一个程序(例如将05H和06H拼为56H),设原始数据放在片外数据区2001 H单元和2002 H单元中,按顺序拼装后的单字节数放入2002 H。

【答案】

ORG 0000H

MAIN:MOV DPTR,#2001 H ;设置数据指针的初值

MOVX A,@DPTR ;读取2001H的值

SWAP A

ANL A,#0F0H ;屏蔽掉低四位

MOV 30 H,A ;保存A

INC DPTR ;指针指向下一个

MOVX A,@DPTR ;读取2002 H的值

ANL A,#0FH ;屏蔽掉高四位

ORL A,30H ;进行拼装

MOVX @DPTR,A ;保存到2002H

END

【解析】 首先读取2001H的值,保存在寄存器A中,将寄存器A的高四位和低四位互换,再屏蔽掉低四位然后将寄存器A的值保存到30 H中,然后再读取2002 H的值,保存在寄存器A中,屏蔽掉高四位,然后将寄存器A的值与30H进行或运算,将运算后的结果保存在2002 H中。

一、单项选择题

1.要用传送指令访问MCS—51片外RAM,它的指令操作码助记符应是( )

A.MOV B.MOVX C.MOVC D.以上都是

2.以下的4条指令中,不合法的指令为( )

A.INC A B.DEC A C.INC DPTR D.SWAP ACC

3.下列程序段中使用了位操作指令的有( )

A.MOV DPTR,#1000 H

B.MOV C,45H

MOVX A,@DPTRCPL AC C.7

C.MOV A,45H

XCH A,27 H

D.MOV R0,23H

MOV A,@R0

4.在80C51中,要访问SFR使用的寻址方式为( )

A.直接寻址 B.寄存器寻址

C.变址寻址 D.寄存器间接寻址

5.指令AJMP的跳转范围是( )

A.256 B B.1 KB C.2 KB D.64 KB

二、判断题(正确的选“A”,错误的选“B”)1.读内部ROM时使用的是“MOV”指令,读外部RAM时使用的是“MOVX”指令。( )

2.指令AJMP的跳转范围是1 KB。( )

3.判断寻址方式。

(1)MOV A,11 H是直接寻址。( )

(2)MOV A,R0是寄存器寻址。( )

(3)MOV A,#22H是直接寻址。( )

(4)MOV A,@R0是寄存器间接寻址。( )

(5)MOV A,#11H是立即寻址。( )

4.判断下面几条指令是否正确。

(1)MOV@R1,80 H( )

(2)INC DPTR( )

(3)CLR R0( )

(4)MOV @R1,#80H( )

(5)ANL R1,#0FH( )

(6)ADDC A,C( )

(7)XOR P1,#31H( )

5.已知8051单片机的振荡频率为12 MHz,则执行MUL AB指令所用的时间为2μs。( )

三、填空题

1.指令格式是由_________和_________所组成,也可能仅由操作码组成。

2.若A中的内容为63H,那么P标志位的值为________。

3.假定累加器A的内容30 H,执行指令:

1000H:MOVC A,@A+PC

后,把程序存储器_________单元的内容送累加器A中。

4.在基址加变址寻址方式中,以________作变址寄存器,以________作基址寄存器。

5.假定A=55 H,R3=0AAH,在执行指令ANL A,R3后,A=_________H,R3=________H。

四、分析题

1.以下程序执行后,(40H)=________,(41H)=________。

CLR C

MOV A,#56H

SUBB A,#0F8 H

MOV 40H,A

MOV A,#78 H

SUBB A,#0EH

MOV 41 H,A

2.假定A=83H,(R0)=17H,(17H)=34H,执行以下指令后,A的内容为________。

ANL A,#17 H

ORL 17H,A

XRL A,@R0

CPL A

3.执行下列程序后,累加器A的内容为_________。

ORG 0000H

MOV A,#00 H

ADD A,#02H

MOV DPTR,#0050H

MOVC A,@A+DPTR

MOV@R0,A

SJMP$

ORG 0050 H

BAO:DB 00H,08H,0BH,06H,09H,0CH

END

五、综合题

1.试编写1个程序,将内部RAM中45 H单元的高4位清0,低4位置1。

2.试编写程序,查找在内部RAM的30 H~50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H” ;若未找到,则将51H单元置为“00H”。