《微机原理与接口》 研究PC机及CPU物理结构和编程结构的全面研究
《组成原理》计算机一般结构、功能、性能的研究
《汇编语言》如何利用硬件系统的编程结构和指令集有效灵活地控制系统进行工作。
汇编语言书籍:
汇编语言 王爽
汇编语言的工作过程
第一步:编写源程序
// 1.asm assume cs:codesg codesg segment ;定义一个段,段的名称为"codesg", 这个段从此开始 mov ax, 0123H mov bx, 0456H add ax, bx add ax, ax mov ax, 4c00H int 21H codesg ends ; 名称为"codesg"的段到此结束 end ; 汇编程序序的结束
程序解释:
汇编程序由汇编指令与伪指令组成。
汇编指令由机器执行,伪指令由编译器执行。
assume 伪指令 表示某一段寄存器和程序中的某一个segment..ends 定义的段相关联。
segment 与 ends 是成对使用的伪指令,功能是定义一个段, codesg 是段名,可以任意定义。
end 也是伪指令,表示汇编程序的结束
第二步: 编译源程序
使用DosBox masm 5.0 编译环境
mount C /usrs/David/Documents/masm
C:
第1步:调用 masm 程序
第2步:编译,输入源文件名,不用后缀
C:src2.asm
输入源文件后,会提示输入目标文件名称
程序编译后,会生成一个2.obj 的目标文件
第3步:连接,生成.exe 可执行文件
调用 link 程序
连接的作用:
1. 当源程序很大时,可以分为多个源文件来编译,每个源程序编译成目标文件后,再用连接程序将它们连接到一起,生成一个可执行文件。
2. 当程序中调用了某个库文件中的子程序,需要将这个库文件和该程序生成的目标文件连接到一起,生成一个可执行文件。
问题: 谁将可执行文件中的程序装载进入内存并使它运行?
CPU 向 内存 读取数据的过程
第一步:CPU 通过地址总线向内存地址发出
第二步:CPU 通过控制总线将读写命令发出
第三步:CPU 通过数据总线与内存进行读写数据
汇编语言程序具有访问和控制CPU组件的能力,处理器的主要组件分类:
* 控制单元
* 执行单元
* 寄存器
* 标志
一个CPU有N根地址线,则可以说这个CPU的地址总线宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。
数据总线的宽度决定了CPU和外界的数据传送速度。8根数据总线一次可传送一个8位二进制数据(即一个字节)。16根数据总线一次可传送2个字节。
控制总线的数量,决定了CPU提供了对外部器件的多少种控制。
主板与内存的概念
内存地址空间的概念
要完整的描述一个内存单元,需要两种信息:
内存单元地址
内存单元长度
开发环境
汇编器(MASM, NASM, GAS, HLA)
连接器
调试器
高级语言的编译器
目标代码反汇编器
用于优化的简档生成工具
安装 binutils
https://www.gnu.org/software/binutils/binutils.html