1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 单片机微型计算机原理及接口技术 单片机微型计算机原理及接口技术课后习题答案第4章.

单片机微型计算机原理及接口技术 单片机微型计算机原理及接口技术课后习题答案第4章.

时间:2019-07-30 16:13:07

相关推荐

单片机微型计算机原理及接口技术 单片机微型计算机原理及接口技术课后习题答案第4章.

《单片机微型计算机原理及接口技术课后习题答案第4章.docx》由会员分享,提供在线免费全文阅读可下载,此文档格式为docx,更多相关《单片机微型计算机原理及接口技术课后习题答案第4章.docx》文档请在天天文库搜索。

1、单片机微型计算机原理及接口技术课后习题答案第4章4-1 分别指出下列指令中的源操作数和目的操作数的寻址方式源操作数寻址方式目的操作数寻址方式(1)MOV P1,20H直接寻址直接寻址(2)MOV A,#30H立即数寻址寄存器寻址(3)ADD A,@R1寄存器间接寻址寄存器寻址(4)ANL A,B寄存器寻址寄存器寻址(5)MOV 33H,A寄存器寻址直接寻址(6)SETB C位寻址位寻址(7)CLR C位寻址位寻址4-2 试述指令 MOV A,R0和MOV A,@R0的区别两条指令的目的操作数相同,两条指令的区别在于源操作数来源不同:MOV A,R0 指令的源操作数就是R0寄存器的内容;而MOV A,@R0 指令的源操作数是位于存储器单元内,且存储器单元的地址是R0寄存器的内容。4-3 试述指令MOV A,20H和MOV A,#20H的区别MOV A,20H 源操作数是直接寻址,20H表示。

2、源操作数所在存储器单元的地址。MOV A,#20H 源操作数是立即数寻址,#20H是立即数,也就是源操作数。4-4 说明一下指令中源操作数所在的存储器类型。 (1)MOV A,#30H; 立即数#30H,就是源操作数,存在于指令中,所以位于程序存储器。(2)MOV A,30H; 30H是源操作数所在数据存储单元的地址,所以源操作数位于数据存储器。(3)MOVC A,@A+DPTR;源操作数是变址寻址, 助记符MOVC表示源操作数位于程序存储器。(4)MOVX A,@DPTR; 源操作数是寄存器间接寻址, 助记符MOVX表示源操作数位于外部数据存储器。4-5 判断下列指令书写是否正确:(1)MOV A,B; ✔(2)MOV A,#3000H ; ✘,因为A是8位寄存器,而#3000H是16位数值,没法全部存到A里(3)INC,#20H ; ✘ 只能INC [emailprotected]/DP。

3、TR(4)MOV 5,A ; ✔,注意目的操作数是直接寻址方式,不是立即寻址(5)MOV 30H,40H; ✔(6)MOV B,@DPTR ; ✘,@DPTR寻址用于MOVX指令,不能用于MOV指R(7)CJNE 30H,#80H,NEXT ; ✘, CJNE指令格式只能是CJNE [emailprotected],#data,rel或CJNE A,direct,rel(8)POP A ; ✘ 只能是直接寻址方式POP direct,正确的是POP ACC(9)PUSH ACC; ✔(10)SJMP 2000H ; ✘ rel的范围是-128~127(用补码表示其值)共256B范围 4-6 设ACC=12H,B=64H,SP=60H,30H中存放的是78H,试分析下列程序执行后,ACC、B、30H、SP中的内容分别为多少,并画出堆栈示意图。程序:PUSH ACC PUSH B PUSH 30H POP A。

4、CC POP B POP 30H 62H 62H 61H SP 61HSP 60H 12H 60H SP SP 62H 78H 62H 64H 61H 64H 61H 12H 60H 12H 60H SP 62H 62H 62H 64H 61H SP 61H 61H 12H 60H 12H 60H SP 60HACC=78H; B=64H; (30H)=12H; SP=60H4-7 下面是一个压缩BCD码相加的程序,参考其设计1个2字节压缩BCD码加法程序。BCDAD: CLR C MOV A,30H ;A中为加数 ADDC A,40H ;实现8位相加 DA A ;十进制调整 MOV 30H,A ;送回原处 RET答:假设2字节压缩BCD码分别存储在地址30H和40H开始的存储单元中,结果存到50H开始的存储单元中,其中高位地址存放高位数据(例BCD码分别1001H,2002H,则(30H。

5、)=10H; (31H)=01H; (40H)=20H; (41H)=02H),BCDAD: MOV R0,#31H MOV R1,#41H MOV A,@R0 ;取第一(低)字节(BCD码)ADD A,@R1 ;加第一(低)字节(BCD码)DA AMOV 51H,A ;存第一字节和(BCD码) DEC R0 ; R0指向第二(高)字节BCD码 DEC R1 ; R1指向第二(高)字节BCD码 MOV A,@R0 ;取第二(高)字节BCD码ADD A,@R1 ;加第二(高)字节(BCD码)DA AMOV 50H,A ;存第一字节和(BCD码) RET4-8 已知在33H-30H中放有一个32位二进制数(设为原码数),要求将其转换为补码送入原地址中,其中高位地址存放高位数据答:严格说本题需要先判断32位二进制数是正数还是负数,也就是判断33H的D7位是否为1,若是1,表明此32位数是负数,就。

