启航
根据狂神 基知 跳转链接
进制运用
- 进制计算的规则
- 考虑用八进制实现位数较大的加减乘除(本质为查表)
八进制的加法:
八进制的乘法:
单位、运算符
- 比特(bit)、字节(Byte)、字(Word)、双字(DWord)
单位 | 范围(十六进制) |
---|---|
比特(位) | 0、1 |
字节 | 0~0xFF |
字 | 0~0xFFFF |
双字 | 0~0xFFFFFFF |
在十六进制中:F = 1111
INC
加 ;DEC
减 ;MUL
乘 ;DIV
除and
与(&) ;or
或(|) ;not
非(~);xor
异或(^)shl
左移 (<<
) , 将一个运算对象的各二进制位全部左移若干位(左边的二进制丢弃,右边补0)shr
右移 (>>
) , 将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1.
计算机位运算算法
比如 计算 4+5 = ?
- 人类的计算方法(计算机不会直接进行加法)
0000 0100
0000 0101
——————————
0000 1001
- 计算机实现原理
① 异或(没有进位可以直接获得结果)
②与运算 (判断进位,如果与运算结果为0,则没有进位)
③将与运算的结果 左移一位
④将第三步左移一位的结果与第一步异或结果进行 异或
一、异或
0000 0100
0000 0101
——————————
0000 0001
二、与运算
0000 0100
0000 0101
——————————
0000 0100
三、左移
0000 1000
四、异或
0000 0001
0000 1000
——————————
0000 1001
通用寄存器与内存
MOV 指令
mov 存的地址 ,存的数据
mov 存的地址1 , 存的地址1
不同的寄存器
FFFFFFFF
32 位 16位 8位
EAX AX AL
ECX CX CL
EDX DX DL
EBX BX BL
ESP SP AH
EBP BP CH
ESI SI DH
EDI DI BH
8位 : L低8位 , H高8位
汇编如何向内存中写值:
mov 数据宽度 内存地址 ,1
mov byte ptr ds:[0x19FF70] ,1
注意:传递的值的大小一定要和数据宽度相等