《单片机汇编》期末考试、考研常见考题、习题,题型汇总(十二)、keil编程软件的使用及查看软件仿真时相应的memory地址值

通过前面几篇文章,通过相应的考题、习题将单片机中的111条基本指令灵活运用了一遍,本文对前文进行总结及扩展。
一,指令有功能、时间及空间三种属性。
功能属性:是指每条指令都对应一个特定的操作功能。
时间属性:是指一条指令执行所需要的时间,一般用机器周期表示。
空间属性:是指一条指令在程序存储器中的存储所占用的字节数。
二,分类
1,按指令空间属性:
(1)单字节指令(49条)
(2)双字节指令(45条)
(3)三字节指令(17条)
2,按指令时间属性:
(1)1个机器周期指令(64条)
(2)2个机器周期指令(45条)
(3)4个机器周期指令(2条)
3,按指令功能属性:
(1)数据传送指令(29条)
(2)算术运算指令(24条)
(3)逻辑运算指令(24条)
(4)控制转移指令(17条)
(5)位操作指令(17条)
三,寻址方式
(符号指令书写格式: 操作助记符 [目的操作数] [,源操作数][;注释])
1,立即寻址
2,直接寻址
3,寄存器寻址
4,寄存器间接寻址
5,变址寻址(基址寄存器DPTR/PC + 变址寄存器A 间址寻址):
MOVC A,@A+DPTR
MOVC A,@A+PC
JMP A,@A+DPTR
6,相对寻址:
目的地址=转移指令所在地址+转移指令字节数+rel
7,位寻址
四,内部RAM映射图、寄存器地址及复位值在这里插入图片描述
五,部分难理解且常考指令讲解
1,PUSH,POP指令
堆栈定义:在51单片机系列的内部数据存储区设定有一个按照后进先出原则操作的区域。堆栈区的一端固定,成为栈底,另一端活动,成为栈顶。(注:栈区向上生长)
(1)进栈指令PUSH
PUSH direct ;(SP)+1 -> SP , (direct) ->(SP)
解析:执行此条指令时,首先将栈指针SP+1,然后把direct中的内容送到SP指示的内部RAM单元中。
举例:

(SP)=50H,(A)=30H,(B)=60H,执行如下指令:
	PUSH ACC
	PUSH B
	后,试回答:(51)=      ,(52H)=      ,(SP)=     
答案:
	(51)=30H ,(52H)=60H,(SP)=52H 

(2)出栈指令POP
POP direct ;((SP)) -> (direct) , (SP)-1 ->SP
解析:执行此条指令时,首先将SP指示的栈顶单元中的内容送入direct字节中,然后将SP的内容减1后赋给SP。
举例:

(SP)=52H,(52H)=30H,(51H)=60H,执行如下指令:
	POP DPL
	POP DPH
	后,试回答:(DPTR)=      ,(SP)=     
答案:
	(DPL)=30H  ,(DPH)=60H    ,(DPTR)=6030H    ,(SP)=50H

注:PUSH,POP指令操作数是直接地址,而非寄存器,例如:PUSH R0此条指令错误(在程序编译时会出现如下错误:error A22: EXPRESSION TYPE DOES NOT MATCH INSTRUCTION
2,RET指令
子程序返回指令RET,本指令不影响状态标志位,执行过程:

RET   ;((SP))-> PC(15-8), (SP)-1 ->SP
	  ;((SP))-> PC(7-0), (SP)-1 ->SP  

综合考题:
下题充分考察了对PC,堆栈以及RET的理解

(30H)=51H,执行以下指令后,
	ORG 0000H
	MOV 64H,#00
	MOV 65H,#00
	ACALL FUC
	MOV A,30H
	SWAP A
	MOV 30H,A
HALT:SJMP HALT
FUC:	
	MOV SP, #66H
	MOV A, #51H 
	MOV B, #52H 
	PUSH ACC
	PUSH B 
	POP ACC 
	POP B
	RET 
(SP)=    ,(30H)=     ,(A)=     ,(B)=      ,P=  ,Cy=   ,Ac=  ,OV=   
答案:
(SP)= 64H ,(30H)=15H ,(A)= 15H ,(B)= 51H ,P=1  ,Cy=0  ,Ac=0 ,OV= 0

六,编程软件KEIL的基本使用
1,安装软件(软件下载和安装过程略),安装好后如下图
在这里插入图片描述
2,打开软件,点击新建工程->新建工程
在这里插入图片描述
3,点击进去,新建一个文件,用于存放工程,然后输入工程名点击保存
在这里插入图片描述
4,在弹出界面选择单片机型号,选择AT89C51即可
在这里插入图片描述
在这里插入图片描述
5,点击OK,在弹出对话框中,点击是
6,新建文件,在菜单栏中选择file->new file或Ctrl+N 新建
再进行保存(Ctrl+S),输入文件名,点击保存(注意文件后缀名格式:C文件为 .c 汇编文件为 .asm),此处建立汇编文件
在这里插入图片描述
7,像工程中添加上述新建的文件
右键source group1,在弹出对话框中点击add files to group …选项
在这里插入图片描述
8,点击ALL files所有文件选项,找到刚才新建的.asm文件,双击该文件即可添加到工程中
在这里插入图片描述
9,在source group下点击.asm开始编写程序,编写好后点击按钮编译程序等。
在这里插入图片描述
10,编译生成.hex 文件(该文件用于下载到单片机)
步骤1,点击魔术棒,如下图
在这里插入图片描述
步骤2,按照下图,勾选产生.hex文件选项
在这里插入图片描述
然后再次编译即可。

通过简单使用编程软件,以后对习题的理解、验证就可以通过软件编程仿真进行验证
验证方法:
步骤一,编译汇编好文件,即点击下图的第二个选项或第三个选项在这里插入图片描述
步骤二,Ctrl+F5进行仿真调试
在这里插入图片描述
红圈依次是(从左到右)全速执行到断点处,单步执行,跳出
使用单步执行,通过左侧寄存器即可查看相应寄存器中的值,若需要查看某个地址中的值,例如查看30H中的值,在右下方Memory,然后在Address输入d:30H即可查看
在这里插入图片描述
补充
在Memory窗口中输入地址值,得到的结果是程序代码区的内容。由于51采用的是哈佛结构,程序指令存储和数据存储分开。要查看各种内存区域的内容,只要在Address框内输入“字母:地址”即可显示相应的内存值。其中字母可以是C、D、I、X,分别代表的意义是:(大小写均可)

C:代码存储空间

D:直接寻址片内存储空间

I :间接寻址片内存储空间

X:扩展的外部RAM空间

如输入“d:0x30”就可显示直接寻址片内30H存储空间的内容了。

还可以使用右键“Modify Memory”选项修改指定内存的内容。

发布了27 篇原创文章 · 获赞 25 · 访问量 5767

猜你喜欢

转载自blog.csdn.net/liuxianfei0810/article/details/105499128
今日推荐