xiaosawanjava 发表于 2014-5-1 17:24:34

【王爽-汇编语言】第二章 监测点2.3



刚开始的时候我也不太明白为什么是4次,但是现在我明白了
下面就由我来分享一下,我的个人理解

mov ax,bx 因为ip任意时刻都是指向,下一次将要执行的指令的偏移地址,
所以 mov ax,bx      读取完了之后 是第一次修改 ip的值,记住这里是读取之后就修改ip的值,然后在执行mov ax,bx
sub ax,ax                cpu 读取 sub ax,ax 之后 第第二次修改 ip 的值
jmp ax                     cpu 读取 jmp ax 之后 是第3次修改ip的值,记住读取并不是执行,cpu 执行jmp ax的时候是第4 次修改ip的值,因为 mp jmp ax 指令 本身就是修改ip的值为ax ,所以这是第4 次,前面 mov ax,bx 和 sub ax,ax 这两条指令执行的时候都不会修改ip的值,他们只是改变 目的操作数 寄存器 ax 的值。

旧当时 发表于 2014-5-9 18:16:41

最后ax的值是如何确定的,就是最后ip的值怎么知道是0的

xiaosawanjava 发表于 2014-5-9 21:18:28

旧当时 发表于 2014-5-9 18:16 static/image/common/back.gif
最后ax的值是如何确定的,就是最后ip的值怎么知道是0的

上一句sub ax,ax   你想一想 一个数减去他自己是多少,肯定是0

旧当时 发表于 2014-5-10 22:44:28

xiaosawanjava 发表于 2014-5-9 21:18 static/image/common/back.gif
上一句sub ax,ax   你想一想 一个数减去他自己是多少,肯定是0

不好意思,没看到sub。。。。
今天新看了那个3.4的实验,用debug32做的时候,
以MOV ax 【x】,就是以偏移地址的形式把内存中的值往寄存器里面放的时候,总是提示 1dc2 invalid use of left bracket 的错误,把寄存器的数字往内存里面放,则会出现08f5 invalid use ofregister的错误提示
我用的64位机子 ,用的是论坛里面那个debug32教程装的debug32,

旧当时 发表于 2014-5-10 22:45:59

按错键了,没说完,接着,这个错误是不是因为系统的原因,有没有什么办法?

xiaosawanjava 发表于 2014-5-10 23:52:03

旧当时 发表于 2014-5-10 22:45 static/image/common/back.gif
按错键了,没说完,接着,这个错误是不是因为系统的原因,有没有什么办法?

你把你的代码发出来看看。

旧当时 发表于 2014-5-12 17:20:26

我进行了ax值传入数据段,数据段内值传入ax中的操作,均不能通过附上图片,系统是64位,用的DOSBox模拟debug32,我觉得好像是所有涉及这个符号【】的都不能通过,最后 多谢了
页: [1]
查看完整版本: 【王爽-汇编语言】第二章 监测点2.3