指令系统与汇编语言程序设计.ppt_第1页
指令系统与汇编语言程序设计.ppt_第2页
指令系统与汇编语言程序设计.ppt_第3页
指令系统与汇编语言程序设计.ppt_第4页
指令系统与汇编语言程序设计.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

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

文档简介

指令系统与汇编语言程序设计,长江大学 徐爱钧,指令和助记符,指令本身是一组二进制数代码,为了便于 记忆,将这些代码用具有一定含义的指令助记 符来表示,助记符一般采用英文单词的缩写 。 例: 指令代码 助记符 功能 740A MOV A,#0AH 将十六进制数0AH放 入累加器A中,指令的字节数,一条指令由操作码和操作数组成。操作码 指明执行什么操作,例如数的传送、加法、减 法等。操作数则表示这条指令所完成的操作对 象,即是对谁进行操作。操作数可以是一个数, 或者是一个数所在的内存地址。指令由指令字 节组成,不同的指令,指令的字节数不相同。 有单字节指令、双字节指令和三字节指令。,寻址方式,1 寄存器寻址 2 直接寻址 3 立即寻址 4 寄存器间接寻址 5 变址寻址 6 相对寻址 7 位寻址,寄存器寻址,以通用寄存器的内容为操作数的寻址方式。 通用寄存器为A、B 、DPTR以及R0R7 。 例: CLR A ;A0 INC DPTR ;DPTRDPTR+1 ADD R5,# 20H ;R5#20H+R5,直接寻址,指令中直接给出操作数地址的寻址方式, 能进行直接寻址的存储空间有SFR寄存器和内 部数据RAM。 例: MOV PSW,# 20H ;PSW#20H MOV A,30H ;A(30H),立即寻址,指令中直接给出操作数的寻址方式。立即操 作数用前面加有#号的8位或16位数来表示。 例: MOV A,# 60H ;A#60H MOV DPTR,# 3400H ;DPTR#3400H MOV 30H,# 40H ;30H单元#40H,寄存器间接寻址,以寄存器中内容为地址,以该地址中内容为操 作数的寻址方式。间接寻址的存储器空间包括内 部数据RAM和外部数据RAM。能用于寄存器间接 寻址的寄存器有R0,R1和DPTR。在寄存器名称 前面加一个符号来表示寄存器间接寻址。 例: MOV A , R0 ;A (R0) MOVX DPTR,A ;外部RAM(DPTR)A,MOV A ,R0 操作示意图,片外RAM,2000H,DPTR,30H,A,2000H,30H,MOVX DPTR,A 操作示意图,5 变址寻址,变址寻址是以某个寄存器的内容为基本地 址,然后在这个基址上加以地址的偏移量,才是 真正的操作数地址。 例: MOVC A, A+DPTR ;A(A+DPTR) MOVC A, A+PC ;A(A+PC),MOVC A, A+DPTR 操作示意图,相对寻址,以当前程序计数器PC的内容为基础,加上 指令给出的一字节补码数(偏移量)形成新的 PC值的寻址方式。相对寻址用于修改PC值, 主要用于实现程序的分支转移。 例: SJMP 08H ;PCPC+2+08H,SJMP 08H 操作示意图,7 位寻址,位寻址只能对有位地址的单元作位寻址操 作。位寻址其实是一种直接寻址方式,不过其 地址是位地址。 例: SETB 10H ;将10H位置1 MOV 32H,C ;32H进位位C CLR PSW.4 ;将RS1位清0,指令分类说明,1 算术运算类指令 2 逻辑运算与循环类指令 3 数据传送类指令 4 程序转移类指令 5 子程序调用及返回指令 6 位操作指令,算术运算类指令,主要用于8位无符号数运算;也可用于带符号数运算。包括:加、减、乘、除、加1、减1运算指令, 指令操作将影响PSW中有关状态位。,1 加法指令,ADD A,#data ADD A,direct ADD A,Rn ADD A,Ri 用途:将A中的值与源操作数所指内容相加,最终结果 存在A中。,(1)不带进位位的加法指令(4条),例1:ADD A,#47H ADD A,34H ADD A,R7 ADD A,R0,例2:MOV A,#0AEH ;-82 ADD A,#81H ;-127 则执行完本条指令后,A中的值为2FH PSW中状态位 C=1,AC=0,OV=1,P=1 对无符号数:结果为12FH; 对带符号数:OV=1,有错。,(2)带进位位的加法指令(4条),ADDC A,Rn ; ARnCYA ADDC A,direct ; A(direct )CYA ADDC A,Ri ; A(Ri)CYA ADDC A,#data ; AdataCYA 用途:将A中的值和其后面的值以及进位位C中的值相加, 最终结果存在A,常用于多字节数运算中。,例:,先做67H+A0H=107H,而107H显然超过了0FFH,因此最终保存在A中的是07H,而1则到了PSW中的CY位了。换言之,CY就相当于是100H。 然后再做10H + 30H + CY,结果是41H,所以最终的结果是4107H。,1067H+30A0H,0001 0000 0110 0111,0011 0000 1010 0000,0100 0001 0000 0111,1067H,30A0H,4107H,又例:,先做67H+20H=87H,没有超过0FFH,因此最终保存在A中的是87H,而PSW中的CY=0。 然后再做10H + 30H + CY,结果是40H,所以最终的结果是4087H。,1067H+3020H,0001 0000 0110 0111,0011 0000 0010 0000,0100 0000 1000 0111,1067H,3020H,4087H,(3) 加1指令(5条),INC A ;A+1A,影响P标志 INC Rn ;Rn+1Rn INC direct ;(direct)+1(direct) INC Ri ;(Rn)+1(Rn) INC DPTR ;DPTR+1DPTR 功能很简单,就是将后面目标中的值加1。,例:A=12H,R0=33H,(21H)=32H, (34H)=22H,DPTR=1234H。 连续执行下面的指令: INC A INC R0 INC 21H INC R0 INC DPTR,; A=13H ; R0=34H ;(21H)=33H ;(34H)=23H ; DPTR=1235H,DA A 在进行BCD码加法运算时,跟在ADD和ADDC指令之后,用来对BCD码加法运算结果进行自动修正。 例:A=00010101(代表十进制数15) ADD A,#8,(4) 十进制调整指令(1条),; A=1DH,按二进制规律加,; A=23H,按十进制规律加,DA A,2 减法指令(8条),SUBB A,Rn ; ARnCYA SUBB A,direct ; A(direct )CYA SUBB A,Ri ; A(Ri)CYA SUBB A,#data ; AdataCYA 将A中的值减去源操作数所指内容以及进位位C中的 值,最终结果存在A中。 说明:没有不带借位的减法指令,如果需要做不带位的减法指令(在做第一次相减时),只要将CY清零即可。,(1) 带借位的减法指令(4条),(2) 减1指令(4条),DEC A ;A-1A, DEC Rn ;Rn-1Rn DEC direct ;(direct)-1(direct) DEC Ri ;(Rn)-1(Rn) 与加1指令类似。,3 乘法指令(1条),MUL AB ;ABBA 此指令的功能是将A和B中的两个8位无符号数相乘,结果将为16无符号数。其中高8位放在B中,低8位放在A中。在乘积大于FFH时,0V置1,否则OV为0;而CY总是0。 例: A=4EH,B=5DH, 执行MUL AB指令后,乘积是1C56H,所以在B中放的是1CH,而A中放的则是56H。,4 除法指令(1条),DIV AB ;AB的商A,余数B 此指令的功能是将A中的8位无符号数除B中的8位 无符号数,商放在A中,余数放在B中。 如果在做除法前B中的值是00H,也就是除数为0,那么0V=1。 例: A=11H,B=04H, 执行DIV AB指令后,结果为:A=04H,B=1。,逻辑运算与循环类指令,主要用于对2个操作数按位进行逻辑操作,结果送到 A或直接寻址单元。 主要操作 与、或、异或、移位、取反、清零等。 对标志位的影响 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响标志位。,1 逻辑或指令(6条),ORL A,Rn ;ARnA ORL A,direct ;A(direct)A ORL A,Ri ;A(Ri)A ORL A,#data ;AdataA ORL direct,A ;(direct)A(direct) ORL direct,#data ;(direct)data(direct),例:71H和56H相或: 01110001 (71H) ) 01010110 (56H),01110111 即77H,后两条指令,若直接地址为I/O端口,则为“读改写”操作。,2 逻辑与指令 (6条),ANL A,Rn ;ARnA ANL A,direct ;A(direct)A ANL A,Ri ;A(Ri)A ANL A,#data ;AdataA ANL direct,A ;(direct)A(direct) ANL direct,#data ;(direct)data(direct),例:71H和56H相与: 01110001 (71H) )01010110 (56H),01010000 即50H,后两条指令,若直接地址为I/O端口,则为“读改写”操作。,例:71H和56H相异或: 01110001 (71H) ) 01010110 (56H),3 逻辑异或指令(6条),XRL A,Rn ;A RnA XRL A,direct ;A (direct)A XRL A,Ri ;A (Ri)A XRL A,#data ;A dataA XRL direct,A ;(direct) A(direct) XRL direct,#data ;(direct) data(direct),00100111 即27H,后两条指令,若直接地址为I/O端口,则为“读改写”操作。,4 取反与清0指令(2条),取反:CPL A ;/AA 例:若A=5CH, 执行CPL A 结果:A=A3H,清0:CLR A ;0A,5 循环移位指令(4条),RL A RR A RLC A RRC A,后两条指令,影响P和CY标志。,例:,若A=5CH,CY=1,执行RLC A后,,对RLC、RRC指令,在CY=0时 RLC相当于乘以2 RRC相当于除以2,结果:A=B9H,CY=0,P=1,综合举例:,ANL A,#0FH ;屏蔽A的高4位 SWAP A ANL P1,#0FH ;清P1口高4位 ORL P1,A ;P1口高4位输出A的低4位;,把累加器A中的低4位状态,通过P1口的高4位输出, P1口的低4位状态不变。,数据传送类指令,助记符 说明 MOV、MOVX、MOVC 传送操作 XCH、XCHD、SWAP 交换操作 PUSH、POP 堆栈操作 源操作数寻址方式: 立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。 目的操作数寻址方式: 直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影 响标志位。,8051单片机片内数据传送图,1 以累加器为目的操作数的指令(4条),MOV A,Rn MOV A,direct MOV A,Ri MOV A,#data 这组指令功能将源操作数指定内容送到A中。,2 以寄存器Rn为目的操作数的指令 (3条),MOV Rn,A MOV Rn,direct MOV Rn,#data 这组指令功能是把源操作数指定的内容送入当前工作寄存 器,源操作数不变。,3 以直接地址为目的操作数的指令(5条),MOV direct,A MOV direct,Rn MOV direct1,direct2 MOV direct,Ri MOV direct,#data 这组指令功能是把源操作数指定的内容送入由直接地址指出的片内存储单元。 例: MOV 20H,A MOV 20H,R1 MOV 20H,30H MOV 20H,R1 MOV 0A0H,#34H MOV P2,#34H,4 以间接地址为目的操作数的指令(3条),MOV Ri,A MOV Ri,direct MOV Ri,#data 功能:把源操作数指定的内容送入以R0或R1中内容为 地址的片内存储单元。 例: MOV R0,A MOV R1,20H MOV R0,#34H,5 十六位数的传递指令(1条),MOV DPTR,#data16 8051是8位机,这是唯一的一条16位立即数传递指令。 功能:将一个16位的立即数送入DPTR中去。其中高8位 送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。 相当于执行了 MOV DPTR,#3512H。,6 累加器A与片外RAM之间的数据传递类指令(4条),MOVX A,DPTR MOVX DPTR,A MOVX A,Ri MOVX Ri,A 说明: (1).在8051中,与外部RAM存储器打交道的只可以是累加器A 。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。,(2).要读或写外部RAM,必须要知道RAM的地址,采用DPTR时,地址被直接放在DPTR中的。采用Ri(R0或R1)时,由于Ri只是8位的寄存器,所以只提供低8位地址。高8位地址由P2口来提供。 (3).使用时应先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。 MOV DPTR,#0100H MOVX A,DPTR MOV DPTR,#0200H MOVX DPTR,A,7 读程序存储器指令(2条),MOVC A,A+DPTR MOVC A,A+PC 本组指令是将ROM中的数送入A中。本组指令也被称为查表指 令,常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) MOV DPTR,#100H MOV A,R0 MOVC A,A+DPTR ORG 0100H DB 0,1,4,9,16,25,8 堆栈操作(2条),PUSH direct POP direct 第一条为压入指令,将direct中的内容送入堆栈中,第二条为 弹出指令,将堆栈中的内容送回到direct中。 例: MOV SP,#10H MOV 40H,#50H PUSH 40H POP 30H 执行第一条PUSH 40H指令是这样的:将SP中的值加1,变为11H,然后将40H中的值送到11H单元中,因此执行完本条指令后,内存11H单元的值是50H,同样,执行POP 30H时,是将11H中的值送入到30H单元中,即执行完本条指令后,30H单元中的值变为50H。,9 交换指令(5条),XCH A,Rn XCH A, direct XCH A, Ri XCHD A, Ri SWAP A 例: 已知A中的内容为34H MOV R6, #29H XCH A, R6 SWAP A XCH A, R6 XCHD A, R0,程序转移类指令,此类指令一般不影响PSW。 包括以下类型: 无条件转移和条件转移 相对转移和绝对转移 长转移和短转移 调用与返回指令,无条件转移类指令(4条),短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel 间接转移指令:JMP A+DPTR,(1)上面的前三条指令,统统理解成:PC值改变,即跳转到一个标号处。 那么他们的区别何在呢?,跳转的范围不同。,短转移类指令:AJMP addr11 长转移类指令:LJMP addr16 相对转移指令:SJMP rel,转移范围: 2KB 64KB -128+127,指令构成不同。 AJMP、LJMP后跟的是绝对地址, 而SJMP后跟的是相对地址。,指令长度不同 原则上,所有用SJMP或AJMP的地方都可以用 LJMP来替代。,散转指令:JMP A+DPTR,这条指令的用途也是跳转,转到什么地方去呢?这可不能由标号简单地决定了。 转移地址由A+DPTR形成,并直接送入PC。 指令对A、DPTR和标志位均无影响。 本指令可代替众多的判别跳转指令,又称为散转指令,多用于多分支程序结构中。,(2)第四条指令与前三条指令相比有所不同,条件转移指令(8条),条件转移指令是指在满足一定条件时进行相对转移,否则程序继续执行本指令的下一条指令。,一、判A内容是否为0转移指令(2条),JZ rel ;如果A=0,则转移,否则顺序执行。 JNZ rel ;如果A0,就转移。 转移到相对于当前PC值的8位移量的地址去。即: 新的PC值=当前PC+偏移量rel 在编写汇编语言源程序时,可以直接写成: JZ 标号 ;即转移到标号处。,二、比较不等转移指令(4条),CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel CJNE Ri,#data,rel 此类指令的功能是将两个操作数比较,如果两者相等,就顺序执行,如果不相等,就转移。 同样地,使用时,可以将rel理解成标号,即: CJNE A,#data,标号 CJNE A,direct,标号 CJNE Rn,#data,标号 CJNE Ri,#data,标号,利用这些指令,可以判断两数是否相等。 但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能: 如果两数不相等,则CPU还会用CY(进位位)来反映哪个数大,哪个数小。 如果前面的数大,则CY=0,否则CY=1。 因此在程序转移后再次利用CY就可判断出哪个数大,哪个数小了。,三、减1不为0转移指令(2条),DJNZ Rn,rel DJNZ direct,rel DJNZ指令的执行过程是这样的: 它将第一个参数中的值减1,然后看这个值是否等于0,如果等于0,就往下执行,如果不等于0,就转移到第二个参数所指定的地方去。 例: LOOP: DJNZ 10H,LOOP,例: MOV 23H,#0AH CLR A LOOP: ADD A,23H DJNZ 23H,LOOP SJMP $ 上述程序段的执行过程是: 将23H单元中的数连续相加,存至A中,每加一次, 23H单元中的数值减1,直至减到0,共加(23H)次。,子程序调用与返回指令,一、调用指令(2条),LCALL addr16 ;长调用指令(3字节) ACALL addr11 ;短调用指令(2字节) 上面两条指令都是在主程序中调用子程序,两者的区别: 对短调用指令,被调用子程序入口地址必须与调用指令下一条指令的第一字节在相同的2KB存储区之内。使用时可以用标号表示子程序首地址,二、返回指令 (2条),子程序执行完后必须回到主程序,如何返回呢?只要执行一条返回指令就可以了。 RET ;子程序返回指令 RETI ;中断子程序返回指令 两者不能互换使用。,空操作指令(1条),NOP 空操作,就是什么事也不干,停一个周期,一般用作短时间的延时。,位操作指令,8051单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集,包括位变量传送、逻辑运算、控制程序转移等。 在8051中,有一部份RAM和一部份SFR是具有位寻址功能的。 位操作区:内部RAM的20H-2FH这16个字节单元,即128个位单元(位地址空间位007FH); 可以位寻址的特殊功能寄存器。,以PSW中位4( RS1 )为例。 直接(位)地址方式:如 D4H; 点操作符号方式:如 PSW.4,D0H.4; 位名称方式:如 RS1; 用户定义名方式:如用伪指令 bit SUB.REG bit RS1 定义后,可用SUB.REG代替RS1。,位地址表达方式,位传送指令(2条),MOV C,bit ;bit C MOV bit,C ;C bit 这组指令的功能是实现位累加器(CY)和其它位地址之间的数据传递。 例:MOV C,P1.0 ;将P1.0的状态送给C。 MOV P1.0,C ;将C中的状态送到P1.0 ;引脚上去。,位清0和置位(4条),位清0指令 CLR C ;使CY=0 CLR bit ;使指令的位地址等于0。 例:CLR P1.0 ;即使P1.0变为0 位置1指令 SETB C ;使CY=1 SETB bit ;使指定的位地址等于1。 例:SETB P1.0 ;使P.0变为1,位逻辑运算指令 (6条),位与指令 ANL C,bit ;Cy与指定位的值相与,结果送Cy ANL C,/bit ;先将指定的位地址中的值取出后取反,再和Cy相与,结果送回Cy。但注意:指定的位地址中的值本身并不发生变化。 例:ANL C,/P1.0,位取反指令 CPL C ;使Cy值取反。 CPL bit ;使指定的位的值取反。 例:CPL P1.0,位或指令 ORL C,bit ORL C,/bit,位条件转移指令(5条),判Cy转移指令 JC rel JNC rel 第一条指令的功能是如果Cy=1就转移,否则就顺序执行。 第二条指令则和第一条指令相反,即如果Cy=0就转移,否则就顺序执行。,判位变量转移指令 JB bit,rel JNB bit,rel JBC bit,rel 第一条指令:如果指定的(bit)=1,则转移,否则顺序执行,第二条指令功能相反。 第三条指令是如果指定的(bit)=1,则转移,并把该位清0,否则顺序执行。,汇编语言格式与伪指令,汇编语言源程序由以下两种指令构成 汇编语句(指令语句) 伪指令(指示性语句) 汇编语句的格式: 标号: 操作码 操作数 ;注释 3. 伪指令:控制汇编用的特殊指令,这些指令不属于指令系统,不产生机器代码。,常用的伪指令,ORG 定位目的程序的起始地址。 格式: ORG 表达式 表达式必须为16位地址值。 如:ORG 0000H END 汇编语言程序结束伪指令。 一定放在程序末尾!,EQU 赋值伪指令。 格式: 字符名称 EQU 数值或汇编符号 例: AA EQU 30H K1 EQU 40H MOV A,AA ; (30H)A MOV A,K1 ;(40H)A,常用的伪指令,DB 从指定单元开始定义(存储)若干个字节的数据或ASCII码字符,常用于定义数据常数表。 格式:DB 字节常数 或 ASCII字符 例: ORG 1000H DB 34H,0DEH,A,B DB 0AH,0BH,20,常用的伪指令,常用的伪指令,DW 从指定单元开始定义(存储)若干个字的数据 或ASCII码字符。 格式:DW 字常数或ASCII字符 例: ORG 2000H DW 1234H,B DW 0AH,20,常用的伪指令,BIT 位地址符号指令。 把位地址赋于规定的字符名称。 格式:字符名称 BIT 位地址 例: ABC BIT P1.1 QQ BIT P3.2,应用程序设计,在进行应用汇编程序设计时,首先要确定算法,算法的优劣很大程度上决定了程序的效率,另外还要尽可能画出程序框图,以便于分析程序流程。,定点数运算子程序,定点数:小数点固定的数。 可以把小数点固定在数值的最高位之前, 对于有符号的数,小数点应在符号位与最高数值位之间,即: 符号位 数值部分 也可以把小数点固定在最低数值位后面,即: 符号位 数值部分,定点数表示方式,(1)原码表示法,符号位为0表示正数,符号位为1表示负数,如: 二进制数00110100表示十进制数+52 二进制数10110100表示十进制数-52,(2)补码表示法,正数的补码表示与原码相同, 即最高位为0, 其余位为数值位。负数用补码表示时, 最高位为1, 数值位要按位取反后再在最低位加1,才是该负数的数值。,例如: 十进制数+51的二进制补码为00110011 十进制数 -51的二进制补码为11001101,例: 双字节数取补子程序。 将(R4R5)中的双字节数取补,结果送R4R5。 CMPT:MOV A,R5 CPL A ADD A,#1 MOV R5,A MOV A,R4 CPL A ADDC A,#0 MOV R4,A RET,例: 双字节原码数左移一位子程序。 将(R2R3)左移一位,结果送R2R3,不改变符号位, 不考虑溢出。 DRL1: MOV A,R3 CLR C RLC A MOV R3,A MOV A,R2 RLC A MOV ACC.7,C ;恢复符号位 MOV R2,A RET,例: 双字节原码右移一位子程序。 将(R2R3)右移一位,结果送R2R3,不改变符号位。 DRR1: MOV A,R2 MOV C,ACC.7 ;保护符号位 CLR ACC.7 ;移入0 RRC A MOV R2,A MOV A,R3 RRC A MOV R3,A RET,例: 双字节补码右移一位子程序。 将(R2R3)右移一位,结果送R2R3,不改变符号位。 CRR1: MOV A,R2 MOV C,ACC.7 ;保护符号位 RRC A ;移入符号位 MOV R2 ,A MOV A,R3 RRC A MOV R3,A RET,例:双字节无符号数加法子程序。 将(R2R3)和(R6R7)两个无符号数相加,结果送R4R5。 NADD: MOV A,R3 ADD A,R7 MOV R5,A MOV A,R2 ADDC A,R6 MOV R4,A RET,例:双字节无符号数减法子程序。 将(R2R3)和(R6R7)两个双字节数相减,结果送R4R5。 NSUB1: MOV A,R3 CLR C SUBB A,R7 MOV R5,A MOV A,R2 SUBB A,R6 MOV R4,A RET,例:双字节原码加减运算子程序。 (R2R3)和(R6R7)为两个原码表示的数,最高位为符号位,求(R2R3)(R6R7)结果送R4R5。程序中DADD为原码加法子程序入口,DSUB为原码减法子程序入口。出口时CY=1发生溢出,CY=0为正常。 DSUB: MOV A, R6 ;减法入口 CPL ACC.7 ;取反符号位 MOV R6, A DADD

温馨提示

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

评论

0/150

提交评论