X86汇编-数据传送类与算术运算类作业
1. 将标志寄存器的值读到 EAX 中,并用算术指令将其中的 OF 位与 CF 位置0,再存回到标志寄存器中,给出指令与执行结果
给出寄存器初始状态

设置PUSHF指令并执行,可以观察到ESP-4,

在堆栈窗口可以观察到标志寄存器的值

将ESP指向的内容送入EAX

标志寄存器的值读入了EAX中

为了运用算术运算使CF和OF置0,我们不妨先将EAX对应的位(OF在第11位,CF在第0位)设为1

合适的算术运算。。。设置EBX为与EAX相同的值,对应的位置相减得0了

完成置0

将EAX值压栈再弹出给标志寄存器

结果展示

2. 用一条算术运算指令将 OF 与 CF 同时置1
设置EAX与EBX如下

既要进位,又要溢出,用最大正数-(-1)

结果

3. 用 CMP EAX, EBX 比较存在 EAX 与 EBX 中的两个数大小,在下表中填入反映二者大小关系的标志位状态。
无符号数
| EAX > EBX | EAX = EBX | EAX < EBX | EAX >= EBX | EAX <= EBX |
|---|---|---|---|---|
| CF = 0 且 ZF = 0 | CF = 0 且 ZF = 1 | CF = 1 且 ZF = 0 | 无法确定,见前面分立情况 | 无法确定,见前面分立情况 |
有符号数
| EAX > EBX | EAX = EBX | EAX < EBX | EAX >= EBX | EAX <= EBX |
|---|---|---|---|---|
| SF = OF | ZF = 1 | SF ≠ OF | 无法确定,见前面分立情况 |

浙公网安备 33010602011771号