找回密码
 立即注册
查看: 470|回复: 13

操作符byte0作用到32-bit变量,起着什么作用

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:180
  • 最近打卡:2025-05-09 18:55:07

44

主题

125

回帖

1481

积分

金牌会员

积分
1481
发表于 2024-12-19 04:15:52 | 显示全部楼层 |阅读模式

问题描述

无实物,用keil软件仿真为8051U编写的一个程序,想给一个双字类型的变量赋值,写出了不理解的代码,如下:

; 定义双字变量

DWDBGV: DSD 1D

不理解的语句:

MOV BYTE0 DWDBGV, A

MOV BYTE3 DWDBGV, A

build之后,没有任何错误。

具体问题

  1. 我们知道,8051U用的是大端存储模式,按说第二行代码,应该是给双字变量的高字节地址赋值,然而,仿真时却给低字节地址赋值,这是怎么回事?

  2. 另外,第二、三行真有这种写法吗?它是什么意思呀,我也没明白。

回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

积分
5395
发表于 2024-12-19 08:08:59 | 显示全部楼层
1.  我们知道,BYTE0 是指最低字节地址赋值,仿真时给低字节地址赋值,这完全正确!!!
2.  BYTE0 是指最低字节地址赋值, 依次向高位地址赋值是 BYTE1,  BYTE2, 最高位 是 BYTE4 , 共 4字节组成一个 long (大端存储模式).
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-05-09 08:19:05
已绑定手机

17

主题

446

回帖

1189

积分

金牌会员

积分
1189
发表于 2024-12-19 08:27:27 | 显示全部楼层
rt
截图202412190827186874.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-05-09 08:19:05
已绑定手机

17

主题

446

回帖

1189

积分

金牌会员

积分
1189
发表于 2024-12-19 08:28:16 | 显示全部楼层
汇编随便整,编译器不知道
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:180
  • 最近打卡:2025-05-09 18:55:07

44

主题

125

回帖

1481

积分

金牌会员

积分
1481
发表于 2024-12-19 09:15:35 | 显示全部楼层
LAO*** 发表于 2024-12-19 08:08
1.  我们知道,BYTE0 是指最低字节地址赋值,仿真时给低字节地址赋值,这完全正确!!!
2.  BYTE0 是指最低字 ...

可是第三行就不起作用了,调试时不会给在对应地址的内存赋值了,只有第二行会修改内存的内容
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:180
  • 最近打卡:2025-05-09 18:55:07

44

主题

125

回帖

1481

积分

金牌会员

积分
1481
发表于 2024-12-19 09:32:13 | 显示全部楼层

我只知道常量可以这样操作,没见过有谁对内存地址这样操作
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:42
  • 最近打卡:2025-05-09 08:19:05
已绑定手机

17

主题

446

回帖

1189

积分

金牌会员

积分
1189
发表于 2024-12-19 09:47:02 | 显示全部楼层
BeHa*** 发表于 2024-12-19 09:32
我只知道常量可以这样操作,没见过有谁对内存地址这样操作

可以的,常量加#,直接地址不加
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:180
  • 最近打卡:2025-05-09 18:55:07

44

主题

125

回帖

1481

积分

金牌会员

积分
1481
发表于 2024-12-19 09:59:09 | 显示全部楼层
bkeu*** 发表于 2024-12-19 09:47
可以的,常量加#,直接地址不加

好的,感谢,又学习了 :-)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:180
  • 最近打卡:2025-05-09 18:55:07

44

主题

125

回帖

1481

积分

金牌会员

积分
1481
发表于 2024-12-26 15:06:08 | 显示全部楼层
[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=132016&ptid=12980][color=#999999]bkeuqoaq 发表于 2024-12-19 09:47[/color][/url][/size] 可以的,常量加#,直接地址不加[/quote]

不对

就下面这样一段程序,改不掉寄存器B的值

DSEG AT 30H
COLOR: DSW 1

MOV WR14, #11FFH
MOV COLOR, WR14
MOV WR30, COLOR
MOV B, BYTE0 COLOR
MOV A, BYTE1 COLOR

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:180
  • 最近打卡:2025-05-09 18:55:07

44

主题

125

回帖

1481

积分

金牌会员

积分
1481
发表于 2024-12-26 15:07:29 | 显示全部楼层

验证了,操作符BYTE0有作用,BYTE1没有作用。不知道你们是不是在信口开河。

回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-9 22:25 , Processed in 0.154879 second(s), 117 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表