指令系统及汇编语言程序设计 联系客服

发布时间 : 星期日 文章指令系统及汇编语言程序设计更新完毕开始阅读32ce775032d4b14e852458fb770bf78a65293a98

第3章 指令系统及汇编语言程序设计

一、简答题

1、 80C51系列单片机的指令系统有何特点?

2、 80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何? 3、 访问特殊功能寄存器SFR可以采用哪些寻址方式? 4、 访问内部RAM单元可以采用哪些寻址方式? 5、 访问外部RAM单元可以采用哪些寻址方式? 6、 访问外部程序存储器可以采用哪些寻址方式?

7、 为什么说布尔处理功能是80C51单片机的重要特点?

8、 对于80C52单片机内部RAM还存在高128字节,应采用何种方式访问? 9、 试根据指令编码表写出下列指令的机器码。

(1) MOV A,#88H (2) MOV R3,50H (3) MOV P1.1,#55H (4) ADD A,@R1 (5) SETB 12H 10、 完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指

令序列。

(1) 将R0的内容传送到R1;

(2) 内部RAM单元60H的内容传送到寄存器R2;

(3) 外部RAM单元1000H的内容传送到内部RAM单元60H; (4) 外部RAM单元1000H的内容传送到寄存器R2;

(5) 外部RAM单元1000H的内容传送到外部RAM单元2000H。 11、 11、若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段

后上述各单元内容的变化。 MOV A,@R1 MOV @R1,40H MOV 40H,A MOV R1,#7FH 12、 若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20)=0FH,

试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指出CY、AC、和OV的值。 (1) MOV A,@R0 (2) ANL 40H,#0FH (3) ADD A,R4 (4) SWAP A (5) DEC @R1

(6) XCHD A,@R1 13、 若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、

42H单元中的内容各为多少? MOV A,50H MOV R0,A MOV A,#00H MOV @R0,A MOV A,3BH MOV 41H,A MOV 42H,41H 14、 试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。

(1) 使ACC.0置位; (2) 清除累加器高4位;

(3) 清除ACC.3,ACC.4,ACC.5,ACC.6。 15、 试编写程序,将内部RAM的20H、21H、22H三个连续单元的内容依次存入2FH、2EH和

2DH单元。 16、 试编写程序,完成两个16位数的减法:7F4DH-2B4EH,结果存入内部RAM的30H和

31H单元,31H单元存差的高8位,30H单元存差的低8位。 17、 试编写程序,将R1中的低4位数与R2中的高4位数合并成一个8位数,并将其存放

在R1中。 18、 试编写程序,将内部RAM的20H、21H单元的两个无符号数相乘,结果存放在R2、R3

中,R2中存放高8位,R3中存放低8位。 19、 若(CY)=1,(P1)=10100011B,(P3)=01101100B。试指出执行下列程序段后,CY、

P1口及P3口内容的变化情况。 MOV P1.3,C MOV P1.4,C MOV C,P1.6 MOV P3.6,C MOV C,P1.0 MOV P3.4,C 20、 若单片机的主频为12MHz,试用循环转移指令编写延时20ms的延时子程序。并说明这

种软件延时方式的优缺点。 21、 80C51单片机汇编语言有何特点? 22、 利用80C51单片机汇编语言进行程序设计的步骤如何? 23、 常用的程序结构有哪几种?特点如何? 24、 子程序调用时,参数的传递方法有哪几种? 25、 什么是伪指令?常用的伪指令功能如何? 26、 设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存

放在24H、25H中,试编写出16位数相加的程序。 27、 编写一段程序,把外部RAM中1000H~1030H的内容传送到内部RAM的30H~60H中。 28、 编写程序,实现双字节无符号数加法运算,要求 (R1R0)+(R7R6)→(61H60H)。 29、 若80C51的晶振频率为6MHz,试计算延时子程序的延时时间。

DELAY:MOV R7,#0F6H LP:MOV R6,#0FAH DJNZ R6,$ DJNZ R7,LP RET 30、 在内部RAM 的21H单元开始存有一组单字节不带符号数,数据长度为30H,要求找出

最大数存入BIG单元。 31、 编写程序,把累加器A中的二进制数变换成3位BCD码,并将百、十、个位数分别存

放在内部RAM的50H、51H、52H中。 32、 编写子程序,将R1中的2个十六进制数转换为ASCII码后存放在R3和R4

中。 33、 编写程序,求内部RAM中50H~59H十个单元内容的平均值,并存放在5AH单元。 34、 指令由哪几部分组成? 35、 什么是汇编语言指令?为什么说汇编语言指令比机器语言指令更容易理解和记忆?通

过什么方式可将汇编语言程序转化为机器语言程序? 36、 MCS-51汇编语言中有哪些常用的伪指令?各起什么作用? 37、 汇编语言程序和汇编程序两术语含义相同吗? 38、 什么是寻址方式?对于双操作数指令来说,为什么不需要指定操作结果存放位置? 39、 给出下列指令中每一操作数的寻址方式。

MOV A, #23H

MOV 23H,A MOV 90H, 23H MOV 23H, @R0 INC A 40、 位地址90H和字节地址90H及P1.0有何异同?如何区别?位寻址和字节寻址如何区分?

