您的位置 首页 > 科技

汇编语言指令详解大全 51单片机汇编语言:位操作指令有哪些?

汇编语言指令详解大全

汇编语言指令详解大全 51单片机汇编语言:位操作指令有哪些?

51单片机汇编语言:位操作指令有哪些?

51单片机汇编语言:位操作指令有哪些?

数据位传送指令

MOV C, bit ;bit 可直接寻址位 C←(bit)

MOV bit,C ;C 进位位 (bit) ← C

位变量修改指令

CLR C 将C=0

CLR bit

CPL C 将C求反再存入C

CPL bit 将bit求反再存入bit

SETB C 将C=1

SETB bit ; (bit) ← 1

位变量逻辑指令

ANL C, bit ANL C, bit ORL C, bit ORL C, bit

汇编指令and、or什么意思?

1)and指令:逻辑与指令,按位进行与运算。moval,01100011Bandal,00111011B执行之后:al=00100011B通过该指令可将操作对象的相应位设为0,其他位保持不变。2)or指令:逻辑或指令,按位进行或运算。moval,01100011Boral,00111011B执行之后:al=01111011B通过该指令可将操作对象的相应位设为1,其他位保持不变

汇编语言loop指令?

LOOP指令:

loop指令是汇编语言中的一个循环指令。是根据寄存器CX中的值来进行的,每次运行到LOOP,先将CX中的值减一,如果不为0,就运行后面标号中的内容。

类似于这样,这个中间的代码会运行12次。

我们在记事本中编写一个汇编程序:

然后用masm对它编译,创建一个目标文件,再用link连接那个目标文件,生成一个可执行文件。再用debug来加载那个可执行文件。

我们可以看到,一直到076A:0013都是我们的程序。CX中也储存了我们程序的长度:15个字节。还可以看到一些基础数据,CS:IP指向我们程序的入口。此时LOOP后面的值表示一个地址,当运行到这时,只要CX减一的值不等于0,它就将那后面的值设为IP中的值。然后再执行,CPU就会再执行我们标号后面的内容。

一直按照我们编写的进行着。完成对寄存器的基础配置后,就开始运行loop中的内容:

我们可以看到 IP 中的值一直在两个值中变化。CX中的值也在一直减少。

但是,这个循环有100多次,也就是说我们要摁100多次T才能把循环执行完。这时debug提供两个指令解决这个问题。

g 偏移地址 这个命令会让CPU自动执行到我们指定的那个地方,段地址在DS中。

p 这个命令会自动执行完循环,执行完后CX中的值等于0

然后结束

我们写的类似于,mov ax,[0],mov ax,[1] 之类的在debug中可能会正确执行,但是如果我们是写在源程序中,然后用MASM编译的话,最后用debug运行的话,可能在内存中会把后面的[0] ,当成0来处理。所以我们最好用这两种形式:

1.先把地址的值送入一个寄存器,再用这种 方法把那个地址中的值送进我们指定的寄存器。

2.

在偏移地址前面加上寄存器作为段地址(不一定要段寄存器),像这样,在这种操作中用于显示地指明地址的段地址的符号,像:DS: AX: CS: ....这样的,我们称为段前缀。

不能直接将一段内存中的数据累加到一个十六位的寄存器中,因为一段内存中,每个内存单元都是八位的,而寄存器是16位的。也就是说不能这样: MOV AX,[0] 这样会出错。如果要加的话,我们可以这样:

相关文章