wuzhengmin 发表于 2025-11-19 10:42:38

下面举一个例子,看看无符号正数是什么意思?

怎么今天上传的图片很模糊?看不清Debug中的内容?


wuzhengmin 发表于 2025-11-19 11:01:33

加法算出的结果是04,为啥?本来应该是0001 0000 0100溢出啦,只剩下0000 0100啦
看看执行完的结果:


wuzhengmin 发表于 2025-11-19 11:13:32

结果是需要12位数来表示,1个字节再加上4位………… 80251里实际是没有累加器A的,都是用寄存器R11来代替的
我们看看何老师的演示:

wuzhengmin 发表于 2025-11-19 11:15:48

在下图的Debug中何宾老师是可以单步的:
但同样的环境,看我的(第二幅图):
我其实也是按单步执行F11,但是执行的是全速?
就像今天我遇到的第一个问题:上次的图像非常模糊,我马上换了一台计算机
问题就解决了,不过我这个Debug的单步,30天前开始发现,到现在还没解决.........+
现在也是按单步Step(F11)就不能单步:一下就执行了4行:,有时候就全部执行完......


wuzhengmin 发表于 2025-11-19 11:22:45

看看e:的意思
这里这个Memory 1 我们写e:
意思是类型于8051的基本数据区,e:是在MCS-251指令集架构下,原来的基本数据区DATA,
对应到扩展的DATA区域,其实就是原来8051的内部数据区。

wuzhengmin 发表于 2025-11-19 11:25:50

MOV R7,b(0x0009) 是把09存储单元的内容放到R7寄存器里去。09里保存的是5A这个数据,接着做0扩展:MOVZ WR4,R7, WR4是16位,高8位是用0填充。R7本身是8位的。下面2行同理。
特别注意这里:

wuzhengmin 发表于 2025-11-19 11:27:08

这里用的16位相加指令ADD:ADD WR6,WR4,结果保存在WR6寄存器里

wuzhengmin 发表于 2025-11-19 11:28:06

WR6确实保存了270(16进制就是0x0104),但是我声明的C的无符号正整数,只有8位,只和R7对应,就只把R7的内容付给0x000A ,c就只能是04 ……只能溢出了,那就会查进位cy,可是cy又=0,你不懂汇编就蒙啦。就是说你不学汇编,无符号数怎么表示,其实你不知道…….
如果在8位机,就在产生一个进位标志CY:

wuzhengmin 发表于 2025-11-19 11:29:41

但是现在进位标志cy=0, 你是不是有点蒙?

?????

wuzhengmin 发表于 2025-11-19 11:30:40

原因在这里:

我们现在是32位机,WR6 是正确的,不会有进位,CY是0
页: 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27
查看完整版本: 跟着何宾老师学习STC32位8051单片机原理及应用-STC32G12K128