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

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

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

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

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

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

信息科学与工程学院自动化系本章是全书的重点之一,是汇编语言程序设计的基础。Ø本章主要介绍单片机的寻址方式及指令系统, 是必须掌握的内容。 Ø一台计算机所有指令的集合, 称为该计算机的指令系统。 Ø各种计算机都有专用的指令系统。 3.1MCS-51指令系统概述 汇编语言指令格式 机器语言指令格式汇编语言指令格式机器语言指令格式指令字长有三种: 单字节RET 双字节MOVA,#68H 三字节MOV30H,46H3.1.3指令分类3.2寻址方式寄存器寻址——操作数存放在寄存器中例如:MOVA,R3;机器码为0EBH 指令功能是把当前R3中的操作数送累加器A。 指令执行示意图如图3-3所示。设(R3)=12H直接寻址—指令中直接给出操作数的地址例:MOVA,30H;机器码为E530H 指令功能是把直接地址30H单元的内容送累加器A,即(30H)→(A)如图3-1所示。寄存器间接寻址例如:MOVA,@R1;机器码E7H 设(R1)=60H,(60H)=50H,执行结果(A)=50H,该指令执行过程如图3-4所示。立即寻址——在指令中直接给出操作数例:MOVDPTR,#1234h (DPH)=12H (DPL)=34H 变址间接寻址MOVCA,@A+PC;83H 设执行指令之前(A)=50H 指令功能是把该指令当前地址PC值与A累加器内容相加形成操作码地址3F51H,3F51H中的内容37H送A累加器。相对寻址JCrel;4085H 设rel=85H,Cy=1位寻址bit2、特殊功能寄存器SFR可供位寻址的专用寄存器共11个,实有位地址位83位。位地址有4种表达方式。 以对程序状态寄存器PSW辅助进位位AC进行操作为例: PSWCyACF0RS1RS0OVPD0H D7HD6HD0H寻址方式1、内部数据存储器的寻址方式 1)00H~1FH寄存器寻址4组R0~R7Rn 直接寻址direct 寄存器间接寻址@R0,@R1 例:(01H)(02H) MOV02H,01H;源寻址和目的寻址均为直接寻址 MOVR2,01H;源寻址为直接寻址,目的寻址为寄存器寻址 MOVR0,#01H MOV02H,@R0;源寻址为寄存器间接寻址, 目的寻址为直接寻址 2)20H~2FH可位寻址区的寻址方式 字节寻址方式:直接寻址direct 寄存器间接寻址@R0,@R1 位寻址:bit直接寻址 例:MOV26H,C;位寻址(26H)1位 MOV26H,A;字节寻址(26H)8位3)30H~7FH数据缓冲区的寻址方式 字节寻址方式:直接寻址direct 寄存器间接寻址@R0,@R1 例:MOV56H,A;字节寻址(56H)8位 MOVR0,#66H MOV@R0,#56H 可以将用户堆栈设在该区内,堆栈指针SP 2、SFR及I/O口的操作——只能直接寻址 例:P1口90H MOVA,90H MOVA,P1 MOVP1,A 3、关于A累加器有两种寻址方式: MOVA,#23H;A寄存器寻址 PUSHACC POP0E0H4、可做片内RAM的指针有: R0,R1,四个组共有8个 预先设置RS1、RS0,以选定组。 SETBRS0 CLRRS1;1组 MOVR0,#34H;R0的地址是? SETBRS1;3组 MOVR0,#68H;R0的地址是? R0/R1指向的地址范围:00H~7FH 片外数据存储区和外部扩展的I/O口的寻址方式 指针:R0,R18位 DPTR16位 指令助记符:MOVX 例:MOVDPTR,#2000H MOVA,#34H MOVX@DPTR,A3.3MCS-51单片机的指令系统指令描述符号(1)P30指令描述符号(2)数据传送类指令(1)内部数据传送类指令(2)数据传送类指令(3)数据传送类指令(4)交换指令popdirect;(direct)((sp)),(sp)(sp)-1 pushdirect;(sp)(sp)+1,((sp))(direct)堆栈有两种类型:向上生长型和向下生长型两种。向上生长型堆栈,栈底在低地址单元。随着数据进栈,地址递增,SP的内容越来越大,指针上移;反之,随着数据的出栈,地址递减,SP的内容越来越小,指针下移。如(b)图所示。 MCS-51属向上生长型堆栈,这种堆栈的操作规则如下: 进栈操作:先SP加1,后写入数据。 出栈操作:先读出数据,SP减1。堆栈的使用有两种方式: 一种是自动方式,即在调用子程序或断点时,断点地址自动进栈。程序返回时,断点地址再自动弹回PC。这种操作无需用户干预。 另一种是指令方式,即使用专用的堆栈操作指令,执行进出栈操作,其进栈指令为PUSH,出栈指令为POP。例如: 保护现场就是一系列指令方式的进栈操作; 而恢复现场则是一系列指令方式的出栈操作。 需要保护多少数据由用户决定。 POP