新人零基础,初学者问题较多,不明白的地方请求指导。
本帖最后由 puxuancangyu 于 2014-1-23 12:38 编辑汇编第10课视频,cpu运行流程那个图,初始CS=2000H,IP=0000H,得到物理地址:2000H*16+0000H=20000H,接下来2000H*16+(0000H+3)=20003H,
问题一:这里IP加了3个字节,如果没有图,如何知道IP加几个字节,那个内存中的机器码B8,22,66什么意思
接着往下到20003H地址,
问题二:这里为什么有5个字节,如果没有图如何知道哪个地址有多少个字节,
接着走,20003H地址要求JMP,1000:3改变地址,也就是跳转到1000H*16+0003H=10003H.到这个地址后,这里有3个字节,
没有跳转,也就是1000H*16+(0003+3)=10006H,到10006H地址这里有两个字节,1000H*16+(0006H+2)=10008H,
问题三:最后怎么跳到10000H,本来在10008H,视频就说是JMP,BX BX=0
也就是JMP,0 然后就说CS的值没有改变,cs=1000H,这个时候为何又不加IP和字节了,直接拿CS的值当地址,跳转到10000H,不清楚,哪位大侠解释下啊
最后一个问题
作业里的sub 指令前边的视频没出现过,这个是什么指令, 请问怎么运算的
sub是减法,和ADD一样。 执行的时候ip跳几个字节,这个是底层的协议吧,硬性规定,没有为什么,有个对应关系的,这个对应关系可以列张表出来,固定的 感谢以上两位大大,问题三,我还是不清楚,能否赐教,从10008H怎么就跳转到10000H了 puxuancangyu 发表于 2014-1-23 12:40 static/image/common/back.gif
感谢以上两位大大,问题三,我还是不清楚,能否赐教,从10008H怎么就跳转到10000H了
回答你的问题三, IP加几,是这条命令执行完之后加的,也就是说JMP 0执行完之后IP会加2.不是先把IP加2再执行。至于你前面说的没有图怎么知道IP加几这个问题,小甲鱼老师没有讲到。可能是不重要的吧。 期待大侠们的指导 回答一:机器码有几个字节就加几个,你看20000h开始机器码b82266就是汇编代码mov ax,6622h,
所以下个指令就从20003开始了,没图就看debug,一目了然
回答二:jmp 1000:3,也就是是1000:0003,后面放地址,ea就是jmp机器码
回答三:看下面
仔细看书并总结,我也是初学没多久的
JMP 寄存器表示直接用寄存器中的值修改IP,但不修改CS
JMP 段地址:偏移地址,表示用这个段/偏移地址修改CS:IP
SUB 相对于ADD,ADD 是加,SUB是减,不用着急这些操作符,往后看,慢慢就知道了! 本帖最后由 puxuancangyu 于 2014-1-28 04:36 编辑
tk2003 发表于 2014-1-24 17:17 static/image/common/back.gif
回答一:机器码有几个字节就加几个,你看20000h开始机器码b82266就是汇编代码mov ax,6622h,
所以下 ...
万分感谢这位朋友
路过打个酱油,学习一下。 路过看看= =
页:
[1]