C51单片机汇编语言程序设计
- 格式:docx
- 大小:41.39 KB
- 文档页数:10
C51单片机汇编语言程序设计
一、二进制数与十六进制数之间的转换1、数的表达方法
为了方便编程时书写,规定在数字后面加一个字母来区别,二进制数
后加B十六进制数后加H。2、二进制数与十六进制数对应表二进制十六
进二进制制0000000100100011010001010110011101234567100010011010101111001101 11101111十六进制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][;注释]
例:下面是一条汇编语言的指令: