极简51单片机:体系结构、程序设计与案例开发(汇编语言版)课件 第2章 51单片机汇编语言基础_第1页
极简51单片机:体系结构、程序设计与案例开发(汇编语言版)课件 第2章 51单片机汇编语言基础_第2页
极简51单片机:体系结构、程序设计与案例开发(汇编语言版)课件 第2章 51单片机汇编语言基础_第3页
极简51单片机:体系结构、程序设计与案例开发(汇编语言版)课件 第2章 51单片机汇编语言基础_第4页
极简51单片机:体系结构、程序设计与案例开发(汇编语言版)课件 第2章 51单片机汇编语言基础_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

2.1汇编语言的格式及程序的执行过程

2.1.1汇编语言程序的基本结构2.1.2程序和指令的执行过程2.1.3指令及其基本格式 2.2常数的表示及运算2.2.1ASCII码和BCD码 2.2.2有符号数的表示及运算第2章51单片机汇编语言基础2.3常用的伪指令 2.3.1EQU伪指令 2.3.2DATA和XDATA伪指令2.3.3BIT伪指令 2.3.4DB和DW伪指令2.451单片机的指令系统2.4.1无条件转移指令 2.4.2MOV指令与寻址方式2.4.3算术和逻辑运算指令 2.4.4交换指令 2.1汇编语言的格式

汇编语言(AssemblyLanguage)是用来替代机器语言进行程序设计的语言,由助记符、保留字和伪指令等构成,很容易记忆、识别和读写。用汇编语言编写的程序称为汇编语言程序(ALP,AssemblerLanguageProgram)。与高级语言一样,用汇编语言编写的程序无法由计算机硬件识别和运行,必须将其转换为机器语言,这一转换过程称为汇编(Compile)和链接,类似于高级语言的编译和链接。在编写好汇编语言程序后,一般用专门的汇编程序实现汇编和链接。

ORG

0000H

LJMP

MAIN

ORG 0100HMAIN:;实现具体功能的应用程序代码放在这里

;…

END2.1.1汇编语言程序的基本结构最基本的51单片机汇编语言程序的框架结构:2.1.2程序和指令的执行过程指令的执行过程程序中每条指令的执行都包括两个基本的过程,首先根据PC找到ROM单元,从中取出指令的机器码,这一过程简称为取指令。之后由CPU执行该指令,实现指令规定的操作和运算,这一过程称为执行指令。CPU每次从ROM中取出一个字节的指令机器码,在单片机时钟电路产生的的时钟脉冲作用下,PC会自动加1指向ROM的下一个字节单元,因此根据PC中的内容,CPU即可自动连续不断地从ROM取出程序中的各条指令,并顺序执行相应的操作运算。机器周期和指令周期机器周期指的是单片机的基本操作周期,也就是单片机完成一项基本操作(例如从ROM读取一个字节的指令机器码)所需的时间。对51单片机,机器周期等于12个时钟周期。假设时钟频率为12MHz,则一个机器周期正好为1s。指令周期指的是单片机中的CPU从ROM读取一条指令,并完成该指令规定的操作运算所需的时间。不同的指令要求实现的功能各不相同,指令的长度不同,执行所需的时间也不一样,因此每条指令具有不同的指令周期,但是所有指令的指令周期都以机器周期为单位表示。2.1.3指令及其基本格式汇编语言程序中的每一条语句都由指令再附加上变量名或标号以及注释构成。根据在程序所起的作用不同,指令分为伪指令和可执行指令。伪指令(PseudoInstruction)只是为汇编过程起一些辅助说明解释和指示的作用,汇编时不会转换得到对应的机器语言目标代码,或者说不占用ROM空间。可执行指令(ExecutableInstruction)代表单片机能够实现的基本操作(例如数据的移动、两个数据的加减运算等),每条指令经过汇编后都将转换为用若干位二进制代码表示的机器语言代码,并保存到ROM单元中。机器码与助记符在计算机中,所有信息都必须用二进制数据表示,才能够得到存储、识别和处理。汇编语言中的指令和语句也必须要用二进制形式表示,这些二进制数据称为指令的机器码(MachineCode)。机器码表示的指令很难记忆和使用,为此在汇编语言程序中一般采用有意义的英文单词表示和书写指令,这些英文单词或者其拼接组合和缩写称为指令的助记符(Mnemonic,帮助记忆的符号)。采用助记符形式书写的指令和程序,通过汇编过程即可翻译为机器码,汇编后得到的程序称为目标程序(ObjectProgram,TargetProgram)或机器语言程序(MachineLanguageProgram)。指令和语句的书写格式不管是助记符还是机器码形式的指令,一般都包括操作码和操作数两部分。操作码(OperationCode)用于规定指令所完成的操作,而操作数(Operand)是操作的对象。操作数可能是一个具体的常数数据,也可能是操作数据所在的存储单元地址或标号及各种符号。51单片机的汇编语言程序中,一般来说一条指令构成一条语句。一条完整语句的基本书写格式如下:[标号:]操作码[操作数1][,操作数2][;注释]程序和指令在ROM中的存放格式一个汇编语言程序是由很多语句或指令构成的。在将其汇编为机器代码后,每条指令的机器码分别占用若干字节单元。一般来说第一个字节为操作码,紧跟后面存放的是该指令的操作数。不同指令中的操作数所需占用的ROM单元个数不同。一条指令的操作码和操作数总的字节数(或者占用的ROM单元数)称为指令的长度。在同一个程序中,所有指令都将按照其在程序中书写的位置而连续顺序存放在若干个ROM单元中。所有指令占用的总的单元数,称为该程序的长度,一般表示为多少字节。ORG 0000H

LJMP MAIN

ORG 0100HMAIN:

CLR A

;主程序

ADD A,#10

XRL A,#0FH

INC

A

END程序长度=0106H-0000H=262字节指令长度3字节2字节1字节2.2常数的表示及运算在汇编语言程序中,大量出现各种常数,这些常数在程序中的不同位置分别具有不同的含义。例如,在汇编语言程序中,常数可以是一个存储器单元的地址,也可以是参加运算的数据等。不管表示的含义如何,程序中的常数都可以采用各种进制书写,常用的是二进制、十进制和十六进制。这里对书写时需要注意的问题做一些强调。(1)在汇编语言程序中,二进制和十六进制常数后面必须分别有后缀B和H,如果没有后缀,默认为十进制。同样的数字代码,视为不同的进制数时,表示的大小是各不相同的。例如,若将代码10视为二进制、十六进制和十进制数据,表示的大小分别为十进制的2、16和10。(2)在汇编语言程序中,除非特别声明,数据的位数一般默认指的是该常数用二进制表示时的位数。例如两位十六进制数据25H重新表示为等价的二进制数为00100101B,因此一般称该常数为8位二进制数。(3)如果常数用十六进制形式表示,当其最高位为A~F这6个字母(分别表示十进制的10~15)时,必须在常数前面另外添加一个0,以便与程序中的标号、变量和常量名相区分,但此时添加的0不计位数。例如,0A2H转换为二进制数据为10100010,这是一个8位(二进制)常数或者说字节数据。(4)汇编语言程序中所有的英文字母符号习惯都用大写。在计算机中,所有的信息(十进制数字代码、大小写英文字母、正负号等)都必须用二进制代码的形式进行表示、存储、运算和处理。对于具有大小概念的十进制数据,可以通过“除基取余”的方法将其转换为二进制数,再将二进制数中每4位一组对应转换为一位十六进制。反之,将其他进制转换为十进制,可以采用“按权累加”的方法转换为是十进制数。用这种方法表示十进制数,得到的二进制数称为自然二进制数。为了简化转换方法,在计算机中,还广泛采用其他的编码方法表示数字、数据和各种字符。最常用的就是ASCII码和BCD码。2.2.1ASCII码和BCD码ASCII码在ASCII码中,各种字符都用7位二进制形式表示,因此最多可以表示128个字符。考虑到计算机的内存单元、内部的寄存器和运算器等大都是8位或16位等,一般在7位编码的前面再添加一位二进制0码,从而得到8位的ASCII码编码。0~9:30H~39H;A:41H;a:61H;空格:20H

在程序中,如果需要将某字符的ASCII码作为指令的操作数,可以在操作数位置直接写该字符的ASCII码,也可以将该字符用单引号括起来作为操作数。例如,在指令中的操作数为'A',表示实际的操作数为41H。BCD码及其运算BCD码的全称为二进制编码的十进制数(DinaryDodedDecimal)。这种编码只能用于十进制数的表示,并且规定一位十进制代码0~9依次用4位二进制的编码组合0000B~1001B表示。对多位十进制数,则将各位十进制代码分别用4位编码组合表示,再按各位十进制代码的位序拼接起来即可。例如,十进制数23的BCD码为00100011B。在程序中,为了简化书写,可以将得到的8位二进制形式的BCD码再等价转换为两位十六进制形式,得到23H。由此可见,BCD码本质上是对十进制数的一种二进制编码方法,但在程序中如果写为十六进制,只需要在十进制数后面加上后缀H即可,转换过程中不需要做任何计算,极大地方便了将信息表示为二进制形式的过程。利用BCD码可以将十进制数表示为二进制,之后即可由计算机进行运算处理。但是,对于计算机来说,无法识别送来参与运算的数据采用的是何种编码,都按照自然二进制数的规则进行加减运算,这将导致运算结果不正确。调整例如,用BCD码进行15+28的运算。首先将两个数据用BCD表示为15H=00010101B、28H=00101000B。之后按照普通的二进制规则进行运算,运算过程如下:如果运算结果的低4位超过了1001B,或者低4位有进位,则将结果再加上06H;如果运算结果的高4位超过了1001B,或者高4位有进位,则将结果再加上60H;以上条件都不满足,则不做调整,上述运算得到的结果是正确的BCD码。BCD码运算调整规则有符号数的表示实际系统中处理的数据可能是正数或负数,像这样有正负之分的数(例如温度数据)称为有符号数(SignedNumber),而将没有正负之分的常数(例如学号、成绩)称为无符号数(UnsignedNumber)。对有符号数来说,数的绝对值大小和正负都必须用二进制形式表示,这样的常数称为机器数(MachineNumber)。为了方便,在编写程序时也可以像普通数学一样在数据前面带上正负号,这样表示的有符号数称为真值(TruthValue),汇编过程中真值将被自动转换为机器数。2.2.2有符号数的表示及运算在计算机中,有符号数的机器数默认用补码表示,与之相关的还有原码和反码。在这3种形式的机器数中,都是用最高二进制位表示数的正负,规定0码表示正数、1码表示负数。除了最高位以外,所有低位用来表示数的绝对值大小。3种不同形式机器数的主要区别在于表示有符号数绝对值大小的方法不同。假设机器数总的二进制位数为n,其中最高位用来表示数的正负,剩下的低n-1位表示数的绝对值大小。对于正数,不管是原码、反码还是补码,低n-1位都直接表示数的大小。对于负数的原码、反码和补码来说,低n-1位表示输的绝对值大小的方法有所区别。在负数的原码中,低n-1位直接表示数的大小。例如,-1的8位原码为10000001B,写为十六进制形式为81H。在负数的反码中,低n-1位逐位取反后才表示数的大小。例如,-1的8位反码为11111110B=0FEH。在负数的补码中,低n-1位逐位取反加1后才表示数的大小。例如,-1的8位补码为11111111B=0FFH。MCS-51是8位单片机,直接处理的所有数据都是8位字节数据。当有符号数用这样的8位二进制补码表示时,首先需要区分是正数还是负数。对正数,直接转换为8位二进制,其中最高位D7一定为0;对负数,D7位一定为1,将其绝对值大小再用后面7位取反加1表示。有符号数的运算在计算机中,采用补码表示有符号数的主要目的是为了实现减法运算,其依据是最简单的数学恒等变换,即X=Y-Z=Y+(-Z)根据这一规则将两个数Y和Z的相减运算转换为Y和-Z的加法,其中Y和-Z可能是正数或负数,因此必须用机器数补码表示。在计算机中进行这两个补码的相加运算后,得到的结果也是原结果X的补码。如果需要分析得到结果的真值X,只需要手工将补码再转换为真值即可。2-3=(+2)+(-3)-100-50=(-100)+(-50)多余的进位自然丢失结果视为补码,表示+106结果错误!结果视为补码,表示-1对有符号数的运算,当结果超过了指定位数的补码能够表示的范围时,运算结果将出现错误,这种情况称为溢出(Overflow)。一个无符号字节数据中所有的二进制位都用于表示数的大小,因此能够表示的最小值和最大值分别为0~255共256个不同的整数。由于8位有符号数中的最高位只是用于区分数的正负,表示数据的绝对值大小只用了低7位二进制,因此8位补码能够表示的有符号数的范围为-128~+127,其中最小值-128的8位补码为80H,最大值+127的8位补码为7FH。溢出进位和溢出的区别——进位指的是在两个多位的二进制数进行加法运算时,最高位出现的进位。溢出指的是有符号数(并且一般是补码)运算结果超出范围,而进位可以认为是两个无符号相加运算时结果超出范围。两个数进行加法运算时,有进位不一定会出现溢出,出现溢出时也不一定会有进位。进位-20+32-20+32=+12-128

+12

+127,无溢出,结果正确2.3常用的伪指令将程序中具有特殊含义和专门用途的常数或者表达式的值赋给一个名字,该名字称为符号常量,在程序中用来代表所赋的常数值,所代表的数值在整个程序中保持不变。2.3.1EQU伪指令例:NUM EQU 10;定义符号常量NUM,并赋值为10MOV R6,#NUM;汇编后替换为

MOV R6,#7在程序中,一般在程序的开始将一些特殊的常数定义为符号常量,在后面的程序直接使用。EQU伪指令的操作数也可以是一个表达式。例如,如下伪指令

LEN EQU (10+4)/2在汇编后将被替换为 LEN EQU 7需要注意的是,在程序中用每条EQU伪指令可以分别定义一个符号常量,但各条伪指令定义的符号常量名称不能相同。或者说,一个符号常量的值不能在同一个程序中多次定义。 2.3.2DATA和XDATA伪指令数据地址赋值伪指令,一般用于为指定的内部或外部RAM字节单元定义为一个有意义的名称,称为符号地址。例:BUF

DATA

30H;将30H内部RAM定义为符号地址BUFDPORT XDATA 7FFFH;为外部RAM单元定义符号地址MOV R0,#BUF

MOV R0,#30HMOV R1,BUF

MOV R1,30HMOV DPTR,#DPORT

MOV DPTR,#7FFFH2.3.3BIT伪指令将位于位寻址区或特殊功能寄存器区中的某个位单元命名为一个有意义的名字(位变量)。例如,KDOWN BIT 00H将位地址为00H的位单元(也就是字节单元20H中的D0位)命名为KDOWN,程序中即可用该名称直接寻址和访问该位单元。2.3.4DB和DW伪指令定义若干个8位二进制字节数据或16位二进制数据,并将这些数据依次保存到若干个连续的ROM单元中,这些数据构成一个变量,类似于C语言中的数组。例如,TAB: DB 1,2,3,4定义了变量TAB,其中有4个操作数。注意用DB和DW伪指令定义的变量名后面必须有冒号。如下指令将变量TAB所在ROM单元的地址存入DPTR: MOV DPTR,#TAB注意:EQU、DB、DW和BIT伪指令中的操作数不会占用存储单元,指令本身也不会汇编为机器代码。而DB和DW伪指令中定义的每个操作数都将占用ROM单元。在程序中,可以用ORG伪指令指定DB和DW伪指令中定义的操作数所存放的单元。 ORG 0200HBUF1: DB 1,2,3,4 ORG 0300HBUF2: DB 5 DB 62.451单片机的指令系统

51单片机硬件电路能够实现的功能和基本操作是确定的,所有这些基本操作对应的所有可执行指令的集合,称为51单片机的指令集(InstructionSet),又称为指令系统(InstructionSystem)。51单片机共有111条指令,这些指令一般根据实现的功能和操作分为:数据传送类指令算术运算指令逻辑运算指令控制转移指令位操作指令2.4.1无条件转移指令绝对转移指令LJMP和AJMP都属于绝对转移指令,在指令的操作数中直接给出需要转移的目标指令所在ROM单元的地址。在程序中执行这两条指令时,将目标指令所在ROM单元的地址存入PC,从而控制CPU在执行完转移指令后,立即无条件地跳转到目标指令继续运行。为了便于编写和阅读程序,程序中一般在目标指令语句中定义一个标号,然后将该标号作为LJMP和AJMP指令的操作数。在汇编和程序调入ROM后,标号所在的语句或指令存入ROM单元的位置就确定了,LJMP和AJMP指令中的操作数将被自动替换为标号所在目标指令的地址。两条绝对转移指令的主要区别:LJMP指令的操作数必须是16位二进制数据,可以跳转到ROM的任何位置。AJMP指令的操作数只能有11位有效数据,跳转指令和目标指令所在ROM单元地址的高5位必须相同,因此跳转的最大距离(转移指令和目标指令之间相隔的单元数)最多为211=2K个。例如,ORG 0000H AJMP MAIN ORG 1100HMAIN: …

相对转移指令SJMP指令是短转移指令,又称为相对转移指令。与两条绝对转移指令不同的是,SJMP指令的操作数为有符号字节数据,表示的是SJMP所在的下一个ROM单元与跳转的目标单元之间的相对距离(称为偏移量)。在编写程序时,与LJMP和AJMP指令一样,在SJMP指令的操作数位置直接写跳转目标指令的标号。在汇编时,将自动计算出跳转所需的偏移量。在SJMP指令中,偏移量是用一个字节补码表示的有符号数,其中负数表示向地址较小的ROM单元跳转(向前跳转),正数表示向地址较大的单元跳转(向后跳转)。SJMP指令只能控制向前最多跳转128个单元,向后最多跳转127个单元。例如,假设SJMP指令存放在地址为010AH和010BH的两个ROM单元,下一个单元地址为010CH,如图2-3所示。序中的其他指令。在两个单元中存入的两个数据,其中80H为SJMP指令的操作码,而0F6H为操作数,将其视为补码表示十进制数-10。因此执行完SJMP指令后,CPU将跳转到010CH-10=0102H的ROM单元继续执行程序中的其他指令。在程序中,SJMP指令一个典型的用法是在主程序中执行完所有操作后停机,典型写法为HERE: SJMPHERE或者 SJMP $其中,“$”代表SJMP指令本身,因此执行完SJMP指令后,又将跳转回这条指令继续重复运行。2.4.2MOV指令与寻址方式在单片机中,运算和操作的数据可能保存在存储器的某个单元中,而根据程序的要求,可能需要将其传送或者移动到指定的其他位置。这样的操作通过数据传送指令实现。利用数据传送指令可以将数据在内部或外部RAM单元之间进行传送,也可以从ROM单元中读取所需的数据,或者将一个给定常数保存到指定的单元。这里首先介绍内部RAM单元之间的数据传送,实现这类操作的是MOV指令。MOV指令都是双操作数指令,其中第一个操作数称为目的操作数,第二个操作数称为源操作数,分别用于指定数据搬移的源位置和目标位置。两个操作数都可以分别在内部RAM的工作寄存器组区、位寻址区、一般RAM区和特殊功能寄存器区。位于不同位置的操作数,在指令中给定操作数的方法也不一样。指令获取操作数的方法,或者在指令中给定操作数的方法,称为操作数的寻址方式(Addressing)。目标位置为工作寄存器目的操作数直接给出所用工作寄存器的名称R0~R7,而源操作数可以采用立即寻址、直接寻址,也可以是累加器A。MOV Rn,#data ;源操作数为立即寻址MOV Rn,dir

;源操作数为直接寻址MOV Rn,A

;源操作数为A比较:MOV R7,#30H ;将立即数30H传送到R7MOV R7,30H ;将内部RAM30H单元中的数据传送到R7目标位置为内部RAM单元目的操作数采用直接寻址方式,直接给出目的操作数所在内部RAM单元的8位地址。根据源操作数寻址方式的不同,又有如下几种具体书写格式:MOV dir,#data ;立即寻址MOV dir,dir ;直接寻址MOV dir,A

MOV dir,Rn ;寄存器寻址MOV dir,@Ri ;寄存器间接寻址目标位置为特殊功能寄存器如果操作数在这些特殊功能寄存器中,可以采用直接寻址,即在指令中直接写出这些特殊功能寄存器对应RAM单元的地址,更方便的做法是直接写出寄存器名称。例如,如下两条指令MOV A,P1MOV A,90H是完全等价的,其中90H为特殊功能寄存器P1在内部RAM中的地址,两条指令的源操作数采用的都是直接寻址。在进行特殊功能寄存器访问时,有以下两种特殊情况:(1)当操作数为A时,指令中可以写为A或ACC。当直接用A作为操作数时,该操作数在汇编后的机器码中不会有对应的操作数,因此这种情况不分析其寻址方式。如果写为ACC,采用的是直接寻址。例如,MOV A,#0FFH

;机器码为74H、0FFHMOV ACC,#0FFH ;机器码为0E5H、0E0H和0FFH,直接寻址

(2)当DPTR为目的操作数时,源操作数只能采用立即寻址,并且必须是16位立即数。2.4.3算术和逻辑运算指令PSW中的状态标志位各种算术逻辑运算指令执行后都将影响标志位。进位辅助进位溢出奇偶例如,执行后,

C=1,AC=1,OV=0,P=0。算术运算指令ADD、ADDC、SUBB、MUL、DIV:实现基本的四则运算INC、DEC:递增递减指令,用于构成循环DA:BCD码运算调整(1)指令ADD实现两个字节数据的加法运算,目的操作数只能是累加器A,而源操作数可以采用立即寻址、寄存器寻址、直接寻址和寄存器间接寻址。例如,ADD A,#30H(2)ADDC和SUBB分别实现带进位的加法运算和带借位的减法运算。这两条指令的操作数能够采用的寻址方式与ADD指令完全相同。所谓带进位和借位的加减运算,指的是不仅要将指令中的两个操作数相加减,还要将结果再与当前的C标志位相加减。例如,执行如下指令SUBB A,R0时,如果C=1(是由程序中执行这条SUBB指令前面的指令后设置的),则实现的运算为A-R0-1,再将结果存回A,同时根据运算过程有无借位重新设置C为0或1。如果执行该指令时C=0,则实现的运算为A-R0。(3)MUL和DIV指令实现乘法和除法运算,这两条指令的操作数只能是AB(注意A和B之间没有逗号和空格),分别实现A×B和A÷B的运算。16位乘积的高8位和低8位分别存入B和A,除法运算的商和余数分别存入A和B。例如,如下程序段MOV A,#20MOV B,#15MUL AB ;A=2CH,B=01HDIV AB ;A=2CH,B=00H(4)INC和DEC分别称为递增递减指令。这两条指令都只有一个操作数,每执行一次,分别将指令中的操作数加1或者减1。这两条指令相当于C语言中的“++”和“--”运算符实现的运算。两条指令中的操作数可以采用寄存器寻址、寄存器间接寻址和直接寻址,也可以是为A或者DPTR,但两条指令的操作数都不能采用立即寻址,DEC指令的操作数不能是DPTR。(5)在进行加法和减法运算时,结果可能有进位或借位,多余的进位或借位无法保存,分析时必须直接忽略。

例如,32+(-20)=20H+0ECH=10CH。其中最高位1为进位,将其忽略后得到0CH,将其视为补码表示正确结果为12。(6)ADD、ADDC和SUBB指令执行后要影响所有的4个状态标志位,INC和DEC指令只影响P标志位,MUL和DIV指令只影响C和OV标志。

对于乘法运算,C标志位一定为0。当乘积超过255时,暂存器B中乘积的高8位不为0,此时溢出标志位OV=1;否则OV=0。

除法运算,当B中的除数为0时,C和OV标志被置位,否则C和OV都被复位。(7)如果参加加法运算的操作数为BCD码,为了得到正确的BCD码结果,在执行ADD或ADDC指令之后,必须用DA指令对结果进行调整。DA指令只需要一个操作数,并且必须为累加器A。

指令DA实现的具体操作是:检测该条指令前面执行加法运算指令之后的C和AF标志位是否为1,或者累加器A中运算结果的高4位和低4位是否大于9(用十六进制表示就是高低4位是否为A~F)。如果是,将结果再加上60H或者06H,从而调整得到正确的结果。例如,假设内部RAM中从地址为30H开始的单元中存放有两个16位BCD码(如图2-6所示),分别表示两个十进制数1466和5570。要求将这两BCD码数相加,结果存入34H和35H单元,则可编写如下程序段:

MOV A,30H

ADD A,32H

DA A

MOV 34H,A

MOV A,31H

ADDC A,33H

DA A

MOV 35H,A逻辑运算指令ANL、ORL、XRL:逻辑与、逻辑或、逻辑异或CPLA:取反CLRA:清零三条基本的逻辑运算指令ANL、ORL和XRL都是双操作数指令,目的操作数可以是累加器A或采用直接寻址的内部R

温馨提示

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

评论

0/150

提交评论