52
170
1995
金牌会员
无实物,用keil软件仿真为8051U编写的一个程序,想给一个双字类型的变量赋值,写出了不理解的代码,如下:
; 定义双字变量
DWDBGV: DSD 1D
不理解的语句:
MOV BYTE0 DWDBGV, A
MOV BYTE3 DWDBGV, A
build之后,没有任何错误。
我们知道,8051U用的是大端存储模式,按说第二行代码,应该是给双字变量的高字节地址赋值,然而,仿真时却给低字节地址赋值,这是怎么回事?
另外,第二、三行真有这种写法吗?它是什么意思呀,我也没明白。
使用道具 举报 送花
54
1323
5499
荣誉版主
17
474
1475
LAO*** 发表于 2024-12-19 08:08 1. 我们知道,BYTE0 是指最低字节地址赋值,仿真时给低字节地址赋值,这完全正确!!! 2. BYTE0 是指最低字 ...
bkeu*** 发表于 2024-12-19 08:27 rt
BeHa*** 发表于 2024-12-19 09:32 我只知道常量可以这样操作,没见过有谁对内存地址这样操作
bkeu*** 发表于 2024-12-19 09:47 可以的,常量加#,直接地址不加
就下面这样一段程序,改不掉寄存器B的值
DSEG AT 30H COLOR: DSW 1
MOV WR14, #11FFH MOV COLOR, WR14 MOV WR30, COLOR MOV B, BYTE0 COLOR MOV A, BYTE1 COLOR
验证了,操作符BYTE0有作用,BYTE1没有作用。不知道你们是不是在信口开河。
本版积分规则 发表回复 回帖后跳转到最后一页
|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )
GMT+8, 2025-8-1 06:58 , Processed in 0.135947 second(s), 107 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.