. 实验一 8051单片机简单编程与调试 实验内容: 1、存储块置全“1”源代码: 汇编语言源程序: ORG 00H START EQU 30H ;起始地址 MOV R1,#START MOV R0,#32H ;Rn中设置32字节计数值 MOV A,#0FFH LOOP: mov @R1,A INC R1 ;指向下一个地址 DJNZ R0,LOOP ;计数值减1,不为零继续 SJMP $ END 在下划线处填入适当指令。 输入源程序,编译无误后,用单步执行的方法,观察各个相应存储单元和寄存器中内容的变化。 解释START EQU 30H。 答:START = 30H (2) 二进制 ASCII 码转换源代码: 汇编语言源程序: RESULT EQU 30H ORG 00H START: MOV A,#1AH LCALL BINTOHEX ; 调用BINTOHEX子程序 LIMP $ BINTOHEX: MOV DPTR,#ASCIITAB ; 表的首址ASCIITAB送DPTR MOV B,A SWAP A ANL A,#0FH ; 取A的高四位 MOVC A,@A+DPTR ; 查ASCII表 MOV RESULT, A MOV A,B ANL A,#0FH MOVC A,@A+DPTR MOV RESULT+1,A RET ASCIITAB: DB '0123456789ABCDEF' END ;. . 答: 注释掉LJMP $ 执行到MOV A,#1AH 2、多路开关指示 OGR 00H START: MOV A,PR1 ; 读取P1口数据 SWAP A ; 交换A中高四位与低四位的位置 ORL A,0F0H ; 与0F0H相或 MOV P1,A ; 将开关状态送LED显示 SJMP START ; 转移到START END 答:把上移后的高四位再全装为1,并且屏蔽掉低四位 3、程序调试 (1)程序 a.asm ORG 0000H MOV 30H,#87H MOV A,#69H ADD A,30H NOP END 答:CY=0 ,(A)=1 ,OV=0 ,P=0 将程序中的指令 NOP改为 指令 DA A后 答:CY=1 ,(A)=1 ,OV=0 ,P=0 (2)程序 b.asm ORG 0000H MOV SP,#60H MOV DPTR,#0A679H PUSH DPH PUSH DPL MOV A,#80H PUSH ACC POP B POP 30H POP 31H NOP END 答:(SP)=60H ,(A)=80H ,(30H)=79H ,(31H)=0A6H (B)=80H ,(DPH)=0A6H ,(DPL)=79H (3)程序 c.asm ;. , . ORG 0000H MOV A,#02H MOV B,A RL A ADD A,B MOV DPTR,#TAB JMP @A+DPTR NOP ORG 0800H TAB: LJMP 1000H LJMP 2000H LJMP 3000H LJMP 4000H END 答:执行完 JMP @A+DPTR以后,PC=0806H ;. 本文来源:https://www.wddqw.com/doc/fdf44b07a78da0116c175f0e7cd184254a351be8.html