《单片机原理及应用教程》第3章MCS-51单片机的指令系统.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:70 大小:1.5MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

《单片机原理及应用教程》第3章MCS-51单片机的指令系统.ppt

《单片机原理及应用教程》第3章MCS-51单片机的指令系统.ppt

预览

免费试读已结束,剩余 60 页请下载文档后查看

15 金币

下载此文档

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

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

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

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

MCS-51单片机原理及应用教程第3章MCS-51单片机的指令系统3.1汇编语言的指令格式及符号简介3.2寻址方式3.2.1立即寻址3.2.2直接寻址3.2.3寄存器寻址例如:设R0的内容为60H,且(60H)=10H,即60H地址单元中的内容为10H,则语句MOVA,@R0的执行过程如图3.3所示。执行后,(A)=10H,即累加器A的内容成为10H。3.2.5变址寻址相对寻址是把指令中给定的地址偏移量rel与程序计数器PC的当前值(读出该双字节或三字节的跳转指令后,PC指向的下条指令的地址)相加,得到真正的程序转移地址。3.2.6相对寻址3.2.7位寻址3.3.1通用传送指令例1若(50H)=10H,则执行指令MOVA,50H之后,(A)=10H。例2若(R0)=20H,(20H)=39H,则执行指令MOVA,@R0后,(A)=39H。例3若(R5)=55H,则执行指令MOVA,R5后,(A)=55H。例1若(30H)=20H,(R0)=30H,则执行指令MOV90H,@R0的结果为(90H)=20H。例2若例1中的条件不变,而执行指令MOVP1,@R0,则(P1)=20H。例1若(R0)=50H,(50H)=20H,(A)=10H,则执行指令“MOV@R0,A”后,50H单元的内容由原来的20H变为10H。5.16位目标地址传送指令3.3.2外部数据存储器(或I/O口)与累加器A传送指令3.3.2外部数据存储器(或I/O口)与累加器A传送指令例1在外部程序存储器2000H单元开始存放了数字0~9的共阴极数码管的16进制数的字形代码3FH、06H、…、6FH。要求根据A中的值(0~9)来查找该数字所对应的代码以便显示。若用PC作基址寄存器,则需要在MOVCA,@A+PC指令前用一加法指令对地址进行调整:ADDA,#dataMOVCA,@A+PC1.字节交换指令2.半字节交换指令3.累加器A中高四位与低四位交换指令例1PUSHA;保护A中数据PUSHPSW;保护标志寄存器中数据…;执行服务程序POPPSW;恢复标志寄存器中数据POPA;恢复A中数据3.4.1加减运算指令例1执行指令:MOVA,#0A9HADDA,#0B8H对程序状态寄存器的影响如图3.6所示。例28位数加法程序片断1:MOVA,#23HADDA,#5AH…例38位数加法程序片断2:MOVA,#0ABHADDA,#9AH…带进位加法指令与前述加法指令的区别仅为考虑进位位,其他与加法指令相同。例3利用ADDC指令可以进行多字节的加法运算。设有两个16位数相加,被加数的高8位放在41H,低8位放在40H,加数的高8位放在43H,低8位放在42H,和的低8位存放在50H,高8位存放在51H,进位位存放在52H。可编程序如下:SHJ:MOVA,40H;(A)←被加数低8位ADDA,42H;与加数低8位相加MOV50H,A;和的低8位存入50HMOVA,41H;(A)←被加数高8位ADDCA,43H;被加数高8位与加数高8位以及低位来的进位相加MOV51H,A;和的高8位存入51H单元MOVA,#00H;(A)←00HADDCA,#00H;(A)←(A)+00H+高8位来的进位MOV52H,A;进位位C内容存入52H单元…3.带借位减指令例1设(40H)=0BAH,(41H)=98H,试编写40H内容减去41H内容后,结果再存入40H单元的程序。MOVA,40H;(A)←(40H)CLRC;进位位C清0SUBBA,41H;(A)←(A)-(41H)-(C)MOV40H,A;(40H)←(A)执行以上程序后,(40H)=22H,CY=0,OV=0。例2设有两个16位数相减,被减数的高8位放在41H,低8位放在40H,减数高8位放在43H,低8位放在42H,差的低8位存放在50H,高8位存放在51H,借位位存放在52H。1.乘法指令程序编制如下:MOVR0,#K;设置被乘数地址指针MOVA,@R0;被乘数送A中MOVB,M;乘数送B中MULAB;(K)×(M)MOVR1,A;乘积的0~7位存入R1MOVR2,B;暂存积的8~15位INCR0;指向被乘数高8位地址MOVA,@R0;取被乘数高8位MOVB,M;乘数送B中MULAB;(K+1)×(M)ADDA,R2;求得乘积的8~15位MOVR2,A;乘积的8~15位存入R2MOVA,BADDCA,#00H;求得乘积的16~23位MOVR3,A;乘积的16~23位存入R32.除法指令例1设(A)=40H,(41H)=29H,则执行下列指