绪论
导学
1)绪论
2)访问寄存器和内存
3)汇编语言程序
4)内存寻址方式
5)流程转移与子程序
6)中断及其应用
7)高级汇编语言技术
为什么要学习汇编语言
所有的高级语言都是在汇编语言之后产生。汇编语言仍发挥着不可替代的作用,主要完成高级语言无法完成的任务。比如说效率,应用于对于速度要求高的模块优化,
应用场景
1)效率
运行效率:开发软件的核心部件,快速执行和实时响应
开发效率:做合适的事,开发效率无敌
2)底层
操作系统的内核
嵌入式系统:家用电器、仪表仪器、物联网
由机器语言到汇编语言
机器语言
1)机器语言是机器指令的集合
2)机器指令时一台计算器可以正确执行的命令
3)机器指令是由一串二进制数表示,例:01010000
汇编语言
1)汇编语言的主体是汇编指令
2)汇编指令和机器指令的差别在于指令的表达方法上
汇编指令时机器指令便于记忆的书写格式
汇编指令是机器指令的助记符,因此汇编指令与机器指令时一一对应的
;将bx值移动到ax中
mov ax,bx
计算机的组成
主板上部件
1)CPU:控制整个计算机的晕死安及控制
2)总线:传输地址、数据、指令
3)内存条:存放数据与指令
4)扩展槽(链接外部设备)
指令和数据的表示
1)存储位置:内存或磁盘上
2)数据和指令本质上都是二进制数据
3)数据展示给用户的具体表示
二进制:110111B
八进制:67O
十进制:55D
十六进制(最常用):37H
计算机的总线
在计算机中专门连接CPU和其他芯片的导线,统称为总线。
1)地址总线:指定存储单元,地址总线的宽度决定了可寻址的范围(宽度:如果有N根地址线,那么地址总线宽度为N)。
2)数据总线:cpu与内存或其他器件之间进行数据传送的物理通道。数据总线的宽度决定了数据传输的速度。
3)控制总线:cpu通过控制总线对外部器件进行控制,控制总线是一些不同控制线的集合,控制总线宽度决定了cpu对外部器件的控制能力。
| CUP | 地址总线宽度 | 寻址能力 | 数据总线宽度 | 一次传送数据 | 读取1KB所需要的次数 |
|---|---|---|---|---|---|
| 8080 | 16 | 640K | 8 | 1B | 1024 |
| 8088 | 20 | 1MB | 8 | 1B | 1024 |
| 8086 | 20 | 1MB | 16 | 2B | 512 |
| 80286 | 24 | 16MB | 16 | 2B | 512 |
| 80386 | 32 | 4GB | 32 | 4B | 256 |
内存的读写与地址空间
CPU想要进行数据的读写,必须与外部器件进行三类信息的交互
1)存储单元的地址(地址信息)
2)器件的选择,读或写命令(控制信息)
3)读或写的数据(数据信息)
将数据从内存读取寄存器的过程
1)地址总线发送数据所在的地址
2)控制总线发送读取命令
3)数据总线将数据从内存传输到寄存器中
将数据从寄存器写入内存的过程
1)地址总线发送数据所需要存放的地址
2)控制总线发送写入命令
3)数据总线将数据从寄存器传输到内存中
什么是内存地址空间
1)CPU地址总线宽度为N,寻址空间为2NB
2)8086CPU的地址总线宽度为20,那么可以寻址1MB个内存单元,其内存空间为1MB(默认对字节进行编址)
3)所有的物理存储器被看做一个由若干存储单元组成的逻辑存储器
4)每个物理存储器在这个逻辑存储器中占有一个物理段,即一段地址空间
5)CPU在这段地址空间中读写数据,实际上就是在相对应的物理存储器中读写数据

汇编语言实践环境的搭建
选择8086的理由
简单,简单,还是简单!!
达成目标
理解计算机底层工作原理
作为继续扩展的基础->80x86汇编、Linux汇编、ARM汇编
学习逆向分析的开端
工具
1)DOS模拟器:DOSBOX
2)8086汇编工作环境(masm)

浙公网安备 33010602011771号