《单片机原理与应用》胡辉电子教案4917第4章_第1页
《单片机原理与应用》胡辉电子教案4917第4章_第2页
《单片机原理与应用》胡辉电子教案4917第4章_第3页
《单片机原理与应用》胡辉电子教案4917第4章_第4页
《单片机原理与应用》胡辉电子教案4917第4章_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理与应用胡辉电子教案4917第4章 第章程序设计虽然单片机的每条指令能使计算机完成一种特定的操作。 但要完成某一特定的任务还需要将这些指令按工作要求有序组合为一段完整的程序。 程序实际上是一系列计算机指令的有序集合。 我们把利用计算机的指令系统来合理地编写出解决某个问题的程序的过程,称之为程序设计。 虽然单片机的每条指令能使计算机完成一种特定的操作。 但要完成某一特定的任务还需要将这些指令按工作要求有序组合为一段完整的程序。 程序实际上是一系列计算机指令的有序集合。 我们把利用计算机的指令系统来合理地编写出解决某个问题的程序的过程,称之为程序设计。 4.1简单汇编语言程序设计编制程序的步骤1.任务分析(硬件、软件系统分析)2.确定算法和工作步骤;3.程序总体设计和流程图绘制1.任务分析(硬件、软件系统分析)2.确定算法和工作步骤;3.程序总体设计和流程图绘制关于流程图符号开始、结束-圆角矩形工作任务圆角矩形工作任务-矩形判断分支矩形判断分支-菱形程序流向菱形程序流向-程序连接-开始结束4.分配内存,确定程序与数据区存放地址;5.编写源程序;6.调试、修改,最终确定程序。 4.分配内存,确定程序与数据区存放地址;5.编写源程序;6.调试、修改,最终确定程序。 方法技巧1.模块化设计(按功能分显示、打印、输入、发送等)2.尽量采用循环及子程序结构(节省内存)1.模块化设计(按功能分显示、打印、输入、发送等)2.尽量采用循环及子程序结构(节省内存)汇编语言的规范1.汇编语言源程序由以下两种指令构成?汇编语句(指令语句)?伪指令(指示性语句)2.汇编语句的格式伪指令(指示性语句)2.汇编语句的格式标号操作码操作数;注释数据表示形式二进制(B)、十六进制(H)、十进制(D或省略)、ASCII码(以单引号标识)3.伪指令控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。 二进制(B)、十六进制(H)、十进制(D或省略)、ASCII码(以单引号标识)3.伪指令控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。 4.1.1分支程序分支程序可根据要求无条件或条件地改变程序执行流向。 编写分支程序主要在于正确使用改变程序执行流向。 编写分支程序主要在于正确使用转移指令。 分支程序有单分支结构、双分支结构、多分支结构(散转)。 分支程序有单分支结构、双分支结构、多分支结构(散转)条件成立?下条指令程序段A单分支结构YN条件成立?程序段AY N程序段A双分支结构分支程序分支程序可根据要求无条件或条件地改变程序执行流向。 编写分支程序主要在于正确使用转移指令。 分支程序有单分支结构、双分支结构、多分支结构(散转)分支程序可根据要求无条件或条件地改变程序执行流向。 编写分支程序主要在于正确使用转移指令。 分支程序有单分支结构、双分支结构、多分支结构(散转)K=?程序段nn0程序段1多分支结构程序段011比较数的大小?入口条件部两个带符号数分别存在内部RAM30H和31H单元中,试比较它们的大小,将较大的数存入单元中,试比较它们的大小,将较大的数存入32H单元中。 XY为正:OV0,则XYOV=1,则XYXY为负:OV0,则XYOV1,则XYX-Y0?YOV=1?NYYN开始置初值32HY32H XOV=1?YX=Y?NN?ORG0100H?MOV A,30H;取初值?CLR C?SUBB A,31H;XY?JZ DZ1;X=Y?JC EBB?JB OV,EB1;XY0,OV=1,XY?AJMP DZ1;XY0,OV=0,XY?EBB JBOV,DZ1;XY0,OV=1,XY?EB1MOV A,31H;XY?AJMP JS0?DZ1MOV A,30H;XY?JS0MOV32H,A?END例设变量x以补码形式存放在片内RAM30H单元中,变量y与x的关系是编程根据x的值求y值并放回原单元。 设变量x以补码形式存放在片内RAM30H单元中,变量y与x的关系是编程根据x的值求y值并放回原单元。 ?=0,50,200,x xxHx xy2函数运算A=?y=x+50y=20H y=x0取x即(30h)A开始存y即y30h结束ORG0000HSTART:MOV A,30HJZ NEXT;x=0,转移ANL A,#80H;保留符号位JZ ED;x0,转移MOV A,#05H;x0,转移MOV A,#05H;x0,不转移ADD A,30HMOV30H,ASJMP EDNEXT:MOV30H,#20HED:SJMP$STARTMOV DPTR,#TABMOV A,R7ADD A,R7;R72STARTMOV DPTR,#TABMOV A,R7ADD A,R7;R72AMOV R3,A;暂存R3MOVC A,A+DPTR;取高位地址XCH A,R3INC AMOVC A,A+DPTR;取低位地址MOV DPL,A MOVDPH,R3;转移地址送入DPTRCLR AJMPA+DPTR TAB:AMOV R3,A;暂存R3MOVC A,A+DPTR;取高位地址XCH A,R3INC AMOVC A,A+DPTR;取低位地址MOV DPL,A MOVDPH,R3;转移地址送入DPTRCLR AJMPA+DPTR TAB:DW P0DW P1DW PN例根据R7的内容,转至对应的分支程序。 设R7的内容为0根据R7的内容,转至对应的分支程序。 设R7的内容为0N,对应的处理程序地址分别为P0P7P0高位P0低位TABP1高位P1低位TAB+24.3.3循环程序循环程序一般由初始化部分循环体部分-处理部分、修改部分、控制部分结束部分其结构一般有两种结束部分其结构一般有两种先进入处理部分,再控制循环?至少执行一次循环体先控制循环,再进入处理部分?循环体是否执行,取决于判断结果。 开始设置循环初值循环处理循环修改结束处理结束循环结束?开始设置循环初值循环处理循环修改结束处理结束循环结束?NYYN循环控制的一般方法?循环次数已知?利用循环次数控制?循环次数?利用关键字控制?利用“逻辑尺”?根据“逻辑尺”的内容,进行控制。 例统计数据块的长度?入口条件内部RAM30H开始的存储区有若干个数据,最后一个数据为字符FFH,结果存入40H单元。 入口条件内部RAM30H开始的存储区有若干个数据,最后一个数据为字符FFH,结果存入40H单元。 ORG0100HMAINMOV R1,#30H;R1作为地址指针CLR A;累加器A作为计数器LOOPCJNER1,#0FFH,NEXT;与数据FF比较,不等转移SJMP JSH1;找到结束符号,结束循环NEXTINC A;计数器加1INC R1;指针加lSJMP L00P;循环JSHlINC A;再加入l个字符MOV40H,A;存结果ENDORG0100HMAINMOV R1,#30H;R1作为地址指针CLR A;累加器A作为计数器LOOPCJNER1,#0FFH,NEXT;与数据FF比较,不等转移SJMP JSH1;找到结束符号,结束循环NEXTINC A;计数器加1INC R1;指针加lSJMP L00P;循环JSHlINC A;再加入l个字符MOV40H,A;存结果END4.1.3延时程序?10.1s延时程序(晶振为12M)?ORG0100H?MOV R2,#200?LOOPMOV R3,#250?DJNZ R3,$?DJNZ R2,LOOP?RET?由于采用12M晶振,机器周期为1s,DJNZ的指令周期为的指令周期为2,整个程序的执行时间为25020021s100000s0.1s21s延时程序(晶振为12M)?ORG0100H?MOV R1,#10?LOOP1MOV R2,#200?LOOPMOV R3,#250?DJNZ R3,$?DJNZ R2,LOOP?DJNZ R1,LOOP1?RET例50ms延时子程序。 设晶振频率为12MHz,则机器周期为1us。 50ms延时子程序。 设晶振频率为12MHz,则机器周期为1us。 DEL:MOV R7,#200;1MCDEL1:MOV R6,#123;1MOP;1MCDJNZ R6,$;2MCDJNZ R7,DEL1;2MCRET;2MC延时时间DEL:MOV R7,#200;1MCDEL1:MOV R6,#123;1MOP;1MCDJNZ R6,$;2MCDJNZ R7,DEL1;2MCRET;2MC延时时间t=1+200(1+1+2*123)+2+250000us=50ms4.2MCS-51常用子程序?4.2.1代码转换类程序设计?4.2.2查表程序设计?4.2.3定点数运算子程序?4.2.4浮点数运算子程序子程序问题子程序设计时注意事项1.给子程序赋一个名字。 实际为入口地址代号。 2.要能正确传递参数入口条件子程序中要处理的数据如何给予。 出口条件子程序处理结果如何存放。 子程序设计时注意事项1.给子程序赋一个名字。 实际为入口地址代号。 2.要能正确传递参数入口条件子程序中要处理的数据如何给予。 出口条件子程序处理结果如何存放。 (寄存器、存储器、堆栈方式)3.保护与恢复现场保护现场压栈指令PUSH恢复现场弹出指令POP4.子程序可以嵌套弹出指令POP4.子程序可以嵌套4.2.1代码转换类程序设计1单字节十六进制数转换成双字节ASCII码码表4-1十六进制数与ASCII码之间的关系十六进制数十六进制数十六进制数十六进制数030H434H838H C43H131H535H939H D44H232H636H A41H E45H333H737H B42H F46H入口条件待转换的单字节十六进制数在寄存器R2中。 出口高四位的中。 出口高四位的ASCII码在A中,低四位的ASCII码在B中。 ORG0100HMOV A,R2MOV B,A;暂存待转换的单字节十六进制数LCALL MS1;转换低四位XCH A,B;存放低四位的ASCII码SWAP A;准备转换高四位LCALL MS1;转换高四位SJMP$MS1ANL A,#0FH;将累加器的低四位转换成ASCII码ADD A,#90HDA AADDC A,#40HDA ARETORG0100HMOV A,R2MOV B,A;暂存待转换的单字节十六进制数LCALL MS1;转换低四位XCH A,B;存放低四位的ASCII码SWAP A;准备转换高四位LCALL MS1;转换高四位SJMP$MS1ANL A,#0FH;将累加器的低四位转换成ASCII码ADD A,#90HDA AADDC A,#40HDA ARET将多位十六进制数转换成ASCII码,设R0指向十六进制数低位,R2存放字节数,转换后R1指向ASCII码高位。 将多位十六进制数转换成ASCII码,设R0指向十六进制数低位,R2存放字节数,转换后R1指向ASCII码高位。 HTASC:MOV A,R0;取十六进制数ANL A,#0FH;取低四位ADD A,#15;偏移修正MOVC A,A+PC;查表得ASCII码MOVR1,A;保存INC R1MOV A,R0;取十六进制数高四位SWAP A;ANL A,#0F0H ADD A,#06H;偏移修正MOVC A,A+PC;查表MOVR1,A;保存INC R0;指向下一单元INC R1DJNZ R2,HTASCRETASCTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46HHTASC:MOV A,R0;取十六进制数ANL A,#0FH;取低四位ADD A,#15;偏移修正MOVC A,A+PC;查表得ASCII码MOVR1,A;保存INC R1MOV A,R0;取十六进制数高四位SWAP A;ANL A,#0F0H ADD A,#06H;偏移修正MOVC A,A+PC;查表MOVR1,A;保存INC R0;指向下一单元INC R1DJNZ R2,HTASCRETASCTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46H2.ASCII码转换成十六进制数?的入口条件待转换的ASCII码在R2中。 ?出口转换后的十六进制数在R3中。 ?ORG0100H?MOV A,R2?SUBB A,#30H?CLR C?JNB ACC.4,M1?SUBB A,#7?M1MOV R3,A?SJMP$?END3.十六进制整数转换成单字节码整数?入口条件待转换的单字节十六进制整数在R2中。 ?在出口转换后的码整数(十位和个位)在R5中中,百位在R3中。 MOV A,R2?HBCDMOV B,#100;分离出百位,存放在R3中中?DIV AB?MOV R3,A?MOV A,#10;余数继续分离十位和个位?XCH A,B?DIV AB?SWAPA?ORL A,B;将十位和个位拼装成码?MOV R5,A?SJMP$?END4双字节十六进制整数转换成双字节码整数入口条件待转换的双字节十六进制整数在R 6、R7中。 出口转换后的三字节码整数在中。 出口转换后的三字节码整数在R 3、R 4、R5中。 ORG0100HHB2CLR A;码初始化MOV R3,AMOV R4,A MOV R5,AMOV R2,#10H;转换双字节十六进制整数HB3MOV A,R7到;从高端移出待转换数的一位到CY中中RLC AMOV R7,AMOV A,R6RLC A?MOV R6,AMOV A,R5;码带进位自身相加,相当于乘ADDC A,R5DA A;十进制调整?MOV R5,A?MOV A,R4?ADDC A,R4?DA A?MOV R4,A?MOV A,R3?ADDC A,R3?MOV R3,A;双字节十六进制数的万位数不超过,不用调整?DJNZ R2,HB3;判断16位处理完??SJMP$?END5双字节码整数转换成双字节十六进制整数入口条件待转换的双字节码整数在R 2、R3中。 出口转换后的双字节十六进制整数仍在R 2、R3中。 ORG0100HBH2:MOV A,R3;将低字节转换成十六进制LCALL BCD1MOV R3,AMOV A,R2;将高字节转换成十六进制LCALL BCD1MOV B,#100;扩大一百倍MUL ABADD A,R3;和低字节按十六进制相加MOV R3,ACLR AADDC A,BMOV R2,ASJMP$BCD1MOV B,#10H;分离十位和个位DIV ABMOV R4,B;暂存个位MOV B,#10;将十位转换成十六进制MUL ABADD A,R4;十六进制加上个位RETEND4.2.2查表程序设计?MOVC A,A+DPTR?MOVCA,A+PC?1查表求ASCII码码?入口条件R0低四位有一个十六进制数(低四位有一个十六进制数(0F)。 ?应出口将查表找出的相应ASCII码并送回R0中。 ?ORG0100H?MOV A,R0?ANL A,#0FH;屏蔽高4位位?ADD A,#03H;查表指令PC值与表格PC值相差3字节?MOVCA,A+PC;查表?MOV R0,A;存结果?SJMP$?ASCTAB DB0,1,2,3,4,5,6,7?DB8,9,A,B,C,D,E,F4.2.3定点数运算子程序?1多字节码加法?入口条件字节数在R7中,被加数在30H起始单元中,加数在起始单元中,加数在40H起始单元中。 ?出口和在30H起始单元中,最高位进位在CY中。 ?ORG0100H?MOV R7,#03H?MOV R0,#30H?MOV R1,#40H?MOV A,R7;取字节数至R2中中?MOV R2,A?ADD A,R0;初始化数据指针?MOV R0,A?MOVA,R2?ADD A,R1?MOVR1,A?CLR C?BB1DEC R0;调整数据指针?DEC R1?MOV A,R0?ADDC A,R1;按字节相加?DA A;十进制调整?MOVR0,A回;和存回R0中中?DJNZ R2,BB1;处理完所有字节?END2多字节码减法入口条件在字节数在R7中,被减数在R0中,减数在R1中。 ?出口在差在R0中,最高位借位在CY中。 ?ORG0100H?BCDBLCALL MN1;减数R1十进制取补?LCALL BCDA;按多字节码加法处理?CPL C;将补码加法的进位标志转换成借位标志?MOV F0,C?LCALL MN1;恢复减数R1的原始值?MOV C,F0;恢复借位标志?RET?MN1MOVA,R0;R1十进制取补子程序入口?XCH A,R1;交换指针?XCH A,R0?LCALLNEG;通过R0实现R1取补?MOV A,R0?XCH A,R1;换回指针?XCH A,R0?RET?BCDAMOV A,R7;取字节数至R2中?MOV R2,A?ADD A,R0;初始化数据指针?MOV R0,A?MOV A,R2?ADD A,R1?MOV R1,A?CLR C?BCD1DEC R0;调整数据指针?DECR1?MOVA,R0?ADDC A,R1;按字节相加?DA A;十进制调整?MOVR0,A;和存回R0中?DJNZ R2,BCD1;处理完所有字节?RET?NEGMOVA,R7;BCD码取补子程序?DEC A?MOVR2,A?MOVA,R0?MOV R3,A?NEG0CLR C?MOV A,#99H?SUBB A,R0;按字节十进制取补?MOVR0,A回;存回R0中中?INC R0;调整数据指针?DJNZ R2,NEG0(;处理完(R2)字节?MOV A,#9AH;最低字节单独取补?SUBB A,R0?MOVR0,A?MOV A,R3;恢复指针?MOV R0,A?RET?4双字节二进制无符号数乘法子程序?入口条件被乘数在R 2、R3中,乘数在R 6、R7中。 ?在出口乘积在R 2、R 3、R 4、R5中。 ?ORG0100H?MULD MOV A,R3算;计算R3乘乘R7?MOV B,R7?MUL AB?MOV R4,B;暂存部分积?MOV R5,A?MOV A,R3算;计算R3乘乘R6?MOV B,R6?MUL AB?ADDA,R4;累加部分积?MOV R4,A?CLR A?ADDCA,B?MOV R3,A?MOV A,R2算;计算R2乘乘R7?MOV B,R7?MUL AB?ADDA,R4;累加部分积?MOV R4,A?MOV A,R3?ADDCA,B?MOV R3,A?CLR A?RLC A?XCH A,R2算;计算R2乘乘R6?MOV B,R6?MUL AB?ADDA,R3;累加部分积?MOV R3,A?MOV A,R2?ADDCA,B?MOV R2,A?RET?6双字节二进制无符号数除法子程序?在入口条件被除数在R 2、R 3、R 4、R5中,除数在中,除数在R 6、R7中。 ?出口OV=0在时,双字节商在R 2、R3中,OV=1时溢出。 ?ORG0100H?DIVDCLR C;比较被除数和除数?MOV A,R3?SUBB A,R7?MOV A,R2?SUBB A,R6?JC DVD1?SETB OV;溢出?RET?DVD1MOV B,#10H;计算双字节商?DVD2CLR C;部分商和余数同时左移一位?MOV A,R5?RLC A?MOV R5,A?MOV A,R4?RLC A?MOV R4,A?MOV A,R3?RLC A?MOV R3,A?XCH A,R2?RLC A?XCH A,R2?MOV F0,C;保存溢出位?CLR C?SUBB A,R7;计算(R2R3R6R7)?MOV R1,A?MOV A,R2?SUBB A,R6?ANL C,/F0;结果判断?JC DVD3?MOV R2,A;够减,存放新的余数?MOV A,R1?MOV R3,A?INC R5;商的低位置一?DVD3DJNZ B,DVD2;计算完十六位商(R4R5)?MOV A,R4到;将商移到R2R3中中?MOV R2,A?MOV A,R5?MOV R3,A?CLR OV;设立成功标志?RET4.2.4浮点数运算子程序?1浮点数的表示?( (1)二进制浮点操作数?用三个字节表示,第一个字节的最高位为数符,其余七位为阶码(补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用双字节纯小数(原码)来表示。 当尾数的最高位为时,便称为规格化浮点数,简称操作数用三个字节表示,第一个字节的最高位为数符,其余七位为阶码(补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用双字节纯小数(原码)来表示。 当尾数的最高位为时,便称为规格化浮点数,简称操作数? (2)十进制浮点操作数?用三个字节表示,第一个字节的最高位为数符,用来表示正负数(0表示正数,1表示负数)其余七位为阶码(二进制补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用双字节BCD码纯小数(原码)来表示。 当十进制数的绝对值大于时,阶码就等于整数部分的位数。 用三个字节表示,第一个字节的最高位为数符,用来表示正负数(0表示正数,1表示负数)其余七位为阶码(二进制补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用双字节BCD码纯小数(原码)来表示。 当十进制数的绝对值大于时,阶码就等于整数部分的位数。 ?例如156.6的阶码是03H,156.6的阶码是83H;例如156.6的阶码是03H,156.6的阶码是83H;?当十进制数的绝对值小于1时,阶码就等于80H减去小数点后面零的个数。 当十进制数的绝对值小于1时,阶码就等于80H减去小数点后面零的个数。 ?例如0.00362的阶码是7EH,0.00362的阶码是0FEH。 例如0.00362的阶码是7EH,0.00362的阶码是0FEH。 ?例如有一个十进制浮点操作数存放在30H、31H、32H中,数值是0.07315,即0.7315乘以10的1次方,则阶码为7FH,若加上数符(30H)=0FFH,31H=73H,(32H)=15H。 例如有一个十进制浮点操作数存放在30H、31H、32H中,数值是0.07315,即0.7315乘以10的1次方,则阶码为7FH,若加上数符(30H)=0FFH,31H=73H,(32H)=15H。 ? (3)运算精度?单次定点运算精度为结果最低位的当量值;单次二进制浮点算术运算的精度优于十万分之三;单次二进制浮点超越函数运算的精度优于万分之一;单次定点运算精度为结果最低位的当量值;单次二进制浮点算术运算的精度优于十万分之三;单次二进制浮点超越函数运算的精度优于万分之一;BCD码浮点数本身的精度比较低(万分之一到千分之一),不宜作为运算的操作数,仅用于输入或输出时的数制转换。 不管那种数据格式,随着连续运算的次数增加,精度都会下降。 码浮点数本身的精度比较低(万分之一到千分之一),不宜作为运算的操作数,仅用于输入或输出时的数制转换。 不管那种数据格式,随着连续运算的次数增加,精度都会下降。 ?2浮点数加减法子程序?在入口条件被加数在R0在中,加数在R1在中。 被减数在R0中,减数在R1中。 ?当当F0=0时,程序作浮点数加法运算;当F0=1时,程序作浮点数减法运算。 ?出口OV=0时,和(差)仍在R0中,OV=1时,溢出。 ?ORG0100H?FADD CLRF0;设立加法标志?SJMP AS;计算代数和?FSUB SETBF0;设立减法标志?ASLCALL MVR1;将计算代数和。 先将R1传送到第二工作区?MOV C,F0;用加减标志来校正第二操作数的有效符号?RRC A?XRL A,R1?MOV C,ACC.7ASNMOV1EH,C;位将第二操作数的有效符号存入位1EH中中XRL A,R0;与第一操作数的符号比较RLC AMOVF0,C;保存比较结果LCALL MVR0将;将R0传送到第一工作区中LCALL AS1;在工作寄存器中完成代数运算MOV0INC R0到;将结果传回到R0中的子程序入口INC R0?MOV A,R4;传回尾数的低字节MOVR0,ADEC R0MOV A,R3;传回尾数的高字节MOVR0,ADEC R0MOV A,R2;取结果的阶码MOV C,1FH;取结果的数符MOV ACC.7,C;拼入阶码中MOVR0,ACLR ACC.7;不考虑数符CLR OV;清除溢出标志CJNE A,#3FH,MV01;阶码是否上溢?SETB OV;设立溢出标志MV01MOV A,R0;取出带数符的阶码RETMVR0MOV A,R0将;将R0传送到第一工作区中的子程序MOV C,ACC.7位;将数符保存在位1FH中中MOV1FH,C?MOV C,ACC.6;将阶码扩充为补码MOV ACC.7,CMOV R2,A在;存放在R2中中INC R0MOV A,R0在;将尾数高字节存放在R3中中MOV R3,AINC R0MOV A,R0在;将尾数低字节存放在R4中中MOV R4,ADEC R0;恢复数据指针DEC R0RETMVR1MOV A,R1;将将R1传送到第二工作区中的子程序MOV C,ACC.7;将数符保存在位1EH中中MOV1EH,CMOV C,ACC.6;将阶码扩充为补码MOV ACC.7,CMOV R5,A;存放在R5中中INC R1?MOV A,R1;将尾数高字节存放在R6中中MOV R6,AINC R1MOV A,R1;将尾数低字节存放在R7中中MOV R7,ADEC R1;恢复数据指针DEC R1RETAS1MOV A,R6;读取第二操作数尾数高字节ORL A,R7JZ AS2;第二操作数为零,不必运算MOV A,R3;读取第一操作数尾数高字节ORL A,R4JNZ EQMOV A,R6;第一操作数为零,结果以第二操作数为准;第一操作数为零,结果以第二操作数为准MOV R3,A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论