【汇编先导】-- 1
2023-12-19 23:16:26
汇编先导
学习目录
- 语言
- 进制及其运算
- 二进制、量子计算
- 数据宽度
- 有/无符号数
- 原码、反码、补码
- 位运算
- 汇编及其工具
- 寄存器、内存
- 汇编指令
- 内存复制、堆栈指令
- 汇编写函数、堆栈传参、堆栈平衡
- 外挂
实际上,每种进制都有一套各自的运算体系(表),类似于十进制常用的九九乘法表,各种进制也有各自的加法表和乘法表!
计算机只做加法!机器语言就是位运算!通过电路来实现,这就是计算机最底层的本质。通过机器语言来实现加法计算器、设计电路。
1. 数据宽度
C和C++都需要定义数据的类型。计算机底层需要给这些数据进行定义宽度。
位(bit) 0 1
字节(Byte) 0~0xFF
字(Word) 0~0xFFFF
双字(DWord) 0~0xFFFFFFFF
2.有/无符号数
2.1 无符号数规则
给出的数字是什么就是什么(最高位无关符号位)
2.2 有符号数规则
给出的数字最高位是符号位:1代表负数,0代表正数
3. 原码、反码、补码
- 正数的原码、反码、补码均一致
- 负数的反码符号位是1,其余按位取反;负数的补码是其反码+1
4. 位运算
问题:2*8最高效的计算方式??
4.1 与and(&)
4.2 或or(|)
4.3 异或xor(^)
4.4 非not(~)
4.5 移位
- 左移shl(<<):所有二进制位全部左移若干位,高位丢弃、低位补0
- 右移shr(>>):所有二进制位全部右移若干位,低位丢弃、高位补0/1(由符号位决定)
4.6 位运算实现加减乘除
举例:4+5的计算过程在计算机底层是如何实现的?
0000 0100
0000 0101
-----------
0000 1001
# 计算机是如何运算上式的!计算机的实现原理
# 第一步,异或:如果不考虑进位,异或可以直接得出结果
0000 0100
0000 0101
-----------
0000 0001
# 第二步,与:判断计算过程是否产生进位。如果与运算结果为0则无进位
0000 0100
0000 0101
-----------
0000 1100
0000 0100
# 第三步,将与运算结果左移一位:
0000 0100 -> 0000 1000 # 此即进位结果
# 第四步,异或:第一次的异或结果和上一步的进位结果相异或
0000 0001
0000 1000
-----------
0000 1001 # 最终结果!!!
# 第五步,与:再次判断是否产生进位!如此反复!
0000 0001
0000 1000
-----------
0000 0000
# 最终的计算结果就是与运算为0的上一个异或运算结果
5. 汇编语言
通过汇编指令来代替二进制编码:可以给计算机发一些操作,然后让计算机执行。编译器!
学习汇编之前,需要先掌握环境的配置。(1.Vc6:程序到汇编的理解;2.OD;3.抓包工具;4.加密解密工具) 学习汇编并非是为了写代码,而是理解程序的本质。
文章来源:https://blog.csdn.net/qq_51916086/article/details/135091732
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!