来表示机器指令。 2、80C51 单片机有哪几种寻址方式?这几种寻址方式是如何寻址的? 答:共7 种寻址方式,分别为:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,变址寻址,位寻址 和相对寻址。 寄存器寻址方式:由指令指出某一寄存器的内容做为操作数。 直接寻址方式:指令中操作数直接以单元地址的形式给出。 寄存器间接寻址方式 :寄存器中存放的是操作数,而寄存器间接寻址方式,寄存器中存放的则是操作数 的地址,即操作数是通过寄存器间接得到的。 立即寻址方式:操作数在指令中直接给出。 变址寻址方式:变址寻址是为了访问程序存储器中的数据和表格。MCS-51 的变址寻址是以DPTR 或PC作基址寄存器,以累加器A 作变址寄存器,并以两者内容相加形成的16? 位地址做为操作数地址,以达到 访问数据和表格的目的。 位寻址方式:指对片内RAM的位寻址区和某些可寻址的特殊功能寄存器进行位操作的寻址方式。 相对寻址方式:相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。 3、要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式? 答:访问特殊功能寄存器可以采用直接寻址、立即寻址、寄存器寻址和位寻址(针对可以进行位寻址的特 殊功能寄存器)方式。访问片外数据存储器可采用寄存器间接寻址方式。 4、80C51 单片机的指令系统可以分为哪几类?说明各指令的功能。 答:51 单片机指令系统按功能可分为5 类: (1)数据传送指令 主要进行数据的传送、交换等; (2)算术运算
指令 主要进行基本的加减乘除运算; (3)逻辑运算指令 主要实现逻辑运算与移位运算; (4)控制转移指令 主要是实现对程序流程的控制; (5)位操作指令 5、外部数据传送指令有哪几条?有和区别? 答:外部数据传送指令有读指令和写指令两类,每类指令的寻址范围不同,分别为: 读外部存储器指令: MOVX A,@Ri ;寻址范围为256 字节 MOVX A,@DPTR ;寻址范围为64K 字节 写外部存储器指令: MOVX @Ri,A ;寻址范围为256 字节 MOVX @DPTR,A ;寻址范围为64K 字节 6、在89S51 片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H, 请分别分析下段程序按序执行后的结果。 MOV A,40H ;A=48H MOV R0,A ;R0=48H MOV P1,#0FFH ;P1=FFH MOV @R0,30H ;(48H)=38H MOV DPTR,#1246H ;DPTR=1246H MOV 40H,38H ;(40H)=40H MOV R0,30H ;R0=38H MOV 90H,R0 ;(90H)=38H MOV 48H,#30H ;(48H)=30H MOV A,@R0 ;A=40H MOV P2,P1 ;P2=38H 7、略 8、DA A 指令的作用是什么?怎样使用? 答:对十进制BCD 数作加法时进行调整,当结果的低4 位A0~A3>9,或半进位AC=1,则A0~A3+6, 否则不加;当结果的高4 位A4~A7>9,或进位CY=1,则A4~A7+6,否则不加;这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对 BCD 码的加法运算结果自动进行修正,使 其仍为BCD 码表示形式。 9、试编程将片外数据存储器60H 中
的内容传送到片内RAM54H 单元中。 答: MOV R0,#60H MOVX A,@R0 MOV 54H,A 10、试编程将寄存器R7 的内容传送到R1 中去。 答: MOV A,R7 MOV R1,A 11、已知当前PC 值为210H,请用两种方法将程序存储器2F0H 中的常数送入累加器A 中。 答:(1)以程序计数器PC 作为基址寄存器 MOV A,#0E0H MOVC A,@A+PC (2)以数据指针DPTR 作为基址寄存器 MOV DPTR,#02F0H MOV A,#00H MOVC A,@A+DPTR 12、试说明下段程序中每条指令的作用,并分析当指令执行完后,R0 中的内容是什么? MOV R0,#0A7H ;R0=A7H,立即数送寄存器R0 XCH A,R0 ;A=A7H,累加器A 中的数据与R0 中的数据进行交换 SWAP A ;A=7AH,累加器A 中的高低四位进行交换 XCH A,R0 ;R0=7AH,数据交换回R0 13、请用两种方法实现累加器A 与寄存器B 的内容交换。 答:(1)MOV R0,A MOV A,B MOV B,R0 (2)MOV R0,B XCH A,R0 14、试编程将片外RAM中40H 单元的内容与R1 的内容交换。 答: MOV R0,#40H MOVX A,@R0 XCH A,R1 MOVX @R0,A 15、已知:A=0C9H,B=8DH,CY=1。 执行指令 ADDC A,B 结果如何? A=57H,CY=1,OV=1,AC=1,P=1 执行指令 SUBB A,B 结果如何? A=3BH,CY=0,AC=1,OV=1 16、试编程将片外RAM中30H 和31H 单元中的内容相乘,结果存放在32H(低位)和33H(高位)单元中。 答: MOV R0,#30H MOVX A,@R0 MOV B,A INC R0
MOVX A,@R0 MUL AB INC R0 MOVX @R0,A MOV A,B INC R0 MOVX @R0,A 17、试用3 种方法将累加器A 中的无符号数乘2. 答:(1)MOV R0,A ADD A,R0 (2)MOV B,#2 MUL AB (3)RL A 18、分析依次执行下列指令的结果: MOV 30H,#0A4H ;(30H)=A4H MOV A,#0D6H ;A=D6H MOV R0,#30H ;R0=30H MOV R2,#47H ;R2=47H ANL A,R2 ;A=46H ORL A,@R0 ;A=E6H SWAP A ;A=6EH CPL A ;A=91H XRL A,#0FFH ;A=6EH ORL 30H,A ;(30H)=EEH 19、求下列指令执行后,累加器A 及PSW中进位CY、奇偶位P 和溢出位OV 的值。 (1)当A=5BH 时 ;ADD A,#8CH (2)当A=5BH 时 ;ANL A,#7AH (3)当A=5BH 时 ;XRL A,#7FH (4)当A=5BH,CY=1 时 ;SUBB A,#0E8H 答:(1)A=E7H,CY=1,P=0,OV=0 (2)A=5AH ,P=0 (3)A=24H ,P=0 (4)A=72H,CY=1,P=0,OV=0 20、把累加器A 中的低4 位数据送到外部数据存储器的2000H 单元。 答: ANL A,#OFH MOV DPTR,#2000H MOVX @DPTR,A 21、试说明指令CJNE @R1,#7AH,10H 的作用,若本指令地址为250H,其转移地址是多 少? 答:指令作用:如果以R1 内容为地址的单元中的数据等于7AH,则程序顺序执行,否则转移后继续执行。 若本指令地址为250H,则转移地址为250H+03H+10H= 263H。 22、将累加器A 中的数据由0 递增,加到50,结果在累加器A 中。 答: CLR A MOV R0,#50 L1: INC A DJNZ R0,L1 23、试说明压栈