预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共159页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第2章MCS-51指令系统与汇编语言程序设计2.1概述2.1概述2.1概述2.1概述2.1概述2、汇编语言指令格式3、常用伪指令(2)结束汇编伪指令END 格式:[标号:]END[表达式] 功能:放在源程序的末尾,表明源程序的汇编到此结束。(3)赋值伪指令EQU 格式:字符名称xEQU赋值项n 功能:将赋值项n的值赋予字符名称x。1、按指令字节数分类 单字节指令、双字节指令和三字节指令。1、按指令字节数分类2.1.4指令中的常用符号bit:表示片内RAM的位寻址区,或者是可以位寻址的 SFR的位地址。 A(或ACC)、B:表示累加器、B寄存器。 C:表示PSW中的进位标志位Cy。 @:在间接寻址方式中,是间址寄存器指针的前缀标志。 $:表示当前的指令地址。 (X):表示由X所指定的某寄存器或某单元中的内容。 ((X)):表示由X间接寻址单元中的内容。2.2.1寄存器寻址 2.2.2直接寻址 2.2.3立即数寻址 2.2.4寄存器间接寻址 2.2.5变址寻址 2.2.6相对寻址 2.2.7位寻址2.2.1寄存器寻址2.2.2直接寻址使用直接寻址应注意的两个问题:MOVA,00H;将RAM中00H单元数据送累加器A MOVA,R0;将工作寄存器R0的内容送累加器A2.2.3立即寻址【注意】MOVA,#30H与MOVA,30H两者的区别。2.2.4寄存器间接寻址MOVR0,#30H;立即数送R0寄存器 MOVA,@R0;从RAM的30H单元取数送累加器A指令使用DPTR或PC中的内容作为基地址,再与累加器A的内容相加,其和作为操作数地址。如: MOVCA,@A+PC;PC内容为基地址与A的内容相加得 操作数地址,并将此操作数送A MOVCA,@A+DPTR;DPTR内容为基地址与A的内容相 加得操作数地址并将此操作数送A【例】已知ROM中的0300H-0309H为0~9的平方表,编程求 A中数据的平方(设A=02H)。相对转移指令使用的一种寻址方式。【例】ORG0100H S1:CLRA MOVR0,#45H SJMPS2 SETBC SETB00H S2:MOVA,#0FH ...指令的形式同直接寻址相似,不同的是:指令中的地址是“位地址”,而不是字节地址。 MOVC,bit作为嵌入式控制器,CPU更多的是处理“开关量”而不单纯是字节结构的数据。因此MCS-51在指令设计上刻意设计了大量的“布尔操作”即位操作,这为系统应用带来了很大的方便。【举例】:SETB90H;将P1口的D0位置1 为了增加程序的可读性,凡在SFR中的位地址都可以使用符号来替代。如本例中,完全可以使用下面的指令格式: SETBP1.0;将P0口的D0位置1 又如:SETBEA(SETB0AFH);开中断 SETBTR0(SETB8CH);启动定时器 这种指令在编译时,是要先将符号地址进行转换的。2.3MCS-51指令系统WAVE仿真开发软件把源程序编辑、编译、下载、调试等操作全部集中在一个环境下进行,支持MCS-51、PIC两大系列、不同种类的单片机。 具有软件模拟执行功能,除输入、输出操作外,均可在软件模拟环境下完成绝大部分应用程序的调试。 2.3MCS-51指令系统1)安装后,从“WAVE6000_G\BIN”子目录下双击wave图标进入界面;完成安装后,首次启动看到的界面2.3.1数据传送指令特点:单片机内部各单元之间的内部数据传送,指令的源操作数和目的操作数都在单片机内部。1、立即寻址型传送指令【例】已知:R0=20H,试问单片机执行如下指令后,累加器A、R7、20H和21H单元中的内容各是什么。 MOVA,#18H MOVR7,#28H MOV@R0,#38H MOV21H,#48H【特点】指令中至少含有一个源操作数或目的操作数的地址。是2个或3个字节的指令格式,其中直接地址在第2或第3个字节上。这类指令有如下5条:MOVA,30H;内存RAM30h单元数据送A MOV50H,A;A中内容送RAM的50h单元 MOVR6,31H;RAM的30h内容送R6寄存器 MOV@Ri,30H;RAM30h内容送Ri指定的RAM单元 MOVP1,32H;RAM32h内容送P1口(p1:符号地址) MOV90H,32H;(同上,试比较两种表示方法,一个 指令两种写法)【特点】指令中含有存放操作数的寄存器名Rn, 其中(n∈0,1,2,3,4,5,6,7)。 共有如下4条: MOVA,Rn MOVRn,A MOVdirect,Rn MOVRn,direct【特点】指令中Ri中存放的不是操作数本身,而是操作数 在RAM中的地址(i=0、1)。 格式如下: MOVA,@Ri MOV@Ri,A