这些指令,从来没有见过,看不明白,请教请教

imur2008 2009-01-23 04:33:57
有些地方指令,从来没有见过,看不明白,请教请教:
00401050 D4 03 AAM 3 ;AAM 3啥意思?
00401057 D87B 11 FDIVR DWORD PTR DS:[EBX+11] ;FDIVR啥意思?
0040105E DC00 FADD QWORD PTR DS:[EAX] ;FADD啥意思?
00401065 E0 00 LOOPDNE SHORT generic.00401067 ;LOOPDNE啥意思?
00401177 C9 LEAVE ;LEAVE啥意思?
00401178 C2 1000 RETN 10 ;10啥意思,为什么要加一个10?
004011BB 65:6D INS DWORD PTR ES:[EDI],DX ;INS啥意思?
004011BD 626C65 72 BOUND EBP,QWORD PTR SS:[EBP+72] ;BOUND啥意思?
004011CD 70 6C JO SHORT generic.0040123B ;JO啥意思?
004011F9 65:61 POPAD ;POPAD啥意思?
00401200 6E OUTS DX,BYTE PTR ES:[EDI] ;OUTS啥意思?
00401201 66:6972 6D 2045 IMUL SI,WORD PTR DS:[EDX+6D],4520 ;IMUL啥意思?
00401207 78 69 JS SHORT generic.00401272 ;JS啥意思?
00401270 - FF25 48204000 JMP DWORD PTR DS:[<&user32.CreateWindowE>; ;JMP到一个函数那里啥意思?
004012E4 0000 ADD BYTE PTR DS:[EAX],AL ;代码后面有近1000行的“0000 ADD BYTE PTR DS:[EAX],AL”啥意思?

谢谢先
...全文
594 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
imur2008 2009-01-28
  • 打赏
  • 举报
回复
谢谢各位大侠!
结贴致谢!!!
祝大家新年
☆☆ ☆☆ ☆☆ ☆☆
★★ ★ ★★
☆☆ 祝你快乐! ☆☆
★★ ★★
☆☆ ☆☆
★★ ★★
☆☆ ☆☆
★★ ★★
☆☆
BAYNPU 2009-01-26
  • 打赏
  • 举报
回复
要看WINDOWS环境下32位汇编语言程序设计(罗云彬)这本书有涉及到上面的二个内容.
imur2008 2009-01-26
  • 打赏
  • 举报
回复
谢谢楼上cnzdgs,xiaopoy 两位指出的关键之处
请问:“堆栈维护、内存页面属性”这个方面的内容,要看什么书??
谢谢先
chwwwch 2009-01-25
  • 打赏
  • 举报
回复
看看
cnzdgs 2009-01-24
  • 打赏
  • 举报
回复
386指令集可以在网上搜到,很多书上也有讲。
8085是我敲错了,是8086,大多数汇编书上讲的都是这个。
imur2008 2009-01-24
  • 打赏
  • 举报
回复
要学32位程序需要把386指令集先看一下。其中有部分(如JO、JS)也是8085指令集中的。

请问老大,这个386指令集,8085指令集在什么地方可以找到?最好是我这样的草鸟级可以看得懂的

谢谢先!

另外,这个帖子到时加分结贴,老大所言极是
xiaopoy 2009-01-24
  • 打赏
  • 举报
回复
当然可以,只要保证程序不会出错。
最基本的二点就是堆栈维护、内存页面属性
cnzdgs 2009-01-24
  • 打赏
  • 举报
回复
FF25是jmp到一个变量指定的地址的操作码,48204000是该变量地址,倒过来,00402048。
你的后一个问题没法回答,以后经验多了自己就会清楚的。
qdk0901 2009-01-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gyk120 的回复:]
大多是浮点指令,上百度搜一下吧,很多的
[/Quote]
我只看到了两条,你看到多少条了
wwwxxb40000 2009-01-24
  • 打赏
  • 举报
回复

学习一下
imur2008 2009-01-24
  • 打赏
  • 举报
