将汇编写的程序载入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中数值作为物理地址或者偏移地址”而找到的内存中内容呢??
非常感谢撒
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-10 21:34 static/image/common/back.gif
od显示66那个,我不管载入16位还是32都没看见,翻了老久,估计版本不同吧,我查看了od官方文档,发现在hex...
哥哥,谢谢啦哈,祝你天天开心 メ㊣逆ご帅☆是个好人
页:
[1]