前言
前面已经说过了位、字节、字,这一集说一下双字
一、基本定义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
4.字传送指令实现![]()
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 理解
![]()
通过上述图例,这时我们就能大概明白了双字、字、位与二进制的关系,没理解也没关系,后续再通过实例讲解,就能明白了,希望本文对你有所帮助。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.