《教学课件微机原理(第2版)3.9堆栈指令与进制调整指令应用ppt(全).pptx》由会员分享,可在线阅读,更多相关《教学课件微机原理(第2版)3.9堆栈指令与进制调整指令应用ppt(全).pptx(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、教学课件微机原理(第2版)3.9堆栈指令与进制调整指令应用22.3存储器结构与地址空间学习内容:堆栈指令与十进制调整指令的应用目标:掌握编程中堆栈指令与十进制调整指令的使用方法第2章8051微控制器硬件结构33.3典型指令的应用第3章8051指令系统和汇编程序设计1.堆栈指令的使用通过对SP重新赋值,可以改变堆栈区域。采用直接寻址方式,如PUSHR0和PUSHR1要写成PUSH00H和PUSH01H。不然汇编程序会报错。堆栈指令常在子程序、中断服务程序中用于保护现场和恢复现场,必须服从“先进后出”、“后进先出”规则。3.3.2堆栈操作SUB1:PUSHACC;A的内容压入堆栈PUSHB;B的内
2、容压入堆栈PUSHPSW;PSW的内容压入堆栈POPPSW;从堆栈恢复PSW的内容POPB;从堆栈恢复B的内容POPACC;从堆栈恢复A的内容RET53.3典型指令的应用第3章8051指令系统和汇编程序设计2.堆栈操作举例例3-12:简述下列程序段完成的功能,程序执行后SP指针指向哪里?MOVSP,#2FH;确定堆栈空间,从30H开始MOVDPTR,#2000H;外部RAM首址MOVR7,#50H;取数的个数LOOP:MOVXA,DPTR;从外部RAM取一个数INCDPTRPUSHA;取来的数压入堆栈,;(SP)(SP)+1,(SP)(A)DJNZR7,LOOPSJMP$3.3.2堆栈操作程序
3、功能:将外部RAM 2000H开始的50H个数据传送到内部RAM 的30H开始的50H 个单元中。程序执行后SP指针指向7FH。73.3典型指令的应用第3章8051指令系统和汇编程序设计例3-13:2个单字节压缩BCD码相加,(A)=19H,(R0)=19H,试分析程序执行结果。ADDA,R0;(A)=32HDAA执行结果:000110010001100100110010(A)=32H,AC=13.3.3十进制调整指令修正:因为AC=1,所以低4位要+6调整,调整后结果为 38H,得到了正确的BCD码加法结果。83.3典型指令的应用第3章8051指令系统和汇编程序设计例3-14:2个单字节压缩
4、BCD码相加,(A)=89H,(R0)=23H,试分析程序执行结果。ADDA,R0;(A)=ACHDAA执行结果:100010010010001110101100(A)=ACH,Cy=0,AC=0;3.3.3十进制调整指令修正:由于低4位和高4位均大于9,所以均要+6调整:10101100 01100110(+66H)100010010调整结果:(A)=12H,Cy=1,调整指令使Cy置1。得到2个BCD数相加的正确结果为112。103.3典型指令的应用第3章8051指令系统和汇编程序设计例3-15:2个单字节压缩BCD码相加,(A)=91H,(R0)=91H,试分析程序执行结果。ADDA,R
5、0DAA3.3.3十进制调整指令 91H 91H 1 2 2H ;(C)=1,高4位6调整 6 0 82H ;结果(A)=82,C=1;调整指令不会清C DA A 指令影响C的情况:有进位,则C=1;无进位,则C不变。不变。123.3典型指令的应用第3章8051指令系统和汇编程序设计使用DA A指令必须注意的问题:必须用在加法指令后;对其它指令无效。只能对累加器A的BCD加法结果进行十进制修正,对其他寄存器无效。相加的两个操作数必须均为BCD码,调整的结果才会正确。DAA指令对C只能置位,不能清0。3.3.3十进制调整指令常见错误:常见错误:(1)MOV A,#0FHDA A(2)SUBB A,R5;(A)=21H,(R5)=02H DA A ;(A)=1FH,DA A指令无效指令无效(3)MOV A,#0EHADD A,#28HDA A ;(A)=36H,DA A指令无效指令无效