汇编语言入门#1 学习记录

进制的思想本质

二进制?0 1

进制

1进制:一进一,结绳记事。1111

2进制:二进一,0 1

8进制:8个符号组成 0 1 2 3 4 5 6 7

量子计算机

量子计算机的单位:昆比特(量子比特)

光子:正交偏振方向

磁场:电子的自旋方向。

二进制: 0 1
0 1 10 11 100 101 110 111 1000 1001 1010 1011 1101 1110 1111

二进制这样写麻烦 16进制为简写

0123456789abcdef16进制:0123456789abcdef

汇编高级

了解程序的深层!

数据宽度

1byte = 8bit

C和C++ Java都需要定于数据的类型,计算机底层需要我们给这些数据定义宽度。

位 0 1

字节 0-0xFF

字 0-0xFFFF

双字(DWORD,全称Double Word,每个word为2个字节的长度,是指计算机中数值的位数(4字节,32位)。)

在计算机中,每一个数据都需要给它定义类型。给它定义宽度。

有符号数和无符号数

数据都是有宽度的。每个数据代表什么?

0 1 0 1 0 1 0 1

规则,二进制解码增加一个规则。

无符号数规则

1 0 0 1 1 0 1 0 0x9A 

有符号数规则

最高位是符号位:1(负数)0(正数)

01如何转换?

原码反码补码

编码规则

有符号数的编码规则

原码:最高位符号位,对齐它的位进行本身绝对值。

反码:

  • 正数:反码和原码相同
  • 负数:符号位一定是1,其余位对原码取反。

补码:

  • 正数:反码和原码相同

  • 负数:符号位一定是1,反码+1。

# eg为8位
1
#原码 0 0 0 0  0 0 0 1
#反码 0 0 0 0  0 0 0 1
#补码 0 0 0 0  0 0 0 1

-1
#原码 1 0 0 0  0 0 0 1
#反码 1 1 1 1  1 1 1 0
#补码 1 1 1 1  1 1 1 1

-7
#原码 1 0 0 0  0 1 1 1
#反码 1 1 1 1  1 0 0 0
#补码 1 1 1 1  1 0 0 1

寄存器:内存 数值

​ mov(指令) 寄存器(eax) 数值

位运算

2*8最高效计算方式

与(and):两个为1 结果为1

1011
1101
-------------------------and
1001

或(or)运算:只要有一个为1 结果为1

异或(xor^)运算:不相同为1

1011 0001 
1101 1000
------------ 异或运算
0110 1001

非运算:0就是1,1就是0.

位运算(移动位,左移乘二,右移除2)
0000 0001  1
0000 0010  2
0000 0100  4
0000 1000  8

左移:(shl <<)

0000 0001  所有的二进制位全部左移若干位,高位丢弃,低位补0
0000 0010

右移:(shr >>)

0000 0001  所有的二进制位全部右移若干位,低位丢弃,高位根据符号位决定
0000 0000

位运算的加减乘除

计算机只认识0和1

基本数学是建立在加减乘除上

4+5?

0000 0100
0000 0101
---------加法
0000 1001

# 计算机的实现原理

#第一步 异或,不考虑进位,异或可以直接出结果。
0000 0100
0000 0101
----------
0000 0001
#第二步 与运算,判断进位(如果与运算结果为0,没有进位)
0000 0100
0000 0101
----------
0000 0100
#第三步 将与运算的结果左移一位。
0000 1000
#第四步:异或
0000 0001
0000 1000
------------
0000 1001
#第五步 与运算(判断进位,如果与运算结果为0,没有进位)
0000 0001
0000 1000
-------------
0000 0000

#最终结果是与运算的结果的上一个异或运算

4-5?

4+(-5)

0000 0100
1111 1011  0000 0101  0变1 1变0 最后+1
-----------
1111 1111 ff=-1

#异或
0000 0100
1111 1011
---------
1111 1111

#与
0000 0100
1111 1011
---------
0000 0000

通用寄存器

在PC用的16位CPU 8086、8088中,寄存器的名字分别是AX(累加器),BX(基址寄存器),CX(计数寄存器),DX(数据寄存器),SP(堆栈指针),BP(基址指针),SI(源变址寄存器),DI(目的变址寄存器),IP(指令指针),等等……

寄存器:CPU>内存>硬盘

32位CPU 8 16 32

64位CPU 8 16 32 64

低八位高八位

内存

寄存器很小不够用,所以放到内存中

每个应用都有4G内存空间。

程序运行才从到物理内存

每个地址都有一个编号,可以通过编号往里面存值 指针–

如何存值?

数据宽度:byte word dword

地址的位置:0xFFFFFFFF

,等等……

寄存器:CPU>内存>硬盘

32位CPU 8 16 32

64位CPU 8 16 32 64

低八位高八位

内存

寄存器很小不够用,所以放到内存中

每个应用都有4G内存空间。

[外链图片转存中…(img-rHZdK97s-1629972510600)]

程序运行才从到物理内存

每个地址都有一个编号,可以通过编号往里面存值 指针–

如何存值?

数据宽度:byte word dword

地址的位置:0xFFFFFFFF

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值