回复
谢谢几位高人的指点!!
请教:
00401270 - FF25 48204000 JMP DWORD PTR DS:[ <&user32.CreateWindowE>;

这个指令- FF25 48204000怎么计算出来的?谢谢先

另外那个004012E4 0000 ADD BYTE PTR DS:[EAX],AL空指令,是不是可以在上面插入一些汇编指令,增加功能?


谢谢先
xiaopoy 2009-01-24
  • 打赏
  • 举报
回复
看多就记住了。

楼主把各段code的格式分开吧,这样真惑众
引用
00401050 D4 03 AAM 3 ;AAM 3啥意思?
00401057 D87B 11 FDIVR DWORD PTR DS:[EBX+11] ;FDIVR啥意思?
0040105E DC00 FADD QWORD PTR DS:[EAX] ;FADD啥意思?
00401065 E0 00 LOOPDNE SHORT generic.00401067 ;LOOPDNE啥意思?

00401177 C9 LEAVE ;LEAVE啥意思?
00401178 C2 1000 RETN 10 ;10啥意思,为什么要加一个10?

004011BB 65:6D INS DWORD PTR ES:[EDI],DX ;INS啥意思?
004011BD 626C65 72 BOUND EBP,QWORD PTR SS:[EBP+72] ;BOUND啥意思?
004011CD 70 6C JO SHORT generic.0040123B ;JO啥意思?
004011F9 65:61 POPAD ;POPAD啥意思?
00401200 6E OUTS DX,BYTE PTR ES:[EDI] ;OUTS啥意思?
00401201 66:6972 6D 2045 IMUL SI,WORD PTR DS:[EDX+6D],4520 ;IMUL啥意思?
00401207 78 69 JS SHORT generic.00401272 ;JS啥意思?


00401270 - FF25 48204000 JMP DWORD PTR DS:[ <&user32.CreateWindowE>; ;JMP到一个函数那里啥意思?
004012E4 0000 ADD BYTE PTR DS:[EAX],AL ;代码后面有近1000行的“0000 ADD BYTE PTR DS:[EAX],AL”


00401065 E0 00 LOOPDNE SHORT generic.00401067 ;这个loopne是废指令,无论如何都是直接执行下一个指令

00401270 - FF25 48204000 JMP DWORD PTR DS:[ <&user32.CreateWindowE>; ;JMP到一个函数那里啥意思?
004012E4 0000 ADD BYTE PTR DS:[EAX],AL ;代码后面有近1000行的“0000 ADD BYTE PTR DS:[EAX],AL”

进入CreateWindowEx后消息处理开始运行,程序会在消息处理中ExitPorcess,于是这个CreateWindowEx就不会返回。
后面的0000只是反汇编器对指令段空数据的处理而已,不用在乎
stecktom 2009-01-24
  • 打赏
  • 举报
回复
反汇编的东西?
xzdgy 2009-01-24
  • 打赏
  • 举报
回复
up
noenoughmemory 2009-01-24
  • 打赏
  • 举报
回复
up
attributemismatch 2009-01-24
  • 打赏
  • 举报
回复
帮顶
noenoughmemory 2009-01-24
  • 打赏
  • 举报
回复
帮顶
Guilty 2009-01-24
  • 打赏
  • 举报
回复
这些不是代码,反汇编了数据段,碰巧凑出的东西,这些指令不学也罢,或者以后水平高了再学。
qdk0901 2009-01-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 imur2008 的回复:]
要学32位程序需要把386指令集先看一下。其中有部分(如JO、JS)也是8085指令集中的。

请问老大,这个386指令集,8085指令集在什么地方可以找到?最好是我这样的草鸟级可以看得懂的

谢谢先!

另外,这个帖子到时加分结贴,老大所言极是
[/Quote]
Intel Architecture Software Developer Manual卷二
cnzdgs 2009-01-23
  • 打赏
  • 举报
回复
要学32位程序需要把386指令集先看一下。其中有部分(如JO、JS)也是8085指令集中的。

AAM是BCD码乘法运算后调整;
FDIVR、FADD是浮点除法和加法指令;
LOOPDNE与LOOP类似,另外判断如果ZF标志为1则结束循环;
LEAVE与ENTER相对应,用于函数返回前恢复ebp、esp寄存器;
RETN 10表示函数返回后esp再加10;
INS是从端口连续输入,数据保存到指定内存中,数据个数由ecx指定;
JO是判断溢出标志跳转;
OUTS是向端口连续输出,与INS刚好相反;
IMUL是有符号乘法;
JS是判断符号标志跳转;
JMP就是跳转,根据程序需要,跳到哪里都可以;
后面全是0说明不是代码,也不会指定到(因为前面是JMP)。

LZ好象所有问题一律20分,应该根据问题的难度和复杂程度适当调节分数才对。
加载更多回复(1)

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