第三章通用数据处理指令
(2)为什么说“XCHG EDX,CX”是一条错误的指令
源、目标寄存器位数不同,不能用该指令进行数据交换
(3)说IA-32处理器的堆栈“向下生长”偏移变量是什么意思意思
入栈时堆栈指针寄存器做减法操作,指向低地址;出栈时堆栈指针寄存器做加法操作指向高地址
LEA指令时运行时计算地址,OFFSET是彙编时取地址
(5)执行了一条加法指令后,发现ZF=1说明结果偏移变量是什么意思?
(6)INC、DEC、NEG和NOT都是单操作数指令这个操作数应该是源操作数还是目的操作数?
既是源操作数也是目的操作数
(7)大小写字母转换使用了什么规律?
大小写字母转换利用它们的ASCII码相差20H
(9)除法指令“DIV ESI”的被除数偏移变量是什么意思
(10)逻辑与运算为什么也称为逻辑乘?
运算规则类似于2进制乘法
错,MOV指令不影响标志
(2)涳操作NOP指令其实根本没有指令
(3)堆栈的操作原则是“先进后出”,所以堆栈段的数据除了PUSH和POP指令外不允许其他方式读写。
(4)虽然ADD指令和SUB指令执行后会影响标志状态但执行前的标志并不影响它们的执行结果。
(5)80减90(80-90)需要借位所以执行结束后,进位标志CF=1
對,减法时借位也用CF标志反映
(6)指令“INC ECX”和“ADD ECX,1”实现的功能完全一样可以互相替换。
错INC 不影响CF位。
(7)无符号数在前面加零扩展數值不变;有符号数前面进行符号扩展,位数加长一位、数值增加一倍
错,符号扩展也不改变数值大小
(8)CMP 指令是目的操作数减去源操莋数与SUB指令功能相同