在使用时有何不同? 41、 要访问专用寄存器和片外数据寄存器,应采用什么寻址方式?举例说明。 42、 编程将内部RAM的20H单元的内容传送给外部RAM的2000H单元。 43、 编程将内部数据存储器20H~30H单元内容清零。 44、 已知A=83H,R0=17H,(17H):34H,写出下列程序段执行完后的A中的内容。

ANL A, #17H ORL 17H,A XRL A, @R0 CPL A 45、 编程查找内部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将将

50H单元置为0FFH,否则清50H单元为0。 46、 已知单片机的晶振为12MHz,分别设计延时0.1s、1s、lmin的子程序。 47、 查找20H~4FH单元中出现00H的次数,并将查找结果存入50H单元 48、 试编程使内部RAM的20H~4FH单元的数据块按降序排列。 49、 内部RAM的20H单元开始有一个数据块,以0DH为结束标志,试统计该数据块长度,

将该数据块传送到外部数据存储器7E01H开始的单元,并将长度存入7E00H单元。 50、 试编写一个用查表法查0~9字形段码的子程序,调用子程序前,待查表的数据存放在

累加器A中,子程序返回后,查表的结果也存放在累加器A中。 51、 内部RAM的DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果

存入SUM和SUM+1单元。 52、 MCS-51内部RAM前128字节支持哪些寻址方式?请写出用不同寻址方式将内部RAM 30H

单元信息传送到累加器A的指令或程序片段;内部RAM后128字节支持哪些寻址方式?请写出将内部RAM 80H单元信息传送到累加器A的指令或程序片段。 53、 写出实现下列要求的指令或程序片段,并在仿真机上验证(假设指令代码从2000H单元

开始存放)。

(1) 将内部RAM 20H单元内容与累加器A相加,结果存放在20H单元中。 (2) 将8032内部RAM 80H单元内容与内部RAM 31H单元内容相加,结果存放到内部RAM

31H单元中。

(3) 将内部RAM 20H单元内容传送到外部RAM 20H单元中。

(4) 将程序状态字寄存器PSW内容传送到外部RAM的0D0H单元中。

(5) 将内部RAM 00H~7FH单元,共128字节传送到以8000H为首址的外部RAM中。 (6) 将外部RAM 8000H~803FH单元,共64字节传送到以40H为首址的内部RAM中。 (7) 将外部RAM 8000H~807FH单元,共128字节传送到以0000H为首址的外部RAM中。 (8) 将存放在内部RAM的40H、41H和外部RAM的8000H、8001H的16位二进制数相加,

结果存放在内部RAM的40H和41H单元中(假设低位字节存放在低地址中)。

(9) 如果0~9七段数码显示器对应的字模码3P,06,5B,4F,66,6D,7D,07,7E6F

存放在1000H为首址的程序存储器中,写出将数字4对应的字模码输出到外部RAM 3003H单元(即扩展I/O端口地址)的程序段。

(10) 使内部RAM 20H单元的b7和b3清零,其他位不变。

(11) 使内部RAM 20H单元的b7和b3置1,b5清零,其他位不变。 (12) 将内部RAM 20H单元的b7和b3置1,b5取反,其他位不变。 (13) 将DPH寄存器的b7、b5位清零,将b2、b0位置1,其他位不变。

(14) 将存放在内部RAM 40H、41H和外部RAM 8000H、8001H的四位BCD码相加,结果存

放在内部RAM 40H和41H单元中(假设低位字节存放在低地址中)。

(15) 将立即数32H传送到内部RAM 30H单元中。

(16) 将立即数32H传送到8032 CPU内部RAM 88H单元中。

54、 假设内部RAM(30H)=3FH,累加器A=0FEH,R0=30H,SP=07H,PSW=00H,则执行如下

指令后,各存储单元及寄存器内容是什么(假设各小题相互独立)? (1) MOV A, @R0 A= 。

(2) INC A A= ;PSW= 。 (3) MOV A, #01H

MOV A, #04H ADD A, @R0 INC R0 MOV @R0, A

A= ;PSW= ;R0= ;(30H)= 。

(4) ANL A, @R0 A= ;PSW= 。 (5) PUSH ACC

PUSP 30H A= ;PSW= 。

55、 假设4位BCD码压缩存放在R3、R2中,试编写BCD减1的程序段,并在仿真机上验证。 56、 输入、编译、运行下列程序段,并指出复位后和程序执行过程中SP、程序计数器PC

的变化以及程序执行结束后累加器ACC、内部RAM 30H~33H单元内容。

ORG 0000H LJMP Main ORG 1000H

Main: MOV SP, #6FH

MOV R0, #30H MOV Rl, #32H MOV 30H,#12H MOV 31H,#34H MOV 32H,#76H MOV 33H,#98H LCALL SUBl NOP

ORG 2000H

SUBl: PUSH Acc

PUSH PSW MOV A, @R0 ADD A, @R1 MOV @R0,A INC R0 RET

57、 假设程序头中含有如下变量定义伪指令。

TXDBUF DATA #40H BDATA DATA #28H

(1) 请指出“MOV R0,#TXDBUF”指令、“MOV R0, TXDBUF”指令目的操作数的寻址方式 (2) 执行如下程序段后,内部RAM 40H~4FH单元内容是什么?28H单元内容又是什么?

MOV BDATA, #10H MOV R0, #XDBUF CLR A LOOP:

MOV @R0, A INC A INC R0

DJNZ BDATA,LOOP END