第三章 数据处理
3.1 数据表示
数据
计算机处理的对象
对应指令操作的对象:操作数
- 2进制
- 16进制
- 及其相互转换
数值的编码
机器数:计算机中用0和1数码组合表达的数值
真值:现实中真实的数值
定点整数
固定小数点的位置的表达数值
补码
老生常谈,各位取反,末尾+1
字符的编码
BCD
ASCII
0~9 30h-39h
A-Z 41H-5AH
a-z 61H-7AH
空格 20H
Unicode编码(统一码)
3.2 常量表达
常数
10,16,2进制形式表达的数值
以后缀字母区分,10进制数可以不加
以字母A~F开头的16进制常熟,要加前导0
字符和字符串
数值事每个字符对应的ASCII码
符号常量
使用标识符表达一个数值
符号定义伪指令
数值表达式
用运算符连接各种常量构成的算式
算术运算符:+,-,*,/
3.3 数据传送类指令
数据传送
把数据从一个位置传送导另一个位置
除标志寄存器传送指令外,均不影响标志位
1.传送指令
MOV
把一个字节,字、双字从操作数源传送导目的位置
- 操作数类型一致
- 有明确的类型
- 不能都是存储单元
XCHG
将源操作数和目的操作数内容交换
- 寄存器之间
- 寄存器和存储器之间
空操作指令NOP
需要花费时间
占据一个字节空间
2.堆栈操作指令
俩种基本操作
- 数据压进堆栈PUSH
- 数据弹出堆栈POP
数据进入堆栈,ESP逐渐减小
数据依次弹出,ESP逐渐增大
标志传送指令
直接操作标志寄存器,改变标志位的值
3.算数运算类指令
加法指令
加法指令:ADD
带进位加法指令:ADC
增量指令:INC
INC不影响进位标志CF
其他指令按照定义影响全部状态标志位
减法指令
减法指令:SUB
带借位减法指令:SBB
减量指令:DEC
求补指令:NEG
比较指令:CMP
除DEC不受影响CF标志外
其他按定义影响全部状态标志位
乘法指令
无符号数乘法
MUL src,被乘数隐含在AL,AX,EAX中
IMUL dest,SRC,双操作数乘法
IMUL dest,src,immm,三操作数乘法
除法指令
无符号数:DIV src
有符号数:IDIV src
记住这个就行
DIV ebx
等价于
EAX=EDX.EAX÷ebx/m32的商
EDX=EDX.EAX÷ebx/m32的余数
4.逻辑运算指令
AND,OR,NOT,XOR
TEST dest,src
进行逻辑与运算,但不改变值,影响标志位
5.位移指令
SHL,逻辑左移
SAL,算数左移
SHR,逻辑右移
SAR,算数右移