论坛风格切换切换到宽版
  • 2798阅读
  • 9回复

一个EIL的编译错误 [复制链接]

上一主题 下一主题
离线代洪波
 
发帖
4809
只看楼主 倒序阅读 0楼 发表于: 2008-06-12
mov a,#11h
da a
jmp $
上面的程序调试以后,a 中的值是多少?我的版本6.12调试以后a中还是11h
离线BG4UVR
发帖
11288
只看该作者 1楼 发表于: 2008-06-12
asm需要“编译”么?不需要么?需要么?不需要么?研究一下而已,何必认真。。 需要么?
离线BG4UVR
发帖
11288
只看该作者 2楼 发表于: 2008-06-12
编译器,是将便于人编写,阅读,维护的高级计算机语言翻译为计算机能识别,运行的低级机器语言的程序。编译器将源程序(source program)作为输入,翻译产生使用目标语言(target language)的等价程序。源程序一般为高级语言(high-level language),如pascal,c++等,而目标语言则是汇编语言或目标机器的目标代码(object code),有时也称作机器代码(machine code)。
一个现代编译器的主要工作流程如下:
源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,linker)→可执行程序(executables])


http://zhidao.baidu.com/question/2196423.html?fr=qrl3
离线BG4UVR
发帖
11288
只看该作者 3楼 发表于: 2008-06-12
所以,我觉得即使你已经通过某种方法知道最后时刻,a中的内容为#11h,这也不能称为是编译器错误,因为整个汇编的过程并没有用到编译器,keil完成的只是把你的汇编代码直接转换成目标代码。
而我觉得,更可能是其他的语句影响了a值,要么就是这片芯片坏了。。


这段不要看了,有错误,哈哈……
离线xcf93
发帖
1330
只看该作者 4楼 发表于: 2008-06-12
楼上的,说那么玄幻干嘛,你直接告诉人家 a 中的值应该是11h不就得了嘛。
离线BG4UVR
发帖
11288
只看该作者 5楼 发表于: 2008-06-12
噢,楼上的,我搞错了。我不知道da是啥指令,还以为a中的值应该不是11呢,哈哈……
离线szcharle
发帖
13335
只看该作者 6楼 发表于: 2008-06-12
jmp $
不好意思 我一直以为 keil不支持$的?
离线汤圆
发帖
1157
只看该作者 7楼 发表于: 2008-06-12
原地踏步 死循环
离线代洪波
发帖
4809
只看该作者 8楼 发表于: 2008-06-16
是我表达错误,是程序在调试以后a的值还是11h
离线BG4UVR
发帖
11288
只看该作者 9楼 发表于: 2008-06-16
[quote=代洪波]是我表达错误,是程序在调试以后a的值还是11h[/quote]

前几天搜索了一下da指令的说明,是这样的:

使用格式:     da   a   单周期指令,机器码为0d4h.十进制调整;
当a_bit3----abit0>9 或者ac=1 时,低4位加6既a_bit3----abit0+6;
当a_bit7----abit4>9 或者c=1 时,高4位加6既a_bit7----abit4+6;


所以现在a值还是11h,是正常的吧?