【汇编语言】汇编中怎么嵌入、运行机器码? 20

RT。我把一段汇编代码(比如是helloworld)转成了机器码,就是b83412这样类型的,还有n多,我想把这段机器码嵌入到汇编源码中,然后想办法调用。就是说,我想在汇... RT。我把一段汇编代码(比如是hello world)转成了机器码,就是b8 34 12 这样类型的,还有n多,我想把这段机器码嵌入到汇编源码中,然后想办法调用。

就是说,我想在汇编代码中嵌入我的机器码。打开后能把我的插入的机器码运行起来。。就是这样。。。

其实我也觉得是有点无聊,但是这是为了我的一个猜想。。。
在java中都能调用机器码,在强大的汇编面前,还有这么多高手,应该能实现吧?帮帮我咯。。。
展开
 我来答
完身好2028
2011-03-04 · TA获得超过954个赞
知道小有建树答主
回答量:443
采纳率:0%
帮助的人:287万
展开全部
是这样,b8 34 12这样的字节内容计算机既可以解释成数据也可以解释成代码,就看哪个段寄存器中,如果是保护模式,就看它是放在哪个段中。举个例子,8086CPU汇编当CS:IP指向某个被命名为codesg的段,你想让CPU执行你指定的机器码,就在这个段定义这些数据就成了。例如如下代码

assume cs:codesg,ds:data

data segment
db b8 34 12 ;你定义的数据,它被CPU理解为数据
data ends

codesg segment
begin:
db b8 34 12 ;这就是你要执行的机器码
mov ax,data
mov ds,ax
....... ;之后你要写的指令,当然也可以定义你要执行的机器码
codesg ends

end begin

懂了吧,像诸如db b8 34 12这样的数据,CPU如何理解它全看它被哪个段寄存器指向
追问
嗯。。谢谢了。。。不愧是大侠级别的人物。。。额。。
也就是说,我把我需要执行的机器码插入到:
.......

这里就可以了吗?

又或者是插入到:

;这就是你要执行的机器码

这句注释的前面?
插入的时候有没有什么特殊的格式,机器码要怎么排列?

呵呵,我是个菜鸟,但是我对汇编的确很感兴趣,如果我能弄明白这个问题,我一定以后好好学习汇编! Thanks
追答
cs是指向的codesg段,begin标号后的就是开始执行的代码,所以说你只要定义到begin之后任何一个地方都可以
做而论道
高能答主

2011-03-04 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
汇编语言和机器码,本来就是相辅相成的。
绝大多数的汇编语言程序,都嵌入了机器码。
用 DB 就可以把机器码嵌入到汇编语言程序中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
手机用户83045
2011-03-05 · TA获得超过575个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:353万
展开全部
码数据) - 系统核心支持库->其他
英文名称:MachineCode
在编译后文件代码段中当前语句位置置入指定的机器指令码数据。本命令为高级命令。
参数<1>的名称为“代码数据”,类型为“通用型(all)”。欲置入到代码段中的机器指令码数据,可以是字节集数据或二进制文件名文本。

操作系统需求: Windows、Linux
--------
使用“置入代码”都有什么步骤?一、写出汇编代码;二、通过汇编器将汇编代码编译为机器码;三、将机器码转换为易语言字节集常量数据,并作为参数传入“置入代码”。 第一步没什么好说的,是考验汇编功力的地方,是硬功夫,没有技巧的。 第二步,我们可以借助“Ollydbg”等汇编器完成(当然也可以通过查询Intel x86 指令手册,纯手工将汇编代码编译为机器指令码,除非变态或超级牛叉的人不会采用)。首先启动Ollydbg,打开任意一个EXE程序,在汇编代码区双击任意一行,在弹出的汇编窗口中,输入第一步写好的第一行汇编代码,回车,就可以在机器指令区域(汇编代码区域左侧)看到相应的机器指令了,如此循环,逐行输入所有汇编代码,就可以得到相应的机器指令代码了。 第三步也相对容易,主要工作可能就是将Ollydbg生成的16进制指令代码转换为10进制。如果代码不长,借助“计算器”纯手工操作也行。一般来说,通常会用易语言写一个小程序,解析从Ollydbg中复制出的文本,提取其中的机器指令代码,进行数制转换,生成易语言字节集数据的文本格式。这种小程序很容易写,我想“置入代码”的使用者中很多人(据我了解不下10个)都写过类似的程序,我(liigo)也写过一个。说实话,这种小程序自己用,写的简陋些没关系,反正只是辅助程序,还可以随时调整嘛,但想发布的话,就要考虑通用性易用性,麻烦很多,况且用户也不多,所以发布此类程序的人很少,但是论坛上也确实有人发过。 今天就写这么多。希望读者有所收获。
-------
你试试这个。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友423d1b5
2011-03-06 · TA获得超过420个赞
知道小有建树答主
回答量:1292
采纳率:0%
帮助的人:292万
展开全部
放在DB后面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式