请单击你所选择的项 试题A 试题B 试题C 试题D 试题E A试题 填空题(共20分,每题4分) 单片机试验系统与微机是通过 串行通讯电缆 相连。 若想进入全屏幕编辑界面,按下F1功能键,按ALT+F建立新文件,即可开始输入源文件。 当程序输入错误或需要调整时,使用A命令完成。 将立即数#33H送20H单元使用MOV 20H,#33H指令。 入栈指令使用PUSH ACC指令。 程序分析题(共20分,每题10分) 1、位地址为M、N、Y,程序如下:  MOV C,M   ;(M) ?C   ANL C, ;(M) MOV Y,C ;(Y)=(M)   MOV C,M ;(M) ?C ANL C,N ;(M) ORL CY ; MOV Y,C 程序功能表达式: (Y)=(M)*(/N)+(M)*(N) 2、阅读下列程序并回答问题 CLR C MOV A,#9AH SUBB A,60H ADD A,61H, DA A MOV 62H,A 请问该程序执行何种操作? 已知初值:(60H)=23H,(61H)=61H,请问运行程序后:(62H)=( )? 解 操作是单字节BCD码运算,是将 (61H)-(60H)?62H     (2)(62H)=38H 编程题(共60分,每题30分) 1、将31H、32H单元与41 H、40H单元的双字节十进制无符号数相加,结果存入32H,31H,30H单元。即(31H)(30H)+(41H)(40H) 32H、31H、30H。 输入程序 参考程序 MOV R0,#30H MOV R1,#40H MOV R2,#02H CLR C L1: MOV A,@R0 ADDC A,@R1 DA A MOV @R0,A INC R0 INC R1 DJNZ R2,L1 CLR A MOV ACC.0,C MOV @R0,A 在31H、30H单元存入加数如3018,在41H,40H单元存入被加数如8975。 (3)输入程序首地址,(从处为2000H),然后开始单步或断点运行该段程序。 (4)运行过程中检查数据的变化,并在最后检查(32H)= ,(31H)= , (30H)= 。 2、 编程实现逻辑运算:Q=(U *(V+W))+X.Y)+Z。设U~Z的位地址为00H~05H.Q的位地址为07H。《实际中U~Z可以是外部输入端口信号或软件设定的一些控制位》。 实习步骤: (1)输入所编程序。 MOV C,01H O RL C,02H ANL C,00H MOV F0,C ;暂存U*(V+W)的值 MOV C,03H ANL C,/04H ORL C,F0 ORL C,/05H MOV 07H,C ; 保存结果 (2)部RAM20H单元(位地址00H~07H的位在20H单元)输入某个数据(注意此时各位的状态并做好记录)。 (3)单步或断点运行所编程序,逐步检查Cy及个数据的变化情况(注意检查时也按字节读出,再观察其相应位)。 (4)验证运行结果 (5)改变20H单元的置数,重做。 B试题 填空题(共20分,每题4分) 1、我们使用的单片机试验箱型号是 TDN-MI 。 2、输入文件后,按F2保存程序,此时文件扩展名是 .ASM。 3、提示装载完毕后,使用U000命令进行反汇编 ,检查程序是否正确装入。 4、将30H单元的内容#67H送R1,用最少的指令实现,指令为:MOV 30H,#67H; MOV R1,30H。 5、弹出操作,使用POP ACC指令。 二、程序分析题(共20分,每题10分) 1、程序如下  2506H M5: MOV SP,#58H; 2509H        MOV 10H,0FH; 250CH MOV 11H,#0BH; 250FH ACALL XHD; 2511H MOV 20H,11H 2514H M5A: SJMP M5A XHD: PUSH 10H PUSH 11H POP 10H POP 11H RET 问:(1)执行POP10H后堆栈内容? (2)执行M5A:SJMP M5A后,(SP)=? (20H)=? 解 执行ACALL指令时:PC+2?PC: (SP)+1?SP  PC0~PC7?(SP) (SP)+1?SP  PC8~PC15?(SP) 2) 子程序返回时,点地址弹出,SP=58H 所以 (1)执行POP 10H后,堆栈内容如左图所示. 5C 0B 5B 0F 5A 25 59 11 58    (2)执行M5A:SJMP M5A后,(SP)=58H,     (20H)=0FH 2、解读下列程序,然后填写有关寄存器内容 (1)        MOV R1,#48H MOV 48H,#51H CJNE @R1,#51H,00H JNC NEXT1 MOV A,#0FFH SJMP NEXT2 NEXT: MOV A,#0AAH NEXT2: SJMP NEXT2 累加器 A=( ) (2) MOV A,#0FBH MOV PSW,#10H ADD A,#7FH 解    (1)   MOV R1,#48H ;48H 送 R1 MOV 48H,#51H ;51H送?(48H) CJNE @R1,#51H,00H ;(R1)GN #51相比,相等,顺序执行 JNC NEXT1 ;没借位转,NEXT1 MOV A,#0FFH ;有借位,FFH送A SJMP NEXT2 NEXT1 MOV A,#0AAH ;0AAH送A NEXT2 SJMP NEXT2 累加器 A=(0AAH) (2) MOV A,#0FBH MOV PSW,#10H 00010000送PSW ADD A,#7FH 由 11111011 + 01111111  ____________ 1 01111010 所以,有进位CY=1,C6 ? C7=1?1=0,OV=0; A中有奇数个1,P=1; 有辅助进位位AC=1 若PSW=00,当执行完上述程序段后,将PSW各位状态填入下表: PSW CY AC F0 RS1 RS0 OV F1 P  1 1 0 1 0 0 0 1   三、编程题(共60分,每题30分) 将片内RAM-2单元(如20H)的内容分成两段,并将它们分别存入2单元和3单元。(高位清零)。 输入程序。 参考程序: MOV R0,#21H MOV A,20H ANL A,#0FH MOV @R0,A INC R0 MOV A,20H SWAP A ANL A,#0FH MOV @R0 在某单元(如20H)存入待分字的某数(如5BH)。 单步或带断点运行该段程序。 运行过程中注意检查程序的变化,并在最后检查(21H)= , (22H)= 。 2、编程实现字符串长度统计:设在单片机内RAM中从STR单元开始有一字符串《以ASC II码存放》,该字符串以$<其值为24H>结束,试统计该字符串的长度,其结果存于LON单元。 (1)输入所编程序 START: CLR A ;计数单元清零 MOV R0,#STR LOOP: CJNE R0,#24H,NEXT ;判断字符串是否结束 SJMP COMP NEXT: INT A INC R0 SJMP LOOP COMP: MOV LON,A ;将长度存入LON单元 SJMP $ (2)在以STR为首的地址内部RAM单元开始存放待统计长度的数据块(自设),并以#24作为数据块的结束标志。 (3)单步或断点运行所编程序,注意观察每次转移后PC及统计长度单元LON的变化,并做好记录。 (4)验证运行结果。 (5)改变数据块长度,重做。 C试题 填空题(共20分,每题4分) 1、开启微机电源,在软件所在目录键入 MD51 命令,选择对应串口号,进入集成操作软件环境。 2、对源文件进行汇编,生成浮动目标文件,文件扩展名是 .R03。 3、用B命令设置断点。 4、将立即数3052H送数据指针DPTR,使用MOV DPTR,#3052H指令。 5、两寄存器交换数据,使用XCH A,R4指令。 二、程序分析题(共20分,每题10分) 1、程序存储器空间表格如下:     地址    2000H    2001H   2002H   2003H ...   内容    3FH      06H     5BH     4FH   ...  已知:片内RAM的20H中为01H,执行下列程序后(30H)=? MOV   A,20H      ;01H?A INC   A          ;01H+1=02H?A MOV   DPTR,#2000H  ;2000H?DPTR MOVC  A,@A+DPTR    ;(2000H+2)=5BH?A CPL   A           ;5BH求反等于A4H MOV 30H,A ;A4H?(30H) END: SJMP END 答 执行程序后,(30H)=A4 2、分析程序段: CLR   C MOV   A,#91H SUBB  A,61H ;求60H内的BCD数的补数,9AH-24H=76H ADD   A,61H ;76H+72H=E8H DA    A  ;CY=1、A=48H MOV   62H,A  解  根据9AH=99=1的特殊性,该程序功能为单字节BCD数减法运算,即完成的是(61H)-(60H)?(62H)。所以运行后,(62H)=48H,意即72-24=48 编程题(共60分,每题30分) 编程实现下列逻辑运算Z=(M+N)*(O+P)。设M,N,O,P为片内RAM30H—33H单元,输出结果单元Z地址为34H。 将下列程序输入到实习装置 参考程序 START:MOV A,M XRL A,N MOV B,A MOV A,O ORL A,P ANL A,B MOV Z,A 在M—P(30H—33H单元)装入待进行逻辑运算的数据(自设)。 单步或带断点运行该段程序。 运行过程中注意检查程序的变化,并在最后验证(Z)是否与理论值相符。 2、 设从内存BLOCK单元开始存放一 无符号数的数据块,其长度为LEN。试找出其最小数,并存入MIN单元。 (1)输入所编程序。 COMP: MOV A,#0FFH ;置比较的初始值 MOV R2,#LEN ;置数据块长度 MOV R1,#BLOCK ;置地址指针 LOOP: CLR C SUBB A,@R1 ;比较 JC NEXT ;若小,则恢复原值 MOV A,@R1 SJMP NEXT1 NEXT: ADD A,@R1 NEXT1: INC R1 ;若大,则取下个数比较 DJNZ : DJNZ R2,LOOP MOV MN ,A ;存最小数 SJMP $ (2)确定好数据块的起始地址和长度,并在相应的内部RAM单元存入数据,同时作好记录。 (3)单步或断点运行程序,注意循环次数是否等于数据块长度。 (4)观察PC,A和计数单元的变化并作好记录。 (5)验证运行结果。 D试题 填空题(共20分,每题4分) 1、开启微机电源,在软件所在目录键入MD51命令,选择对应串口号,进入集成操作软件环境,如果光标不响应回车命令,按 复位键即可。 2、对源文件汇编无误后,自动生成相应的 .LST文件。 3、用GB命令来连续运行程序。 4、外部RAM与 累加器A间数据传送,使用MOVX @DPTR,A指令。 5、两寄存器交换数据,使用 命令。 二、 程序分析题(共20分,每题10分) 1、(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(4BH)=20H MOV A,@R0 ;7FH?A MOV @R0,40,40H ;20H?4BH MOV 40H,A ;7FH?40H MOV R0,#35H 问执行和程序后,R0、A和4BH、40H单元内容的变化如何? 答 程序执行后(R0)=35H,(A)7FH,(4BH)=20H,(40H)=7FH. 2、设(R0)=7EH,DPTR=10FEH,片内RAM 7FH和7FH两单元的内容分别是FFH和38H,请写出下列程序段的每条指令的执行结果。         INC   @R0         INC   R0         INC   @R0         INC   DPTR         INC   DPTR         INC   DPTR 解   (1)(7EH)=00H     (2)R0=7FH     (3)7FH=39H     (4)DPTR=10FFH     (5)DPTR=1100H     (6)DPTR=1101H 三、编程题(共60分,每题30分) 比较存放在ONE,TWO,TRE三个单元的无符号数,并将小数存放在20H单元中。 输入程序 参考程序 MOV A,ONE CJNE A,TWO,RR RR: JC SS MOV A,TWO CJNE A,TRE,TT TT: JC WW SJMP UU SS: CJNE A,TRE,VV VV: JC WW UU: MOV A,TRE WW: MOV 20H,A 在ONE,TWO,和TRE三个内部RAM 单步运行,注意PC变化情况,同时检查Cy 检查20H单元的内容,验 是否最小值 修改ONE 设在单片机内部RAM中从STR单元开始存放有一数据块,该数据块以#00H结束,试统计其中为#0FFH的单元个数并存入NUM单元。 (1)输入所编程序。 COUNT: CLR A ;清计数单元 MOV R0,#STR ;置地址指针 LOOP: CJNE #0FFH,LOOP1;数据为#0FFH则计数单元加1 INC A LOOP1: INC R0 CJNE @R0,#000H,LOOP;数据块取完? MOV NUM A ;存统计结果 SJMP $ (2)确定好数据块的起始地址,同时在相应的内部RAM单元建立好数据块(此数据块以#00H结束,并使其中若干个单元的内容为#0FFH),同时作好记录。 (3)单步或断点运行程序,注意循环跳出循环时刻。 (4)观察并记录PC,A和计数单元的变化情况。 (5)验证运行结果。 E试题 填空题(共20分,每题4分) 1、开启微机电源,在软件所在目录键入MD51命令,选择对应串口号,进入集成操作软件环境,如果光标不响应回车命令,按 复位键即可。若想进入全屏幕编辑界面,按下F1功能键。 2、汇编完成后,按F3输入文件名回车,对汇编生成的.r03文件进行连接,生成相应的 .HEX 文件。 3、按RESET复位键可清除断点。 4、程序存储器中数据送累加器A,使用指令为MOVC A,@A+DPTR指令。 5、寄存器高4位和低4位交换数据,使用SWAP A指令。 二、程序分析题(共20分,每题10分) 1、设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H, (26H)=6 FH,(27H)=76H,下列程序执行程序后,结果如何? CLR C MOV R2,#3 LOOP: MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,LOOP JNC NEXT1 MOV @R0,#01H SJMP $ NEXT: DEC R0 SJMP $ 答 (20H)=(20H)、(21H)=00H、(22H)=17H、(23H)=01H、 CY=1、A=17H、R0=23H、R1=28H 2、设片内RAM中(59H)=50H,执行下列程序段         MOV   A,59H         MOV   R0,A         MOV   @R0,A         MOV   A,#25H         MOV   51H,A         MOV   52H,#70H 解  A=25H,(50H)=0,(51H)=25H,(52H)=70H. 三、编程题(共60分,每题30分) 1、根据Rn单元内容(00H—7FH),分别转向程序ROUT00—ROUT7FH 参考程序 输入程序 MOV A,Rn RL A MOV DPTR,#JMPTAB JMP @A+DPTR JMPTAB:AJMP PROG00 AJMP PROG01 … AJMP PROGnn PROG00:MOV 20H,# SJMP $ … PROGnn:MOV 20H,#nH SJMP $ 为便于实习,可缩小散转范围,运行前在Rn 中装入的数限定为00H—03H中的某一个。 确定JMPBAB及PROG00—PROG03的地址,并在PROGn处写人处理程序。 单步或断点运行,观察并记录A,DPTR以及PC变化情况。 修改Rn中数据,重做。 2、求平方子程序计算X=a^2+b^2 先建立0~9的平方表(十进制),TAB为表首地址指针。子程序所完成 的功能是用查表的方式求出平方值。计算X=a^2+b^2时只要两次调用子程序分别求出a^2和b^2,然后相加即可。(设X,a,b分别存于内部RAM的ONE,TWO和TRE三个单元中)。 子程序入口:(A)=待查表的数 子程序入口:(A)=平方值 实习步骤 (1)在选定的存区中建立好平方表。 MAIN: MOV A;ONE ;调求平方子程序 ACALL SQR MOV R1,A MOV A,TWO ACALL SQR ADD A,R1 ;求平方和 MOV TRE,A SJMP $ SQR: INC A ;修正查表偏移量(入口A) MOVC A, @A+PC ;查表求平方值(出口A ) RET ;返回 TAB: DB: 0,1,4,9,16 ;平方表 DB: 25,36,49,64,81 (2)输入并调试已编好的子程序,按要求准备如口即在A中装如待查平方的数,独立运行子程序后,检查A中的内容是否为平方值. (3)输入并调试已遍好的主程序,注意观察子程序的调用和返回情况. (4)观察并记录运行过程中的子程序的入口,出口及PC和各积存器的变化情况.