老文章档案 · 2003 年

把数据写到代码段

天下资讯 · 破解文章 · 2003-09-19 · 作者:怜香 人气: · 出处:赢政天下整理收藏)

看下面的小程序,很简单,你认为执行结果会是什么?

------------------------------------------------------------

;文件名:11.ASM

;利用console显示一个字符串信息

.386

.model flat,stdcall

option casemap:none

include \MASM7\INCLUDE\windows.inc

include \MASM7\INCLUDE\kernel32.inc

include \MASM7\INCLUDE\masm32.inc

includelib \MASM7\LIB\kernel32.lib

includelib \MASM7\LIB\masm32.lib

.code

messAdd dd 0

mess db 'How are you !',0

start:

lea eax,mess

mov messAdd,eax ;写代码段中的数据

invoke StdOut,messAdd

invoke ExitProcess,NULL

end start

-----------------------------------------------------------

太简单啦,不就是利用console输出一个字符串?对啦,这就是程序的原意!

但结果却不是想象的。因为在执行程序时,映入我们眼帘的首先是一个错误的消息框!

为什么会这样呢?因为Windows在链接时设置代码段一个属性,那就是“读\执行\代码”,就是不允许写。所以就出错啦!有没有解决的办法呢?

照着下面的操作吧,它可使代码段有写的属性:

D:\MASM7>ml /coff 4.asm /link /subsystem:console /section:.text,rw ;R-读,W-写

Microsoft (R) Macro Assembler Version 6.14.8444

Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

Assembling: 4.asm

Microsoft (R) Incremental Linker Version 5.12.8078

Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/subsystem:console /section:.text,rw

"4.obj"

"/OUT:4.exe"

D:\MASM7>11

How are you !

D:\MASM7>_

(出处:赢政天下整理收藏)

相关资讯:

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright ? 1998-2003 winzheng.com

All Rights Reserved.

特别感谢 蓝芒科技 提供下载站及论坛服务器

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史