汇编学习-1
什么是机器语言:
#目前的电子计算机
状态0和1
#最早的程序员,穿孔卡带
加 0100 0000
减 0100 1000
乘 0100 1000 0100 1000
除 0100 1000 1100 1000
之后简化成为助记符。汇编语言,将人能理解读语言转换成计算机语言
加 IMC
减 DEC
乘 MUL
除 DIV
C语言
加 +
减 —
乘 *
除 /
进制
一进制,一进一,结绳记事
二进制,二进一 ,计算机
八进制,八进一,8个符号组成 0 12 3 4 5 6 7
10进制
16 进制,16进一,0123456789abcdef
查数。
测试
#三进制写1-20
0 1 2
10 11 12
20 21 22
100 101 102
110 111 112
。。。。。。。
#7进制写1-20
0 1 2 3 4 5 6
10 11 12 13 14 15 16
20 21 。。。。。。。。
#2进制
0 1 10 11 100 101 110 111 1000。。。
#一组符号,逢几进几
进制的运算
#8进制运算
2+3=5
2*3=6
4+5=11
4*5=24
277+333=632
276*54=20250
234/4=47
二进制
计算机使用二进制 01 状态 电子计算机 有弊端,物理的极限,摩尔定律,追求语言的极限
二进制简写
–>
16进制
0 1 2 3 4 5 6 7 8 9 a b c d e f
1111 1111 ff
数据宽度
c c++ java 定义数据类型,定义宽度
位 0 1
字节 8位 0-0xFF
字 0-0xFFFF
双字 0-0xFFFFFFFF
在计算机中,每个数据都需要给他定义数据类型,给他定义宽度,在内存中的宽度
有符号数和无符号数
数据都是有宽度的,每个数据代表什么意思呢?二进制
010101
规则
无符号数规则
你这个数字是什么就是什么
10011010 16进制 0x9A 10进制 154
有符号数规则
最高位是符号位 1(负数)0(正数)
10011010 如何转换
原码反码补码
编码规则:有符号的
原码码:最高位是符号位,对其他位进行本身的绝对值
反码:正数 反码和源码相同
负数 符号位是1其余位对原码取反
补码:正数 反码和源码相同
负数 符号位是1 反码+1
测试
#如果是正数都一样
原码 0000 0001
反码 0000 0001
补码 0000 0001
#负数
原码 1000 0001
反码 1111 1110
补码 1111 1111
-7
原码:1000 0111
反码:1111 1000
补码:1111 1001
#2进制标志
2 10
4 100
8 1000
位运算
2*8最高效的运算方式
很多底层的调试器,需要通过位判断cpu状态
与运算(and &)
预算规则:
0&0=0;0&1=0;1&0=0;1&1=1
即:两个同时为1,结果为1,否则为0
例如:3&5
十进制3转为二进制的3:0000 0011
十进制5转为二进制的5:0000 0101
------------------------结果:0000 0001 ->转为十进制:1
即:3&5 = 1
或运算(|)
运算规则:
0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :参加运算的两个对象,一个为1,其值为1。
例如:3|5 即 00000011 | 0000 0101 = 00000111,因此,3|5=7
异或运算符(^)
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个位为“异”(值不同),则该位结果为1,否则为0。
例如:3^5 = 0000 0011 | 0000 0101 =0000 0110,因此,3^5 = 6
位运算的加减乘除
4+5?
0000 0100
0000 0101
---------
0000 1001
#计算机实现原理
#1异或
0000 0100
0000 0101
---------
0000 0001
#2与运算(判断进位,如果结果为零则没有进位)
0000 0100
0000 0101
----------
0000 0100
#3将与运算的结果左移一位
0000 1000
#4异或运算
0000 0001
0000 1000
---------
0000 1001
#5与运算判断是否有进位
0000 0001
0000 1000
-----------
0000 0000
#6结果为与运算为零的上一步的结果
4-5?
4+(-5)
0000 0100
1111 1011
---------
1111 1111 ff
#异或
0000 0100
1111 1011
---------
1111 1111
#与运算
0000 0100
1111 1011
---------
0000 0000
结果:1111 1111 ff