X86汇编-数据传送类与算术运算类作业

1. 将标志寄存器的值读到 EAX 中,并用算术指令将其中的 OF 位与 CF 位置0,再存回到标志寄存器中,给出指令与执行结果

给出寄存器初始状态

img

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

img

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

img

将ESP指向的内容送入EAX

img

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

img

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

img

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

img

完成置0

img

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

img

结果展示

img

2. 用一条算术运算指令将 OF 与 CF 同时置1

设置EAX与EBX如下

img

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

img

结果

img

3. 用 CMP EAX, EBX 比较存在 EAX 与 EBX 中的两个数大小,在下表中填入反映二者大小关系的标志位状态。

无符号数

EAX > EBXEAX = EBXEAX < EBXEAX >= EBXEAX <= EBX
CF = 0 且 ZF = 0 CF = 0 且 ZF = 1 CF = 1 且 ZF = 0 无法确定,见前面分立情况 无法确定,见前面分立情况

有符号数

EAX > EBXEAX = EBXEAX < EBXEAX >= EBXEAX <= EBX
SF = OF ZF = 1 SF ≠ OF 无法确定,见前面分立情况 无法确定,见前面分立情况
posted @ 2022-03-19 14:46  Xiaohanahahah  阅读(41)  评论(0编辑  收藏  举报