前言

前面已经说过了位、字节、字,这一集说一下双字

一、基本定义1. 双字 (DWord)

双字:是英文字母Double Word,简写DW

换算:1个双字DWord=2个字(Word)=4个字节(Byte)= 32个位(32Bit)

在Q输出区:没有32个位的通道,就不拿Q区举例,我们以M区举例

2.标识规则:区域+D+字编号

MD0: 就是代表M区的0号双字地址

M:代表M区

D:字母D是双字的意思,Double的首字母

0:编号是0的双字

MD0 就是M中间区的 0 号双字地址( 包含M0.0~M0.7和M1.0~1.7和M2.0~M2.7和M3.0~3.7 ),共含 32个位

打开网易新闻 查看精彩图片

类比:

V区: VD0 双字

打开网易新闻 查看精彩图片

VD4 双字

打开网易新闻 查看精彩图片

重点注意:

双字编号步距是4 ,VD0、VD4、VD8、VD12、VD16这样标记的,跟字/字节不一样

二、程序实操1.场景要求:

如果我们想让M区M0.0、M0.1、M0.2 、M0.3 、M0.4、M0.5、M06、M07、M1.0、M1.1、M1.2 、M1.3 、M1.4、M1.5、M1.6、M1.7,

M2.0、M2.1、M2.2 、M2.3 、M2.4、M2.5、M2.6、M2.7、

M3.0、M3.1、M3.2 、M3.3 、M3.4、M3.5、M3.6、M3.7这 32个位值都是1 ,该如何实现?

如果用前面的知识,可以置位32个位连续是1,也可以用MOV_B传送字节,MOV_W传送字,

2.置位指令实现

打开网易新闻 查看精彩图片
3.字节传送指令实现
打开网易新闻 查看精彩图片

MB0=255,即2#=11111111(8个1),即M0.0-M0.7这8个位都是1

MB1=255,即2#=11111111(8个1),即M1.0-M1.7这8个位都是1

MB2=255,即2#=11111111(8个1),即M2.0-M2.7这8个位都是1

MB3=255,即2#=11111111(8个1),即M3.0-M3.7这8个位都是1

打开网易新闻 查看精彩图片

MB0=255,即2#=11111111(8个1),即M0.0-M0.7这8个位都是1

MB1=255,即2#=11111111(8个1),即M1.0-M1.7这8个位都是1

MB2=255,即2#=11111111(8个1),即M2.0-M2.7这8个位都是1

MB3=255,即2#=11111111(8个1),即M3.0-M3.7这8个位都是1

MW0=65535,即2#=1111111111111111(16个1),即M0.0-M0.7和M1.0-M1.7这16个位都是1

MW2=65535,即2#=1111111111111111(16个1),即M2.0-M2.7和M3.0-M3.7这16个位都是1

打开网易新闻 查看精彩图片
4.双字传送指令实现
打开网易新闻 查看精彩图片

如果我们用双字传送指令,是如何呢?可以用 MOV_DW 指令, 双字传送 ,直接用一行指令实现

MB0=255,即2#=11111111(8个1),即M0.0-M0.7这8个位都是1

MB1=255,即2#=11111111(8个1),即M1.0-M1.7这8个位都是1

MB2=255,即2#=11111111(8个1),即M2.0-M2.7这8个位都是1

MB3=255,即2#=11111111(8个1),即M3.0-M3.7这8个位都是1

MW0=65535,即2#=1111111111111111(16个1),即M0.0-M0.7和M1.0-M1.7这16个位都是1

MW2=65535,即2#=1111111111111111(16个1),即M2.0-M2.7和M3.0-M3.7这16个位都是1

三、比喻总结容器比喻
打开网易新闻 查看精彩图片
三、比喻总结容器比喻

1.我们以硬币举例,把位,字节,字,双字可以理解成一个容器

打开网易新闻 查看精彩图片

3.如果我们再按顺序编号,如下图

打开网易新闻 查看精彩图片

4.它里面存储的结果, 只有0或1 ,可以把硬币的字面定义成 1 ,国徽面定义成 0 理解

打开网易新闻 查看精彩图片

通过上述图例,这时我们就能大概明白了双字、字、位与二进制的关系,没理解也没关系,后续再通过实例讲解,就能明白了,希望本文对你有所帮助。