|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 汇编论坛 』
→ 变量不管用
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
4816
人关注过本帖
标题:
变量不管用
只看楼主
加入收藏
nooomoon
等 级:
新手上路
帖 子:13
专家分:5
注 册:2015-9-2
结帖率:
0
楼主
收藏
已结贴
√
问题点数:20 回复次数:15
变量不管用
我是一个初学者。打算从最简单的功能学起。按书上的程序输入,然后调试。
发现定义的变量没有用。变量相应地址的数据不是程序中的。
网上查了一下。原来在程序运行之后,还要有代码要定义数据段什么的。可能要初始化。
这些代码要怎么写。都是什么原理。有人懂吗?可能一般人不懂。用INCLUE一些库还是什么也可以解决。
我想知道在程序代码运行之前的那些初始化数据的汇编代码。也不知在程序代码运行之前还有无什么其它的隐藏的事情要做。请教。多谢!
搜索更多相关主题的帖子:
网上
2015-09-02 11:53
举报帖子
使用道具
赠送鲜花
zklhp
来 自:china
等 级:
贵宾
威 望:
254
帖 子:11485
专家分:33241
注 册:2007-7-10
第
2
楼
收藏
得分:5
我的问题是:你的书是哪本 你有没有书上说的环境 或者你有没有按照书上说的去做
如果你的书上没有明确说到底应该怎么做 我感觉可以换一本讲的更清楚的书
至于你后面「网上查」的东西可能就南辕北辙了 因为网上的资料很可能不是针对你的书的
祝你学习愉快
2015-09-02 12:02
举报帖子
使用道具
赠送鲜花
nooomoon
等 级:
新手上路
帖 子:13
专家分:5
注 册:2015-9-2
第
3
楼
收藏
得分:0
就是Irvine写的Inter汇编程序设计。里面最开始的代码。我把INCLUDE Irvine16.inc一行去掉了。
因为不懂怎么Link这些库。然后。程序调试的时候。定义的变量就不管用。其余的代码还是可以正常工作。
2015-09-02 12:07
举报帖子
使用道具
赠送鲜花
wp231957
来 自:神界
等 级:
贵宾
威 望:
423
帖 子:13688
专家分:53332
注 册:2012-10-18
第
4
楼
收藏
得分:5
完全不懂你在说什么
DO IT YOURSELF !
2015-09-02 14:02
举报帖子
使用道具
赠送鲜花
nooomoon
等 级:
新手上路
帖 子:13
专家分:5
注 册:2015-9-2
第
5
楼
收藏
得分:0
原来程序是
INCLUDE Irvine32.inc
.data
val1 DWORD 10000h
.code
main PROC
mov eax,val1
exit
main ENDP
END main
我把INCLUDE Irvine32.inc去掉了。DEBUG发现val1的值没有到eax寄存器。从译编的结果来看,val1的地址已经有了。但是那个内存地址的值不是10000h。可能是要有一段什么代码。把数据段的值放到那个内存地址。那段代码是啥?希望有人能解答。谢谢。
2015-09-02 15:35
举报帖子
使用道具
赠送鲜花
hu9jj
来 自:红土地
等 级:
贵宾
威 望:
400
帖 子:11857
专家分:43421
注 册:2006-5-13
第
6
楼
收藏
得分:5
原来句号可以这样用,开眼界了。
活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-09-02 20:27
举报帖子
使用道具
赠送鲜花
hu9jj
来 自:红土地
等 级:
贵宾
威 望:
400
帖 子:11857
专家分:43421
注 册:2006-5-13
第
7
楼
收藏
得分:0
以下是引用
nooomoon
在2015-9-2 11:53:25的发言:
我是一个初学者。打算从最简单的功能学起。按书上的程序输入,然后调试。
发现定义的变量没有用。变量相应地址的数据不是程序中的。
网上查了一下。原来在程序运行之后,还要有代码要定义数据段什么的。可能要初始化。
这些代码要怎么写。都是什么原理。有人懂吗?可能一般人不懂。用INCLUE一些库还是什么也可以解决。
我想知道在程序代码运行之前的那些初始化数据的汇编代码。也不知在程序代码运行之前还有无什么其它的隐藏的事情要做。请教。多谢!
除了两个逗号、一个问号和一个感叹号外,其他全是句号。
活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2015-09-02 20:29
举报帖子
使用道具
赠送鲜花
nooomoon
等 级:
新手上路
帖 子:13
专家分:5
注 册:2015-9-2
第
8
楼
收藏
得分:0
以下是引用
hu9jj
在2015-9-2 20:29:04的发言:
除了两个逗号、一个问号和一个感叹号外,其他全是句号。
此回复奇也怪哉。余所问者 代码事耳 尔所见者 符号事矣
余所用标点符号,乃中文古法。现代标点源自西夷。古文未有标点。有注释者。以朱笔圈点断句。以便阅读。
又因白话文故,之乎者也矣焉哉不用。以夷之感叹号、问号代之。故有此标点之法。以便阅读。
读之者,不以文害辞,不以辞害意。可知吾文之所指。当不以此标点为怪。吾未尝见有以吾标点为异者。
今尔以为怪。故告之来去始末。有不妥之处,望予以指正。为谢。
2015-09-03 09:53
举报帖子
使用道具
赠送鲜花
nooomoon
等 级:
新手上路
帖 子:13
专家分:5
注 册:2015-9-2
第
9
楼
收藏
得分:0
以下是引用
zklhp
在2015-9-2 12:02:13的发言:
我的问题是:你的书是哪本 你有没有书上说的环境 或者你有没有按照书上说的去做
如果你的书上没有明确说到底应该怎么做 我感觉可以换一本讲的更清楚的书
至于你后面「网上查」的东西可能就南辕北辙了 因为网上的资料很可能不是针对你的书的
祝你学习愉快
君之指教,于吾有助也。深以为谢。在下读书太快。捡书中代码以试。不能。见君之回复。细查吾书。知书中已有其法矣。
加此二句即可
mov ax,@data
mov ds,ax
程序运行之无误。
余调试之时,见其第一句mov程序之数据段地址入ax。深以为怪。此程序者,固有文件之代码。彼数据地址者,因机器因时而常变。
固有文件焉知?余思之。必操作系统改此第一句。又以hex编码查二进制执行文件。代码段机器码第一字节为b8。移一固有16位数进ax。
而执行之时,操作系统取此一指令,改操作数为数据段内存地址,写入内存中之代码段。操作系统如何运用此一句。又如何改之。余不知矣。望有知之者告之。为谢
2015-09-03 10:07
举报帖子
使用道具
赠送鲜花
wmf2014
等 级:
贵宾
威 望:
216
帖 子:2039
专家分:11273
注 册:2014-12-6
第
10
楼
收藏
得分:5
回复 9楼 nooomoon
不是操作系统取此指令,是cpu取此指令。“mov ax,@data”是汇编码,意思是取变量data所在内存区域的段地址到ax寄存器中。汇编代码需要经过编译后成为机器码才能供cpu执行,至于data所在的段地址是多少,需要exe文件重定位后确定。exe文件头会在系统加载后从系统获取一个起始段地址,以这个段地址为基础,定位所有需要浮动的地址(包括跳转、栈等),com类型文件不需要此句。加入编译后的文件加载后数据段地址为1000H,则对应的机器码为"B8 00 10",其中B8为指令,“00 10”为该指令所需要的数据,cpu从内存中取得b8指令后,就会自动从指令后内存中再取两个字节数据,然后把这两个字节数据送到寄存器ax中,这条指令就执行完毕。大概如此了,如果你学过数字脉冲电路,你就比较好理解这个操作过程在电路上是如何操作的,无非是计数器、寄存器、译码器等电路按时序工作而已。
能编个毛线衣吗?
2015-09-03 11:03
举报帖子
使用道具
赠送鲜花
16
1/2页
1
2
快速回复:
变量不管用
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.023260 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved