第三章指令系统及汇编语言程序设计.docx |
您所在的位置:网站首页 › 3fh转十进制 › 第三章指令系统及汇编语言程序设计.docx |
第三章指令系统及汇编语言程序设计.docx 《第三章指令系统及汇编语言程序设计.docx》由会员分享,可在线阅读,更多相关《第三章指令系统及汇编语言程序设计.docx(20页珍藏版)》请在冰豆网上搜索。 第三章指令系统及汇编语言程序设计 第三章指令系统及汇编语言程序设计 3-1选择题 1、MOVX A,@DPTR指令中源操作数的寻址方式是( B ) (A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 2、 ORG 0003H LJMP2000H ORG000BH LJMP3000H当CPU响应外部中断0后,PC的值是( B ) (A)0003H(B)2000H(C)000BH(D)3000H 3、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=( D ) (A)2000H(B)2001H(C)2002H(D)2003H 4、51执行完MOV A,#08H后,PSW的一位被置位( D ) (A)C(B)F0(C)OV(D)P 5、下面条指令将MCS-51的工作寄存器置成3区( B ) (A)MOV PSW,#13H(B)MOV PSW,#18H (C)SETB PSW.4 CLRPSW.3 (D)SETBPSW.3 CLRPSW.4 6、执行MOVX A,DPTR指令时,MCS-51产生的控制信号是( C ) (A)/PSEN(B)ALE(C)/RD(D)/WR 7、MOVC,#00H的寻址方式是( A ) (A)位寻址(B)直接寻址(C)立即寻址(D)寄存器寻址 8、ORG0000H AJMP0040H ORG0040H MOVSP,#00H 当执行完左边的程序后,PC的值是( C ) (A)0040H(B)0041H(C)0042H(D)0043H 9、对程序存储器的读操作,只能使用( D ) (A)MOV指令(B)PUSH指令(C)MOVX指令(D)MOVC指令 10、MCS-51单片机可分为两个优先级别。 各中断源的优先级别设定是利用寄存器( B ) (A)IE (B)IP (C)TCON (D)SCON 11、在寄存器间接寻址方式中,指定寄存器中存放的是( B ) (A)操作数 (B)操作数地址 (C)转移地址 (D)地址偏移量 12、在MCS—51中,需双向传递信号的是( B ) (A)地址线 (B)数据线 (C)控制线 (D)电源线 13、下列指令中于进位标志位CY无关的指令有( D ) (A)移位指令 (B)位操作指令 (C)十进制调整指令 (D)条件转移指令 14、在程序储存器的读操作,只能使用( D ) (A)MOV指令 (B)PUSH指令 (C)MOVX指令 (D)MOVC指令 15、以下运算中对溢出标志OV没有影响或不受OV影响的运算是( A ) (A)逻辑运算 (B)符号数加减法运算 (C)乘法运算 (D)除法运算 16、指令AJMP的跳转范围是(C) (A)256B (B)1KB (C)2KB (D)64KB
3-2判断题 1、MCS-51的相对转移指令最大负跳距是127B。 ( × ) 2、当MCS-51上电复位时,堆栈指针SP=00H。 ( × ) 3、调用子程序指令(如: CALL)及返回指令(如: RET)与堆栈有关但与PC无关。 ( × ) 4、MOV @R1,#80H。 ( √ ) 5、INC DPTR ( √ ) 6、DEC DPTR ( × ) 7、CLR R0 ( × ) 8、ANL R1,#0FH ( × ) 9、ADDC A,C ( × ) 10、XOR P1,#31H ( √ ) 11、MOV28H,@R2 ( ×) 12、CLR R0 ( × ) 13、CPLR5 ( × ) 14、MOV R0,R1 ( ×) 15、PUSH DPTR ( × ) 16、PUSH R1 ( × ) 17、RLC R0 ( × ) 18、DJNZ@R1,32H ( × ) 19、寄存器DPTR可拆开成两个独立的寄存器DPH与DPTL使用。 ( √ ) 3-3填空题 1、JBC bit rel指令是对位bit进行判断,若bit=1则转移,并对该位 清零 。 2、指令POP B的源操作数是 SP ,是 寄存器间接寻址 寻址方式,目的操作数是 B ,是 寄存器寻址 寻址方式。 3、已知SP=25H,PC=4345H,(24H)=12H,(25H)=34H,(26H)=56H,当执行RET指令后,SP= 23H ,PC= 3412H 。 4、指令是由 操作码 和 操作数 构成。 5、MCS-51单片机有立即数寻址 、 直接寻址、 寄存器寻址、 寄存器间接寻址、 变址寻址 、 相对寻址、 位寻址七种寻址方式。 6、MOVC A,@A+DPTR第二操作数采用是 变址 寻址方式 7、执行ANLP1,# 0F H后,可对P1口的高四位清零。 8、若执行XRL P1,# 11000000B后,可对P1口的高两位取反。 9、堆栈必须遵循“ 后进先出 ”的原则。 10、JZe的操作码地址为1000H,e=20H,它转移的目标地址为1022H。 11、MOVA,40H指令对于源操作数的寻址方式是直接寻址。 12、已知A=0F8H,当执行ADDA,#0A9H指令后,PSW中的OV=、CY=、AC=、P=。 若是有符号数,A中的结果用十进制表示是 [解答]OV: 0、CY: 1、AC: 1、P: 1A: -95 3-4问答题与编程题 1、8051单片机指令系统按功能可分为几类? 答: MCS-51单片机指令系统按功能可分为5类:
(1)数据传送指令
(2)算术运算指令 (3)逻辑运算和移位指令 (4)控制转移指令 (5)位操作指令 2、什么叫寻址方式? 具有几种寻址方式? 它们的寻址范围如何? 答: 寻址方式: 寻址方式就是寻找指令中操作数或操作数所在地址的方式。 也就是如何找到存放操作数的地址,把操作数提取出来的方法。 MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表:
寻址方式 使用的变量 寻址范围 立即寻址
程序存储器 直接寻址
内部RAM低128个字节; 特殊功能寄存器SFR 寄存器寻址 R0~R7;A、B、DPTR、C
寄存器间接寻址 @R0、@R1、SP 内部RAM、堆栈指针SP @R0、@R1、@DPTR 外部RAM 变址寻址 @A+PC、@A+DPTR 程序存储器 相对寻址 PC+偏移量 程序存储器 位寻址
内部RAM低128B位寻址区 可位寻址的特殊功能寄存器位 3、堆栈的功能是什么? 有什么操作原则? 栈顶地址如何指示? 答: 堆栈是存储器中的特殊群体。 在内RAM中专门辟出一个连续存储区,用来暂时存放子程序断口地址、中断断口地址和其他需要保存的数据。 堆栈操作无论是存入或取出数据,均只能依次存人或依次取出,不能越位,必须遵循“先进后出"、“后进先出”的原则。 堆栈指针SP指出栈顶存储单元的地址 4、什么是汇编? 什么是汇编语言? 它有什么特点? 4、答: 汇编: 汇编语言源程序在交付计算机执行之前,需要先翻译成目标程序,这个翻译过程叫汇编。 汇编语言: 是用助记符替代机器语言中的操作码,用16进制数替代二进制代码。 特点是比较直观,易于记忆和检查,可读性较好。 但是计算机执行时,必须将汇编语言翻译成机器语言,不同的微处理器有不同的汇编语言。 5、什么叫指令周期? 答: 指令周期: 指执行一条指令所占用的全部时间。 通常一个指令周期含1~4个机器周期。 6、什么是指令? 什么是程序? 答: 指令: 人为输入计算机,由计算机识别并执行一步步操作的命令的形式称为指令。 程序: 一系列指令的有序集合称为程序。 7、什么是进位和溢出? 答: 两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。 例如将正数3FH和负数D0H相加,其结果不会超出8位字长的表示范围,所以其结果10FH中的进位是正常进位(也就是模)。 但是,若正数3FH与正数70H相加,其结果为AFH,最高位为"1",成了负数的含义,这就不合理了,这种情况称为溢出。 8、“DA A”指令的作用是什么? 怎样使用? 答: 这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。 在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。 用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。 9、片内RAM20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作? 答: 虽然内部RAM位寻址区的位地址范围00H~7FH与低128个单元的单元地址范围00H~7FH形式完全相同,但是在应用中可以通过指令的类型区分单元地址和位地址。 位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。 MOVC,bit MOVbit,C CLRbit SETBbit CPLbit ANLC,bit ANLC,/bit JBbit,rel JNBbit,rel 10、8051单片机指令系统中有长跳转LJMP,长调用LCALL指令,为何还没有设置了绝对跳转AJMP,绝对调用ACALL指令? 在实际使用是应怎样考虑? 答: 在实际应用中,可从寻址范围和指令长度两个方面来选择长跳转指令LJMP和短跳转指令AJMP、长调用指令LCALL和短调用指令ACALL。 长跳转LJMP在64KB范围内转移,而短跳转AJMP只能在2KB空间转移。 长调用LCALL调用位于64KB程序空间的子程序,而短调用ACALL调用位于2KB程序空间范围的子程序。 AJMP、ACALL指令代码长度为2个字节;LJMP、LCALL指令代码长度为3个字节。 13、在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址? 使用中有何不同? 答: 使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。 使用@A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。 14、设片内RAM中的(40H)=50H,写出执行下列程序段后寄存器A和R0,以及片内RAM中50H和51H单元的内容为何值? 答: 结果为: (A)=30H (R0)=50H (50H)=00H (51H)=30H 15、堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。 执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化? 答: 结果为: (61H)=24H (62H)=10H (30H)=00H (31H)=0FFH DPTR=2410H SP=60H 16、在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。 分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。 MOV A,40H MOV R0,A MOV P1,#0F0H MOV @R0,20H MOV 50H,R0 MOV A,@R0 MOV P2,P1 答: 指令 源操作数的寻址方式 执行指令后的结果 MOVA,40H 直接寻址 (A)=50H MOVR0,A 寄存器寻址 (R0)=50H MOVP1,#80H 立即寻址 (P1)=80H MOV@R0,20H 寄存器间接寻址 (50H)=30H MOVDPTR,#2000H 立即寻址 (DPTR)=2000H MOV40H,30H 直接寻址 (40H)=40H MOVR0,30H 直接寻址 (R0)=40H MOVD0H,R0 直接寻址 (D0H)=40H MOV10H,#10H 立即寻址 (10H)=10H MOVA,@R0 寄存器间接寻址 (A)=50H MOVP2,P1 寄存器寻址 (P2)=80H 17、完成以下的数据传送过程。 (1)R1的内容传送到R0。 (2)片外RAM20H单元的内容送R0。 (3)片外RAM20H单元的内容送片内RAM20H (4)片外RAM1000H单元的内容送片内RAM20H (5)片外RAM20H单元的内容送R0。 (6)片外RAM2000H单元的内容送片内RAM20H (7)片外RAM20H单元的内容送片外RAM20H 答: (1)R1的内容传送到R0; MOV A, R1 MOV R0, A (2)片外RAM20H单元内容送R0; MOV DPTR, #0020H MOVX A, @DPTR MOV R0, A (3)片外RAM20H单元的内容送片内RAM20H单元; MOV DPTR, #0020H MOVX A, @DPTR MOV 20H, A (4)片外RAM1000H单元的内容送片内RAM20H单元; MOV DPTR, #1000H MOVX A, @DPTR MOV 20H, A (5)ROM2000H单元的内容送R0单元; MOV A, #00H MOV DPTR, #2000H MOVC A, @A+DPTR MOV R0H, A (6)ROM2000H单元的内容送片内RAM20H单元; MOV A, #00H MOV DPTR, #2000H MOVC A, @A+DPTR MOV 20H, A (7)ROM2000H单元的内容送片外RAM20H单元。 MOV A, #00H MOV DPTR, #2000H MOVC A, @A+DPTR MOV DPTR, #0020H MOVX @DPTR, A
18、设有两个4位BCD码,分别存放在片内RAM的23H,22H单元和33H,32H单元中,求它们的和,并送入43H,42H单元中去。 (以上均为低位字节,高位在高字节)。 18、解: ORG 0000H LJMP START ORG 0030H START: MOV A,22H ADD A,32H DAA MOV 42H,A MOV A,23H ADDC A,33H DA A MOV 43H,A SJMP$ END 19、编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。 20、已知内部RAM的BLOCK单元开始有一无符号数据块,块长在LEN单元。 请编出求数据块中各数累加和并存入SUM单元的程序。 20、编程计算片内RAM区30H~37H的8个单元中数的算术平均值,结果存在3AH单元中。 21、把内部RAM中起始地址为DATA的数据串传送到外部RAM以BUFFER为首地址的区域,直到发现“$“字符的ASCⅡ码为止。 同时规定数据串的最大长度为32个字节。 22、设内部RAM的20H和21H单元中有两个带符号数,将其中的大数存放在于22H单元中,编出程序。 23、设有100个有符号数,连续存放在片外RAM以2200H为首地址的存储区中,试片成统计其中正数、负数、零的个数。 24、编程将内部数据存储器20H~24H单元压缩的BCD码转换成ASCⅡ存放在于25H开始的单元。 25、试编一查表程序,从首地址为2000H、长度为9FH的数据块中找出第一个ASCII码A,将其地址送到20A0H和20A1H单元中。 26、片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 27、用查表法编一子程序,将R3中的BCD码转换成ASCII码。 28、片内RAM40H开始的单元内有10个字节的无符号二进制数,编程找出其中最大值并存于50H单元中. 29、编制一个循环闪烁灯的程序。 有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。 画出电路图。 30、设计一个4位数码显示电路,并用汇编语言编程使"8"从右到左显示一遍。 31、编制一个循环闪烁的程序。 有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁10次,循环不止。 画出电路图。 32、利用89C51的P1口控制8个发光二极管LED。 相邻的4个LED为一组,使2组每隔0.5s交替发亮一次,周而复始。 试编写程序。 19—32编程答案: 19、解: ORG0000H LJMPMAIN ORG0030H MAIN: MOVR7,#20H MOVR1,#40H MOVDPTR,#3000H LOOP: MOVA,@R1 MOVX@DPTR,A INCR1 INCDPTR DJNZR7,LOOP SJMP$ END
20、解: 参考程序: ORG0200H LEN: DATA20H SUM: DATA21H BLOCK: DATA22H CLRA ;A清零 MOVR2,LEN ;块长度送R2 MOVR1,#BLOCK ;块始址送R1 INCR2 ;R2←块长+1 SJMPCHECK LOOP: ADDA,@R1 ;A←A+(R1) INCR1 ;修改数据块指针R1 CHECK: DJNZR2,LOOP MOVSUM,A ;存累加和 END
20、解: ORG0000H LJMPMAIN ORG0030H MAIN: MOVR0,#30H MOVR1,#00H MOVR2,#00H MOVR3,#07H LP2: MOVA,@R0 ADDA,R2 MOVR2,A
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |