C51单片机汇编语言程序设计
一、二进制数与十六进制数之间的转换1、数的表达方法
为了方便编程时书写,规定在数字后面加一个字母来区别,二进制数后加B十六进制数后加H。2、二进制数与十六进制数对应表二进制十六进二进制制000000010010001101000101011001110123456710001001101010111100110111101111十六进制89ABCDEF3、二进制数转换为十六进制数
转换方法为:从右向左每4位二进制数转化为1位十六进制数,不足4位部分用0补齐。
例:将(1010000110110001111)2转化为十六进制数解:把1010000110110001111从右向左每4位分为1组,再
写出对应的十六进制数即可。0101000011011000111150D8F
答案:(1010000110110001111)2=(50D8F)16例:将1001101B转化为十六进制数
解:把10011110B从右向左每4位分为1组,再写出对应的十六进制数即可。100111109E
答案:10011110B=9EH4、十六进制数转换为二进制数
转换方法为:将每1位十六进制数转换为4位二进制数。例:将(8A)16转化为二进制数
解:将每位十六进制数写成4位二进制数即可。8A10001010
答案:(8A)16=(10001010)2例:将6BH转化为二进制数
解:将每位十六进制数写成4位二进制数即可。6B01101011
答案:6BH=01101011B
二、计算机中常用的基本术语1、位(bit)
计算机中最小的数据单位。由于计算机采用二进制数,所以1位二进制数称作1bit,例如110110B为6bit。2、字节(Byte,简写为B)
8位的二进制数称为一个字节,1B=8bit3、字(Word)和字长
两个字节构成一个字,2B=1Word。
字长是指单片机一次能处理的二进制数的位数。如AT89S51是8位机,就是指它的字长是8位,每次参与运算的二进制数的位数为8位。
8位可以表示256个状态,每位二进制有0和1两种状态,8位就是2的8次方个状态。这256个状态可以表示0~255这256个无符号整数,也可以表示-128到+127这256个有符号整数,还可以表示小数等,这些表示方法叫做数据类型。8位机能表达数的范围是0~255,这意味着参与运算的各个数据不能超过255,并且运算结果和中间结果也不能超过255,否则就会出错。在实际问题中往往有超过255的情况,比如用到1000这个数,这时就需要用两个字节组合起来表示这样的数。16位机能表达数的范围是0~65535。三、寄储器
51单片机的寄存器分为工作寄存器和特殊功能寄存器两大
类。工作寄存器在内部RAM的00H~1FH地址区,共有32个。特殊功能寄存器在内部RAM的80H~0FFH地址区,51单片机共有21个,52单片机共有26个。
特殊功能寄存器主要有累加器A,寄存器B,程序状态字PSW,P0~P3I/O口寄存器,定时/计数器及串行通信控制、中断控制等特殊功能寄存器。1、工作寄存器(R0~R7)汇编语言结束指令
工作寄存器是一个8位寄存器,分为4组(0~3组),每组8个,共有32个,每组的8个寄存器都用R0~R7表示。工作寄存器是以组为单位来使用的,任何时刻只有一组有效。可用PSW寄存器中的RS0、RS1两位来设置当前要使用的工作寄存器组。2、累加器A
累加器A是一个8位寄存器,它和算术逻辑部件ALU一起完成各种算术逻辑运算,既可以存放运算前的原始数据,又可以存放运算的结果。3、寄存器B
寄存器B是一个8位寄存器,用于乘除法运算。4、程序状态字(PSW)寄存器
程序状态字PSW(也称为标志寄存器)是一个重要的8位寄存器,用来保存指令执行结果供程序查询和判别。四、寻址方式
单片机工作时,在程序指令的控制下,要对数据进行各种操作,所以必须要先到操作的数据。数据存放在存储器中,只有到要操作数据的存储地址,才能对该存储地址中的数据进行操作。
寻要操作数据的存储地址的过程称为寻址。单片机常用寻址的方式有七种:立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。1、立即寻址
立即寻址是在指令的操作码后直接给出要操作的数据(不是数据的存放地址),这个数据称为立即数,为了表明该数值是一个数据而不是地址,要在该数值前加个“#”号。例如:MOVA,#0FFH;将数据0FFH(11111111B)送到累加器A中。
MOVA,#6BH;将数据6BH(01101011B)送到累加器A中。2、直接寻址
直接寻址是在指令的操作码后给出数据的存放地址,指令可以操作该地址存放的数据。例如:MOVA,58H
该指令的含义是:将58H单元中的数据送到累加器A中。如果58H单元中的数据为11010101,执行该指令后,58H单元中的数据会送到累加器A中,累加器A中的数据也为
11010101,累加器A中之前存放的数据被冲掉。
直接寻址方式可以访问存储器的30H~7FH单元(数据缓冲区)、位地址单元和特殊功能寄存器(SFR),而且特殊功能寄存器只能用直接寻址方式访问。3、寄存器寻址
寄存器寻址是在指令的操作码后给出寄存器,指令可以操作寄存器中的数据。例如:MOVA,R7
该指令的含义是:将寄存器R7中的数据送到累加器A中。如果寄存器R7中的数据为11010101,执行该指令后,R7中的数据会送到累加器A中,累加器A中的数据也为11010101,累加器A中之前存放的数据被冲掉。五、汇编语言的指令系统汇编语言的指令格式如下:
[标号:]操作码(空格)[操作数1][,操作数2][,操作数3][;注释]
例:下面是一条汇编语言的指令:
MAIN:MOVP3,#0FFH;将数据11111111送到P3口标号:用来标注指令的地址,一般由1~8个字母和数字组合而成,但必须以字母开头,以冒号“:”结束。上面的汇编语言指令中,标号是“MAIN:”。
操作码:用来规定指令的操作功能,一般由2~5个字母(英
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论