6、进行补码运算,若是正数,就不需要求补码运算。SUBCPL: MOV A,33HJNC ACC.7,SUBRETURNMOV A,30HCPL AADD A, #01H; 这里不但加1,而且还要关心加1后数据是否有进位,所以不能用INC AMOV 30H,AMOV A,31HCPL AADDC A, #00H; 这里加法的作用是将前数加1后的进位加进来,所以不能用INC AMOV 31H,AMOV A,32HCPL AADDC A, #00H; 这里加法的作用是将前数加进位后,若有进位也加进来,所以不能用INC AMOV 32H,AMOV A,33HCPL AADDC A, #00H; 这里加法的作用是将前数加进位后,若有进位也加进来,所以不能用INC ASETB ACC.7; 这里加法的作用MOV 33H,ASUBRETURN: RET END4-9 执行下面的指令MOV A,#34HMO。

7、V B,#40HMUL AB执行后,A寄存器中的数据是(00H),B寄存器中的数据是(0DH)4-10 ;XRL A, A ;该指令有错,编译时会显示错误:INVALID REGISTER,应该修改为:XRL A, ACC ;(或者改为XRL ACC, A)INC AADDC A, #0A6HDA A上述指令执行后,A的内容是(07H),CY是(1)4-11 假定30H单元开始的4个字节存放的是1个32位无符号数,40H单元开始的4个字节存放的是另一个32位无符号数,低位地址中存放低位数据,使说明下列程序段完成什么功能?请给每条指令后加上注释。 MOV R0,#33H ;将立即数33存放到工作寄存器R0中 MOV R1,#43H ;将立即数43存放到工作寄存器R1中 MOV R2,#04 ;将立即数43存放到工作寄存器R1中LOOPA: MOV A,@R0 ;将R0的内容33H送A CJN。

8、E A,@R1,L1 ;比较33H和R1的内容43H的大小,如果相等,就继续向下执行,如果不相等,且(33H)

9、≠0且R0-1=0(B)R0≠0或CY=1(C)R0≠0或R0+1=0(D)R0≠0且R0-1≠0注:本题指令DJNZ R0,LOOPN,在R0=0时也执行循环,因R0-1=255≠0。4-13 已知一数据区中的数据为:(本题是微机原理的程序,对单片机错误较多,取消,或者做如下改正)STR1 DB 0,1; 改为:STR1: DB 0,1;STR2 DB '45'; 改为:STR2: DB '45';NUMB DB 2DUP(0); 改为:NUMB: DB ‘2DUP(0)’;NUMW DB 10H ,-60H; 改为:NUMW: DB 10H ,-60H请画出该数据区中数据存储的形式4-14 根据下列程序段回答问题(1)至(5),其中BUF1、BUF2均为字节存储区首址。MOV R0,#BUF1MOV R1,#BUF2MOV R2,#16LOOPA:MOV A,@R0MOV @R1,AINC R0INC R1DJNZ R2,LOOPA(1)该程序段完成了什么工作?(2)若将指令“MOV R2,#16”误写成“MOV R2,#0”,循环体被执行多少次?(3)若漏掉了指令“MOV R2,#16”,循环体执行次数能确定吗,为什么?(4)若漏掉了指令“INC R0”,程序运行结果如何?(5)若不小心将标号LOOPA上移了一行,即将标号标在了指令“MOV R0,#16”这句指令上,程序运行情况如何?答:(1)将以BUF1为首址的16个字节内容对应存到以BUF2为首址的16个字节中。(2)256次。(3)若程序其他部分中没有用到R2,则能确定,因为R2初始化为0,则循环体执行次数为256次;若程序其他部分中有用到R2,则循环体执行次数不能确定。(4)以BUF2为首址的16个字节中都存放BUF1的字节内容。(5)程序将形成死循环。。

单片机微型计算机原理及接口技术 单片机微型计算机原理及接口技术课后习题答案第4章.docx...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。