永发信息网

一个汇编程序请大家帮忙填下空,然后请教指点详细的解题步骤谢谢

答案:3  悬赏:80  手机版
解决时间 2021-06-01 07:40
  • 提问者网友:杀生予夺
  • 2021-05-31 17:42

XOR AX,AX ;AX=__ FLAG=__

MOC AX,89ABH ;FLAG=__

AND AX,F0FFH ;AX=__ FLAG=__

RCL AX,1 ;AX=__ FLAG=__

请会的朋友帮下忙我先谢谢了!~

最佳答案
  • 五星知识达人网友:玩世
  • 2021-05-31 19:17

补充说明:


ZF 零标志 -- 当结果为负时,SF=1,否则,SF=0.
AF 辅助进位标志---运算过程中第三位有进位值,置AF=1,否则,AF=0
PF 奇偶标志------当结果操作数中偶数个"1",置PF=1,否则,PF=0
SF 符号标志----当结果为负时,SF=1;否则,SF=0.溢出时情形例外
DF 方向标志----当方向左时,DF=1;否则,DF=0.


CF 进位标志----- 最高有效位产生进位值,例如,执行加法指令时,MSB有进位,置CF=1;否则,CF=0.
OF 溢出标志-----若操作数结果超出了机器能表示的范围,则产生溢出,置OF=1,否则,OF=0


然后具体什么指令影响什么标志位,这个要去看下书,强制记忆一下。



接着就可以对照结果了:


1.各位眼睛真是大。。。。


XOR AX,AX ;AX=0000H FLAG=0004H


FLAG=0x04, 这就是第2位的PF位,这就奇偶位了,XOR AX,AX的结果是0, XOR指令只影响PF位,它是以最低位的0和1来判断的,结果FLAG是0x04了。


2. MOV AX,89ABH ;FLAG=0004


非赋值、非存取的运算,才会改变标志位,具体指令会影响FLAG什么位,可以去查指令集的说明


XOR影响了PF位,但MOV指令是不影响FLAG标志位的,所以MOV AX,89AB后,虽然AX是奇数,但不影响FLAG位。


3.AND AX,F0FFH ;AX=80ABH FLAG=0080H


与影响PF和SF,结果为负的奇数,所以PF的4没了,多了8那个SF位。


4.RCL AX,1 ;AX=0156H FLAG=0805H


你去看书的话,移位时,CY和寄存相连,所以这个逻辑左移指令把最高位的1移到了CY进位位中,结果是偶数PF=1,同时方向DF=1是左,最后最后FLAG=0805H了。


全部回答
  • 1楼网友:忘川信使
  • 2021-05-31 21:08

首先来看下FLAG寄存器的存放信息

1、CF:这是进位标志 ,用于在执行指令时是否产生进位或借位如果产生则CF=1,否则CF=0。

2、AF:这是辅助进位标志,这个是用于在指令执行时是否产生借位位如有AF=1否则AF=0。

2、PF:奇偶标志,用于校验数据的奇偶性。检验奇数据奇偶性如果是PF=1;否则PF=0。

3、TF:陷阱标志,在进行中断处理也会用到的主要将此TF清零这个忘记了!。

4、IF:中断允许标志,如果CPU接到并响应了设备的中断请求IF=1否则IF=0该标志在进行中断处理的时候也会和TF一起时候吧这两个标志位清零。

5、ZF:零标志,用于执行指令是否为零如果是则ZF=1否则ZF=0

6、OF:溢出标志,该标志位用于表示操作数执行时是否发生溢出如果是cf=1否则cf=0

7、DF:方向标志(以下不做介绍同样道理)

8.SF:符号标志

下面来看第一个 XOR异或运算 自己跟自己异或 各位相同 当然是0了 至于FLAG上的特征貌似没有

FLAG=0

第二个AX只有两个字节 而89ABH有4个字节 显然 数据溢出 所以 OF=1

AND 与操作 与F0FF AX两个字节 所以只能与FF相与 所以AX=0 产生错位 所以CF=1

RCL 将CF移至最低位 所以 AX=1 产生进位 所以 CF=1

  • 2楼网友:醉吻情书
  • 2021-05-31 19:44

XOR AX,AX ;AX=0000H FLAG=NV UP EI PL ZR NA PE NC

MOV AX,89ABH ;FLAG=同上

AND AX,F0FFH ;AX=80ABH FLAG=NV UP EI NG NZ NA PO NC

RCL AX,1 ;AX=0156H FLAG=OV UP EI NG NZ NA PO NC

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