1、第一章1.给出下列有符号数的原码、反码和补码(假设计算机字长为8位)。+45 -89 -6 +112答:【+45】原=00101101,【+45】反=00101101,【+45】补=00101101【-89】原=11011001,【-89】反=10100110,【-89】补=10100111【-6】原=10000110,【-6】反=11111001,【-6】补=11111010【+112】原=01110000,【+45】反=01110000,【+45】补=011100002.指明下列字符在计算机内部的表示形式。AsENdfJFmdsv120答:41H 73H 45H 4EH 64H 66H 4
2、AH 46H 6DH 64H 73H 76H 31H 32H 30H3. 什么是单片机?答:单片机是把微型计算机中的微处理器、存储器、I/O接口、定时器/计数器、串行接口、中断系统等电路集成到一个集成电路芯片上形成的微型计算机。因而被称为单片微型计算机,简称为单片机。4.单片机的主要特点是什么?答:主要特点如下:1)在存储器结构上,单片机的存储器采用哈佛(Harvard)结构2)在芯片引脚上,大部分采用分时复用技术3)在内部资源访问上,采用特殊功能寄存器(SFR)的形式4)在指令系统上,采用面向控制的指令系统5)内部一般都集成一个全双工的串行接口6)单片机有很强的外部扩展能力5.指明单片机的主
3、要应用领域。答:单机应用:1)工业自动化控制;2)智能仪器仪表;3)计算机外部设备和智能接口;4)家用电器多机应用:功能弥散系统、并行多机处理系统和局部网络系统。第二章1.MCS-51单片机由哪几个部分组成?答:MCS-51单片机主要由以下部分组成的:时钟电路、中央处理器(CPU)、存储器系统(RAM和ROM)、定时/计数器、并行接口、串行接口、中断系统及一些特殊功能寄存器(SFR)。2.MCS-51的标志寄存器有多少位,各位的含义是什么?答:MCS-51的标志寄存器PSW有8位;D7D6D5D4D3D2D1D0CACF0RS1RS0OV-P含义如下:C(PSW.7):进位或借位标志位。AC(
4、PSW.6):辅助进位或借位可标志位。F0(PSW.5):用户标志位。是系统预留给用户自己定义的标志位。RS1、RS0(PSW.4、PSW.3):寄存器组选择位。可用软件置位或清零,用于从四组工作寄存器中选定当前的工作寄存器组。OV(PSW.2):溢出标志位。在加法或减法运算时,如运算的结果超出8位二进制数的范围,则OV置1,标志溢出,否则OV清零。P(PSW.0):奇偶标志位。用于记录指令执行后累加器A中1的个数的奇偶性。若累加器A中1的个数为奇数,则P置位,若累加器A中1的个数为偶数,则P清零。其中PSW.1未定义,可供用户使用。3.在8051的存储器结构中,内部数据存储器可分为几个区域?
5、各有什么特点?答:片内数据存储器按功能可以分成以下几个部分:工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区,其中还包含堆栈区。工作寄存器组区,00H1FH单元,可用R0R7等8个寄存器访问;位寻址区,20H2FH单元,可按位方式访问;一般RAM区,30H7FH单元;堆栈区,可从08到7F单元;特殊功能寄存器区位于80HFFH单元。4.什么是堆栈?说明MCS-51单片机的堆栈处理过程。答:堆栈是按先入后出、后入先出的原则进行管理的一段存储区域。CS-51单片机的堆栈是向上生长型的,存入数据是从地址低端向高端延伸,取出数据是从地址高端向低端延伸。入栈和出栈数据是以字节为单位的。入栈时,S
6、P指针的内容先自动加1,然后再把数据存入到SP指针指向的单元;出栈时,先把SP指针指向单元的数据取出,然后再把SP指针的内容自动减1。5.MCS-51单片机有多少根I/O线?它们和单片机的外部总线有什么关系?答:MCS-51单片机有32根I/O线,由P0口经地址锁存器提供低8位(A7A0),P2口提供高8位(A15A8)而形成。数据总线宽度为8位,由P0口直接提供。控制总线由第二功能状态下的P3口和4根独立的控制线RST、EA、ALE和PSEN组成。6.什么是机器周期? MCS-51单片机的一个机器周期包括多少个时钟周期?答:机器周期:机器周期是单片机的基本操作周期,每个机器周期包含S1、S2
7、、S66个状态,每个状态包含两拍P1和P2,每一拍为一个时钟周期(振荡周期)。因此,一个机器周期包含12个时钟周期。7. 如果时钟周期的频率为12MHz,那么ALE信号的频率为多少?答:2MHZ第三章1在MCS-51单片机中,寻址方式有几种?其中对片内RAM可以用哪几种寻址方式?对片外RAM可以用哪几种寻址方式?答:寻址方式2在对片外RAM单元寻址中,用Ri间接寻址与用DPTR间接寻址有什么区别?答:片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单元,而用DPTR作指针间接访问可访问整个64K字节。3在位处理中,位地址的表示方式有哪几种?答:1直接位地址(00H0FFH)。例如:
8、20H2字节地址带位号。例如:20H.3表示20H单元的3位。3特殊功能寄存器名带位号。例如:P0.1表示P0口的1位。4位符号地址。例如:TR0是定时/计数器T0的启动位4写出完成下列操作的指令。(1)R0的内容送到R1中。MOV A,R0MOV R1,A(2)片内RAM的20H单元内容送到片内RAM的40H单元中。MOV 40H,20H(3)片内RAM的30H单元内容送到片外RAM的50H单元中。MOV A,30HMOV R0,#50HMOVX R0,A(4)片内RAM的50H单元内容送到片外RAM的3000H单元中。MOV A,50HMOV DPTR,#3000HMOVX DPTR,A(
9、5)片外RAM的2000H单元内容送到片外RAM的20H单元中。MOV DPTR,#2000HMOVX A,DPTRMOV 20H,A(6)片外RAM的1000H单元内容送到片外RAM的4000H单元中。MOV DPTR,#1000HMOVX A,DPTRMOV DPTR,#4000HMOV DPTR,A(7)ROM的1000H单元内容送到片内RAM的50H单元中。MOV A,#0MOV DPTR,#1000HMOVC A,A+DPTRMOV 20H,A(8)ROM的1000H单元内容送到片外RAM的1000H单元中。MOV A,#0MOV DPTR,#1000HMOVC A,A+DPTRMO
10、VX DPTR,A5区分下列指令有什么不同?(1)MOV A,20H和MOV A,#20H答:前者源操作数是直接寻址,后者源操作数立即寻址。(2)MOV A,R1和MOVX A,R1答:前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。(3)MOV A,R1和MOV A,R1答:前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。(4)MOVX A,R1和MOVX A,DPTR答:前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器整个64K字节。(5)MOVX A,DPTR和MOVC A,A+DPTR答:前者源操作数是访问片外数据存储器,
11、后者源操作数访问程序数据存储器。6设片内RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。分析下列指令执行后片内RAM的20H、40H、10H单元以及P1、P2中的内容。MOV R0,#20HMOV A,R0 ;A=40HMOV R1,A;R1=40HMOV A,R1;A=10HMOV R0,P1;(40H)=0CAHMOV P2,P1P2=0CAHMOV 10H,A(10H)=10HMOV 20H,10H(20H)=10H结果:(20H)=10H、(10H)=10H、(40H)=0CAH、P2=0CAH和P1=0CAH7已知(A)=02H,(R1)=7F
12、H,(DPTR)=2FFCH,片内RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下各条指令执行后目标单元的内容。(1)MOV A,R1结果:累加器A等于70H(2)MOVX DPTR,A结果:片外RAM(2FFCH)单元等于02H(3)MOVC A,A+DPTR结果: 累加器A等于64H(4)XCHD A,R1结果:累加器A等于00H,片内RAM(7FH)单元等于72H8已知:(A)=78H,(R1)=78H,(B)=04H,CY=1,片内RAM(78H)=0DDH,(80H)=6CH,试分别写出下列指令执行后目标单元的结果和相应标志位的
13、值。(1)ADD A,R1;累加器A等于55H,CY等于1(2)SUBB A,#77H;累加器A等于00H,CY等于0(3)MUL AB;累加器A等于E0H,B寄存器等于01H,CY等于1,OV等于0(4)DIV AB;累加器A等于1EH,B寄存器等于00H,CY、OV等于0(5)ANL 78H,#78H;片内RAM(78H)单元等于58H(6)ORL A,#0FH;累加器A等于7FH(7)XRL 80H,A;片内RAM(80H)等于14H9设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器A、R0、17H单元的内容。ANL A,#17H;A=03HORL
14、17H,A;(17H)=37HXRL A,R0;A=34HCPL A;A=CBH结果:A=CBH,(R0)=17H,(17H)=37H10写出完成下列要求的指令。(1)累加器A的低2位清零,其余位不变。ANL A,#11111100B(2)累加器A的高2位置“1”,其余位不变。ORL A,#11000000B(3)累加器的高4位取反,其余位不变。XRL A,#11110000B(4)累加器第0位、2位、4位、6位取反,其余位不变。XRL A,#01010101B11说明LJMP指令与AJMP指令的区别?答:LJMP12设当前指令CJNE A,#12H,10H的地址是0FFEH,若累加器A的值为
15、10H,则该指令执行后的PC值为多少?若累加器A的值为12H呢?答:指令执行后的PC值为1011H,若累加器A的值为12H,则指令执行后的PC值为1001H。13用位处理指令实现P1.4=P1.0(P1.1P1.2)/P1.3的逻辑功能。程序:MOVC,P1.1ORLC,P1.2ANLC,P1.0ORLC,/P1.3MOVP1.4,C14下列程序段汇编后,从1000H单元开始的单元内容是什么?ORG 1000HTAB: DB 12H,34HDS 3DW 5567H,87H答:(1000H)=12H,(1001H)=34H,(1002H)=00H,(1003H)=00,(1004H)=00,(1
16、005H)=67H,(1006H)=55H,(1007H)=87H,(1008H)=00H15试编一段程序,将片内RAM的20H、21H、22H单元的内容依次存入片外RAM的20H、21H、22H中。程序:MOVR0,#20HMOVR2,#03HLOOP:MOV A,R0MOVXR0,AINCR0DJNZR2,LOOPSJMP$16编程实现将片外RAM的2000H2030H单元的内容,全部搬到片内RAM的20H单元开始位置,并将源位置清零。程序:MOVR0,#20HMOVDPTR,#2000HMOVR2,#30HLOOP:MOVXA,DPTRMOV R0,AMOVA,#00MOVXDPTR,A
17、INCDPTRINCR0DJNZR2,LOOPSJMP$17编程将片外RAM的1000H单元开始的100个字节数据相加,结果放于R7R6中。程序:MOVDPTR,#1000HMOVR2,#100MOVR7,#00MOVR6,#00LOOP:MOVXA,DPTRADDA,R6MOVR6,AMOVA,R7ADDCA,#0MOVR7,AINCDPTRDJNZR2,LOOPSJMP$18编程实现R4R3R2,结果放于R7R6R5中。程序:ORG0100HMUL1:MOV A,R2MOV B,R3MUL AB ;R2R3,结果的低字节直接存入积的R5MOV R5,A ;结果的高字节存入R6中暂存起来MO
18、V R6,BMUL2:MOV A,R2MOV B,R4MUL AB ;R2R4,结果的低字节与R6相加后,再存入R6中ADD A,R6MOV R6,AMOV A,B ;结果的高字节加上进位位后存入R7中ADDC A,#00MOV R7,ASJMP$19编程实现把片内RAM的20H单元的0位、1位,21H单元的2位、3位,22H单元的4位、5位,23H单元的6位、7位,按原位置关系拼装在一起放于R2中。程序:MOVC,20H.0MOVA.0,CMOVC,20H.1MOVA.1,CMOVC,21H.2MOVA.2,CMOVC,21H.3MOVA.3,CMOVC,22H.4MOVA.4,CMOVC,
19、22H.5MOVA.5,CMOVC,23H.6MOVA.6,CMOVC,23H.7MOVA.7,CMOVR2,A20用查表的方法实现一位十六进制数转换成ASCII。程序:(设一位十六进制数放在R2中,轮换的ASCII也放于R2中)C16STASC:MOVDPTR,#TABMOVA,R2MOVCA,A+DPTRMOVR2,ARETTAB:DB 30H,31H,32H,33H,34H,35H,36H,37HDB 38H,391H,41H,42H,43H,44H,45H,46H21编程统计从片外RAM2000H开始的100个单元中“0”的个数放于R2中。程序:MOVDPTR,#2000HMOVR3,
20、#100MOVR2,#00LOOP:MOVXA,DPTRJNZNEXTINCR2NEXT:INCDPTRDJNZR3,LOOPSJMP$第四章1.C语言有哪些特点?答:C语言具有以下特点:1)语言简洁、紧凑,使用方便、灵活2)运算符丰富3)数据结构丰富,具有现代化语言的各种数据结构4)可进行结构化程序设计5)可以直接对计算机硬件进行操作6)生成的目标代码质量高,程序执行效率高7)可移植性好2.有哪些数据类型是MCS-51单片机直接支持的?答:MCS-51单片机直接支持的数据类型标准分为基本数据类型和组合数据类型,基本数据类型有字符型char、短整型short、整型int、长整型long、浮点型
21、float、双精度型double、特殊功能寄存器型和位类型,其中char型与short型相同,float型与double型相同。组合数据类型有数组类型、结构体类型、共同体类型和枚举类型,另外还有指针类型和空类型。3.C51特有的数据类型有哪些?答:C51特有的数据类型有特殊功能寄存器型和位类型。4.C51中的存储器类型有几种,它们分别表示的存储器区域是什么?答:C51中的存储器类型有6种,分别如下:data:直接寻址的片内RAM低128B,访问速度快bdata:idata:pdata:用Ri间接访问的片外RAM低256Bxdata:用DPTR间接访问的片外RAM,允许访问全部64KB片外RAM
22、code:程序存储器ROM64KB空间5.在C51中,bit位与sbit位有什么区别?答:bit位类型符用于定义一般的位变量。存储器类型只能是bdata、data、idata,只能是片内RAM的可位寻址区,严格来说只能是bdata。sbit位类型符用于定义在可位寻址字节或特殊功能寄存器中的位,定义时需指明其位地址,可以是位直接地址,可以是可位寻址变量带位号,也可以是特殊功能寄存器名带位号。6.在C51中,通过绝对地址来访问的存储器有几种?答:通过绝对地址来访问存储器有三种方法:1. 使用C51运行库中预定义宏。2. 通过指针访问。3. 使用C51扩展关键字_at_7.在C51中,中断函数与一般
23、函数有什么不同?答:中断函数在定义时后面带interrupt m修饰符,m的取值为031,对应的中断情况如下:0外部中断0,1定时/计数器T0,2外部中断1,3定时/计数器T1,4串行口中断,5定时/计数器T2,其他值预留。编写MCS-51中断函数需要注意如下几点。(1)中断函数不能进行参数传递,如果中断函数中包含任何参数声明都将导致编译出错。(2)中断函数没有返回值。(3)在任何情况下都不能直接调用中断函数(4)如果在中断函数中调用了其他函数,则被调用函数所使用的寄存器必须与中断函数相同,否则会产生不正确的结果。(5)C51编译器对中断函数编译时会自动在程序开始和结束处加上相应的内容。(6)
24、C51编译器从绝对地址8m+3处产生一个中断向量,其中m为中断号,也即interrupt后面的数字。该向量包含一个到中断函数入口地址的绝对跳转。(7)中断函数最好写在文件的尾部,并且禁止使用extern存储类型说明。防止其他程序调用。8.按给定的存储类型和数据类型,写出下列变量的说明形式。(1)在data区定义字符变量val1。char data val1;(2)在idata区定义整型变量val2。int idata val2;(3)在xdata区定义无符号字符型数组val34。unsigned char xdata val34;(4)在xdata区定义一个指向char类型的指针px。char
25、 xdata *px;(5)定义可寻址位变量flag。bit flag;(6)定义特殊功能寄存器变量P3。sfr P3=0xa0;(7)定义特殊功能寄存器变量SCON。sfr SCON=0x98;(8)定义16位的特殊功能寄存器T0。sfr16 T0=0x8a;9.写出下列关系表达式或逻辑表达式的结果,设a=3,b=4,c=5。(1)a+bc&b= =c 结果:假(2)a|b+c&b-c 结果:真(3)!(ab)&!c|1 结果:真(4)!(a+b)+c-1&b+c/2 结果:假10.写出下列C51程序的执行结果。(1)#include extern serial_initial();main
26、()int x,y,z;serial_initial();x=y=8;z=+x;printf(n %d %d %d,y,z,x);x=y=8;z=x+;printf(n %d %d %d,y,z,x);x=y=8;z=-x;printf(n %d %d %d,y,z,x);x=y=8;z=x-;printf(n %d %d %d,y,z,x);printf(n);while(1);结果:8 9 98 8 98 7 78 8 7(2)#include extern serial_initial();main()int x,y,z;serial_initial();printf(input dat
27、a x,y?n);scanf(%d %d,&x,&y);printf(n x y xy xy x=y x!=y x=y);printf(n);printf(n%3d%3d,x,y);z=xy;printf(%5d,z);z=xy;printf(%5d,z);z=x=y;printf(%5d,z);z=x!=y;printf(%5d,z);z=x=y;printf(%5d,z);while(1);执行结果:input data x,y?1 2x y xy xy x=y x!=y x=y1 2 1 1 0 0 1 0(3)#include extern serial_initial();main(
28、)int x,y,z;serial_initial();printf(input data x, y ?n);scanf(%d %d,&x,&y);printf(n x y !x x|y x&y);printf(n%3d%3d,x,y);z=!y; printf(%5d,z);z=x|y; printf(%5d,z);z=x&y; printf(%5d,z);printf(n);printf(n);printf(That is alln);while(1);执行结果:input data x, y ?x y !x x|y x&y 1 2 0 1 1That is all(4)#include
29、extern serial_initial();main()int a,b;unsigned int x,y;serial_initial();a=b=0xaa55;x=y=0xaa55;printf(n a=%4x b=%4x x=%4x y=%4x,a,b,x,y);a=a1;x=x1;printf(n a=%4x b=%4x x=%4x y=%4x,a,b,x,y);printf(n);printf(n);printf(That is all.n);while(1);执行结果:a=aa55 b=aa55 x=aa55 y=aa55a=54aa b=d52a x=54aa y=552aTh
30、at is all.11.break和continue语句的区别是什么?答:break语句可以跳出switch结构,使程序继续执行switch结构后面的一个语句。break语句还可以从循环体中跳出循环,提前结束循环而接着执行循环结构下面的语句。continue语句用在循环结构中,用于结束本次循环,跳过循环体中continue下面尚未执行的语句,直接进行下一次是否执行循环的判定。continue语句和break语句的区别在于:continue语句只是结束本次循环而不是终止整个循环;break语句则是结束循环,不再进行条件判断。12.用分支结构编程实现:输入“1”显示“A”,输入“2”显示“B”,
31、输入“3”显示“C”,输入“4”显示“D”,输入“5”结束。参考程序:#include #include void main(void) unsigned char x;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;while(1)printf(input x:n);/输出提示信息scanf(%c,&x); switch(x)case 1:printf( An);break;case 2:printf( Bn);break;case 3:printf( Cn);break;case 4:printf( Dn);break;case 5:printf( QU
32、ITn);break;default: printf( RETRYn);if (x=5) break;while(1);13.输入3个无符号的字符数据,要求按由大到小的顺序输出。参考程序:#include #include void main(void) unsigned char x,y,z,m;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;printf(input x,y,z:);/输出提示信息scanf(%c,%c,%c,&x,&y,&z); printf(n);if (xy) m=x;x=y;y=m;if (yz) m=y;y=z;z=m;if (
33、xy) m=x;x=y;y=m;printf(output %c,%c,%cn, x,y,z);/输出while(1);14.用3种循环结构编写程序实现输出1到10的平方之和。参考程序:(1)while循环#include /包含特殊功能寄存器库#include /包含I/O函数库void main(void) /主函数int i,s=0; /定义整型变量i=1;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;while (i=10) /累加1到10的平方之和在s中s=s+i*i;i+;printf(1到10的平方之和=%dn,s);while(1);(2)
34、do while循环#include /包含特殊功能寄存器库#include /包含I/O函数库void main(void) /主函数int i,s=0; /定义整型变量i=1;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;do /累加1到10的平方之和在s中s=s+i*i;i+;while (i=10);printf(1到10的平方之和=%dn,s);while(1);(3)for循环#include /包含特殊功能寄存器库#include /包含I/O函数库void main(void) /主函数int i,s=0; /定义整型变量SCON=0x52
35、; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;for (i=1;i=10;i+) s=s+i*i; /累加1到10的平方之和在s中printf(1到10的平方之和=%dn,s);while(1);15.对一个由5个元素组成的无符号字符数组按由小到大的顺序进行排序。参考程序:#include /包含特殊功能寄存器库#include /包含I/O函数库main()unsigned char f5,m,i,j;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;printf(输入任意5个字符:);scanf(%c,%c,%c,%c,%c,&f0,&
36、f1,&f2,&f3,&f4);printf(n);for (i=0;i5;i+) for (j=0;jfj+1) m=fj;fj=fj+1;fj+1=m;printf(由小到大的顺序为:%c,%c,%c,%c,%c ,f0,f1,f2,f3,f4);printf(n);while(1);16.用指针实现,输入3个无符号字符数据,按由大到小的顺序输出。参考程序:#include /包含特殊功能寄存器库#include /包含I/O函数库main()unsigned char x,y,z;unsigned char *p,*p1,*p2,*p3;SCON=0x52; /串口初始化TMOD=0x2
37、0;TH1=0XF3;TR1=1;printf(input x,y and z:n);scanf(%c,%c,%c,&x,&y,&z);printf(n);p1=&x;p2=&y; p3=&z;if (*p1*p2) p=p1;p1=p2;p2=p;if (*p2*p3) p=p2;p2=p3;p3=p;if (*p1*p2) p=p1;p1=p2;p2=p;printf(max to min is:%c,%c,%cn,*p1,*p2,*p3);while(1);17.有3个学生,每个学生都包括学号、姓名和成绩,要求找出成绩最高的学生的姓名和成绩。参考程序:#include /包含特殊功能寄存
38、器库#include /包含I/O函数库struct studentunsigned char number10;unsigned char name10;unsigned int grade;p13;main()unsigned char i,j=0;SCON=0x52; /串口初始化TMOD=0x20;TH1=0XF3;TR1=1;printf(input 3 studend number,name and grade:n);for (i=0;i3;i+)printf(input number:n);scanf(%s,p1i. number);printf(input name:n);sc
39、anf(%s,p1i.name);printf(input grade:n);scanf(%d,&p1i.grade);for (i=1;ip1j.grade) j=i;printf(成绩最高的学生是:%s,成绩是:%d,p1j.name,p1j.grade);printf(n);while(1);第五章1单片机C语言与汇编语言混合编程有哪几种方式?通常采用什么方式?答:单片机C语言和汇编语言混合编程分为汇编中调用C51函数和C51程序中引用汇编,通常使用的是在C51程序中引用汇编。在C51程序中使用汇编语言有两种情况:一种是汇编程序部分和C51程序部分为不同的模块,或不同的文件,通常由C51
40、程序调用汇编程序模块的变量和函数(也可称为子程序或过程);另一种是嵌入式汇编,即在C51程序中嵌入一段汇编语言程序。2简述C51程序调用汇编程序时如何实现参数传递。答:C51中调用汇编程序进行参数传递时都必须严格遵守C51函数的参数和返回值的相关约定。行参数传递的方式有两种,一种是通过寄存器传递参数,C51中不同类型的实参会存入相应的寄存器,在汇编中只需对相应寄存器进行操作,即可达到传递参数的目的;第二种是通过固定存储区传递。3简述嵌入式汇编的实现方法。答:在C51程序中嵌入汇编程序通常的处理方法如下。第一步:在C文件中以如下方式嵌入汇编程序。第二步:在Keil C51软件的Project 窗口右击嵌入汇编程序的C文件,在弹出的快捷菜单中选择Options for .命令,选中右边的Generate Assembler SRC File和Assemble SRC File复选框,使检查框由灰色变成黑色(有效)状态。第三步:根据选择的编译模式,把相应的库文件(如 Small 模式时,是 KeilC51LibC51S.Lib)加入到工程中,该文件必须作为工程的最后文件。4简述C51中调用