林之白狼 发表于 2013-1-10 21:34:31

将汇编写的程序载入OD,在16进制窗口显示66:是啥意思哈?


http://bbs.fishc.com/data/attachment/common/cf/19330049q5u2f55d2you5q.gif
第一个问题:

将汇编写的程序载入OD,在16进制窗口显示66:是啥意思哈?
如下:
00469805    66:B8 2301      MOV AX,123
00469809    66:BB 5604      MOV BX,456
0046980D    66:03C3         ADD AX,BX
00469810    66:03C0         ADD AX,AX
00469813    66:B8 004C      MOV AX,4C00
00469817    CD 21         INT 21

实际上这几句汇编指令对应的二进制代码就是: B8 23 01 B8 56 04 03 C3 03 C0 B8 00 4C CD 21

为什么载入OD的时候会在前面加上66:呢?这代表啥意思呢?谢谢童鞋们


第二个问题:
(ax)的意思我有点搞混了,他代表的是寄存器ax中的数值?还是代表 “把ax中数值作为物理地址或者偏移地址”而找到的内存中内容呢??

非常感谢撒

メ㊣逆ご帅☆ 发表于 2013-1-10 21:34:32

od显示66那个,我不管载入16位还是32都没看见,翻了老久,估计版本不同吧,我查看了od官方文档,发现在hex jump中只会显示跳转分析和机器码,跳转分析给出的是符号,没有数字,address栏资料上也表示只会显示虚拟地址,估计66没什么太大影响,你大可不必纠结@_@
(ax)的问题,我想你要表达的是吧,
就是吧ax中的值作为地址,然后找ax中的地址中存放的值(32位程序是作为虚拟地址,16位的在8086概念中我忘了是什么地址,不过在debug实质是虚拟地址,毕竟是windows模拟的)
举个例子
有个地址f100h
在f100h这个地址下存放两个字节的值1234h
我们mov ax,f100h

这时ax=f100h
这时mov bx,
bx=1234h而不是f100h


教你个实验技巧,比如这个再忘了
那个od随便载入一个程序,然后按空格把你需要理解的指令输进去,f8或者f4跑一下,看一下寄存器和数据窗口的值就明白了
希望对你有帮助^_^||

林之白狼 发表于 2013-1-11 22:55:05

メ㊣逆ご帅☆ 发表于 2013-1-10 21:34 static/image/common/back.gif
od显示66那个,我不管载入16位还是32都没看见,翻了老久,估计版本不同吧,我查看了od官方文档,发现在hex...

哥哥,谢谢啦哈,祝你天天开心

Chaos.Head 发表于 2013-2-1 08:27:16

メ㊣逆ご帅☆是个好人
页: [1]
查看完整版本: 将汇编写的程序载入OD,在16进制窗口显示66:是啥意思哈?