| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3027 人关注过本帖
标题:一道面试题
只看楼主 加入收藏
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 

在这里我都不晓得怎么说拉
我也不晓得你是好久学的汇编
一个程序的确是可以不用堆栈 数据和附加段的

code segment
assume cs:code
start:
mov al,1
mov bl,2
add al,bl
mov ah,2
mov dl,al
int 21h
code ends
end start
你运行一哈
看能不能运行
这个内存单元是电脑自动分配的
这句话也的确是对的
你问我电脑从哪里分配 当然也就是重内存里分配拉
这一部分是由cpu来完成


   好好活着,因为我们会死很久!!!
2007-09-03 20:09
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
以下是引用爱以走远在2007-9-3 20:09:53的发言:

在这里我都不晓得怎么说拉
我也不晓得你是好久学的汇编
一个程序的确是可以不用堆栈 数据和附加段的

code segment
assume cs:code
start:
mov al,1
mov bl,2
add al,bl
mov ah,2
mov dl,al
int 21h
code ends
end start
你运行一哈
看能不能运行
这个内存单元是电脑自动分配的
这句话也的确是对的
你问我电脑从哪里分配 当然也就是重内存里分配拉
这一部分是由cpu来完成

我的问题是想让你解释下这个内存在哪里,也就是那一块内存,我知道这个程序可以运行,但是你程序里面没有分配内存(我没有看出来,你给我指一下吧),其中1,2都是立即数,从这个立即数编译以后会放到数据段中(这里也就是代码段),即所有执行代码的后面,运行时,程序从代码段取立即数,通过ALU直通门给寄存器。


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2007-09-03 20:16
taojingwen
Rank: 1
等 级:新手上路
帖 子:53
专家分:0
注 册:2007-5-5
收藏
得分:0 
大哥啊。到底是多少?

I Believe I Can Fly
2007-09-03 20:19
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
以下是引用taojingwen在2007-9-3 20:19:07的发言:
大哥啊。到底是多少?

综合下前面讨论的问题,因该有两个答案0和不可预料的值。


打住,我们好像跑题了,留着给其他人讨论吧,我闪了。

[此贴子已经被作者于2007-9-3 20:25:41编辑过]


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2007-09-03 20:24
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
我说你们争什么?
对一节错误代码,一节不合C标的代码难道还能争得结果?

[CODE]    case 1: 30;
    case 2: 20;
    case 3: 16;
    default: 0[/CODE]

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-03 20:26
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
我的看法是楼主抄错题了,要么就是大一的作业题

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2007-09-03 20:27
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
以下是引用Knocker在2007-9-3 20:26:46的发言:
我说你们争什么?
对一节错误代码,一节不合C标的代码难道还能争得结果?

[CODE]    case 1: 30;
    case 2: 20;
    case 3: 16;
    default: 0[/CODE]

有了结果了,嘿嘿,的确很有意思,我还是第一次看到这么写代码的,居然还能运行,只不过编译器警告这几段代码无效果。话说回来居然老K潜水那么久,都不出来阻止我们,太坏了。


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2007-09-03 20:30
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 
从这个立即数编译以后会放到数据段中
这句话错拉 这里根本没有数据段 他是直接放到寄存器里拉的
当然你问内存在哪里
在电脑里 存储器可以分寄存器(也就是cpu里的) 在就是内存储器(也就是我们说的内存条)
还有就外存储器(就是我们说的硬盘 )
当然那个c程序的b就是分配到内存储器了

   好好活着,因为我们会死很久!!!
2007-09-03 20:30
aoaoaoao
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-5-14
收藏
得分:0 

1个临时变量把

返回的时候把 临时为b生成的内存单元的不可预料的值送入 ax 或eax

2007-09-03 20:30
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
以下是引用爱以走远在2007-9-3 20:30:09的发言:
从这个立即数编译以后会放到数据段中
这句话错拉 这里根本没有数据段 他是直接放到寄存器里拉的
当然你问内存在哪里
在电脑里 存储器可以分寄存器(也就是cpu里的) 在就是内存储器(也就是我们说的内存条)
还有就外存储器(就是我们说的硬盘 )
当然那个c程序的b就是分配到内存储器了

assume cs:code只有个数据段,没看见,那么你在这里认为内存的分配是给寄存器;也就是你想证明int b是放在寄存器里面的。
那么我又如下声明:
char a[1024]; //难道有这么多寄存器给你分配吗?


我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2007-09-03 20:34
快速回复:一道面试题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.074027 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved