回 帖 发 新 帖 刷新版面

主题:问小问题

问题一:
AND AX,AX
为什么能使CF清零,又不影响寄存器内容???

问题二:
关与地址和内容的区别我也不理解
比如:
LEA AX,[4646H]
这个[4646H]就是地址
MOV AX,[4646H]
这个[4646H]就是内容

不明白,就不带中括号的情况下,立即数不就是地址么
也就是说
LEA AX,4646H  这样不就是地址了么?
“主要我理解的是带括号的就是内容,不带括号的就是地址”

问题三
SAL BL,CL
如果CL=03H,BL=75H,不明白的是怎么会左移3位??03H是十六进制,化成2进制是11,是左移三位么?

还有,我对于那么多指令,到底哪条影响哪个标志位实在不理解,希望朋友有这方面的总结可以告诉我一下

回复列表 (共4个回复)

沙发


问题一:
AND AX,AX
为什么能使CF清零,又不影响寄存器内容???

回答:AND指令会影响CF、OF、SF、ZF、PF标志位,其中CF、OF在AND操作后统一设置为0。这就是AND操作后可以对CF清0的原因。应该说AND对OF也是可以清0的。
另外一个二进制数0或1和其自身相与的结果还是其自身(即0与0结果为0,1与1结果为1)。所以执行AND AX,AX后,寄存器的内容还是不变,即你说的不影响原寄存器内容。

问题二:
关与地址和内容的区别我也不理解
比如:
LEA AX,[4646H]
这个[4646H]就是地址
MOV AX,[4646H]
这个[4646H]就是内容

不明白,就不带中括号的情况下,立即数不就是地址么
也就是说
LEA AX,4646H  这样不就是地址了么?
“主要我理解的是带括号的就是内容,不带括号的就是地址”


回答:你后面举的例子LEA AX,4646H是有问题的,LEA语句中源操作数不能为立即数。

问题三
SAL BL,CL
如果CL=03H,BL=75H,不明白的是怎么会左移3位??03H是十六进制,化成2进制是11,是左移三位么?

回答:你可以说左移的位数为3位(10进制数),也可以说左移的位数为11位(二进制数)。10进制数的3就是二进制数的11,没什么不对。

以上你的疑问都可以翻书找到答案。建议你在遇到类似问题时,先试着看看教材上能不能找到答案。

板凳

呵呵,1楼的答得好专业啊!

最后一句话也说对了,这些个问题书上是有的。

3 楼

问题二:
关与地址和内容的区别我也不理解
比如:
LEA AX,[4646H]
这个[4646H]就是地址
MOV AX,[4646H]
这个[4646H]就是内容

不明白,就不带中括号的情况下,立即数不就是地址么
也就是说
LEA AX,4646H  这样不就是地址了么?
“主要我理解的是带括号的就是内容,不带括号的就是地址。
 、、、、、、、、、、、、、、、、、、、、、、、、、、
  看操作数是地址还是内容要看 操作符是对地址还是内容进行操作的
MOV操作符是传送内容的指令(将通过OPS这种寻址方式找到的内容传送给OPD)
LEA是传送地址的(将OPS的偏移地址传送给OPD)
MOV AX,4646H  (其中原操作数是立即寻址,当然4646H是内容不是地址啊)
至于操作数  都不过是几种寻址方式罢了

4 楼


应该给一楼加分。




我来回复

您尚未登录,请登录后再回复。点此登录或注册