主题:问小问题
shujujiegou01
[专家分:1070] 发布于 2006-07-10 21:04:00
问题一:
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个回复)
沙发
tides [专家分:0] 发布于 2006-08-13 13:02:00
问题一:
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,没什么不对。
以上你的疑问都可以翻书找到答案。建议你在遇到类似问题时,先试着看看教材上能不能找到答案。
板凳
66543 [专家分:200] 发布于 2006-08-14 22:28:00
呵呵,1楼的答得好专业啊!
最后一句话也说对了,这些个问题书上是有的。
3 楼
awfiujff [专家分:110] 发布于 2006-08-16 00:07:00
问题二:
关与地址和内容的区别我也不理解
比如:
LEA AX,[4646H]
这个[4646H]就是地址
MOV AX,[4646H]
这个[4646H]就是内容
不明白,就不带中括号的情况下,立即数不就是地址么
也就是说
LEA AX,4646H 这样不就是地址了么?
“主要我理解的是带括号的就是内容,不带括号的就是地址。
、、、、、、、、、、、、、、、、、、、、、、、、、、
看操作数是地址还是内容要看 操作符是对地址还是内容进行操作的
MOV操作符是传送内容的指令(将通过OPS这种寻址方式找到的内容传送给OPD)
LEA是传送地址的(将OPS的偏移地址传送给OPD)
MOV AX,4646H (其中原操作数是立即寻址,当然4646H是内容不是地址啊)
至于操作数 都不过是几种寻址方式罢了
4 楼
大吉大利 [专家分:0] 发布于 2006-09-13 14:58:00
应该给一楼加分。
我来回复