yzhkpli 发表于 2025-1-20 13:31:59

keilC debug时候貌似变量的位置不大对

keilc251.
project使用的stc89c52RC

main.c内容

#include "STC89C5xRC.h"
void main(void){
    char a='a',b='H';
    unsigned char c=250;
   
    signed char d=120;
}


注意到,memory看到的十六进制数字和debug窗口显示的机器码确实对应上了。
但是跟汇编的语义不一样啊。
mov 0x08,#0x61 是吧61赋予08位置,明显61不在08H处。
46也不在09H处。
78倒是凑巧在0B处了。

求问为啥不一致呢?

yzhkpli 发表于 2025-1-20 13:36:11

似乎是address框内应该填写:d:0x08
然后单步执行就可以看到正确的三个变量的值了
求问d:0x08和输入&a分别显示哪里(哪个区域)的内容?

Ayb_ice 发表于 2025-1-20 13:46:30

C:表示代码空间

yzhkpli 发表于 2025-1-20 15:49:14

Ayb_ice 发表于 2025-1-20 13:46
C:表示代码空间

谢谢。貌似&a表示查看内存空间,也就是ram的内容。
而d:0x08表示查看的是rom的内容?

Ayb_ice 发表于 2025-1-20 16:00:13

yzhkpli 发表于 2025-1-20 15:49
谢谢。貌似&a表示查看内存空间,也就是ram的内容。
而d:0x08表示查看的是rom的内容? ...

d:0x08就是data空间

yzhkpli 发表于 2025-1-20 16:53:40

Ayb_ice 发表于 2025-1-20 16:00
d:0x08就是data空间

好吧。还是不大懂。。。。

Ayb_ice 发表于 2025-1-20 16:55:32

yzhkpli 发表于 2025-1-20 16:53
好吧。还是不大懂。。。。

d代表data,c代表code,x代表xram,后面是开始地址

yzhkpli 发表于 2025-1-20 17:03:16

Ayb_ice 发表于 2025-1-20 16:55
d代表data,c代表code,x代表xram,后面是开始地址

求问 d:0x08和输入&a为啥显示的不一样?

Ayb_ice 发表于 2025-1-20 17:22:43

yzhkpli 发表于 2025-1-20 17:03
求问 d:0x08和输入&a为啥显示的不一样?

我不知道输入&a表示什么
页: [1]
查看完整版本: keilC debug时候貌似变量的位置不大对