第三章 通用数据处理指令 3
1 简答题 (1)如何修改“MOV ESI, WORD PTR 250”语句使其正确
删除“WORD PTR”即可 (2)为什么说“XCHG EDX,CX”是一条错误的指令
源、目标寄存器位数不同,不能用该指令进行数据交换 (3)说 IA-32 处理器的堆栈“向下生长”是什么意思
入栈时堆栈指针寄存器做减法操作,指向低地址;出栈时堆栈指针寄存器做加法操作,指向高地址 (4)都是获取偏移地址,为什么指令“LEA EBX,[ESI]”正确,而指令“mov ebx ,offset [ESI]”就错误
LEA 指令时运行时计算地址,OFFSET 是汇编时取地址
(5)执行了一条加法指令后,发现 ZF=1,说明结果是什么
表明运算结果为 0 (6)INC、DEC、NEG 和 NOT 都是单操作数指令,这个操作数应该是源操作数还是目的操作数
既是源操作数,也是目的操作数 (7)大小写字母转换使用了什么规律
大小写字母转换利用它们的 ASCII 码相差 20H (9)除法指令“DIV ESI”的被除数是什么
被除数64 位,在 EDX 和 EAX 中,EDX 保存高 32 位、EAX 保存低 32 位 (10)逻辑与运算为什么也称为逻辑乘
运算规则类似于 2 进制乘法
2 判断题 (1)指令“MOV EAX,0”使 EAX 结果为 0,所以标志 ZF=1
错,MOV 指令不影响标志 (2)空操作 NOP 指令其实根本没有指令
错, (3)堆栈的操作原则是“先进后出”,所以堆栈段的数据除了 PUSH 和 POP 指令外,不允许其他方式读写
错 (4)虽然 ADD 指令和 SUB 指令执行后会影响标志状态,但执行前的标志并不影响它们的执行结果
对 (5)80 减 90(80-90)需要借位,所以执行结束后,进位标志 CF=1