目录
一、基础知识
-
汇编语言的组成
-
存储单元
CPU对存储器的读写
- 地址总线
寻址,指定存储单元。
宽度,决定了可操作的存储单元的个数。 - 数据总线
宽度,决定了传递速度。 - 控制总线
宽度,决定了CPU对外部器件的控制能力。
内存地址空间
假想的逻辑存储器
二、寄存器
-
通用寄存器
在进行数据传送或运算时,要注意指令的两个操作对象的位数就当是一致的。 -
物理地址
-
段的概念
编程时将若干连续的内存单元叫做段,是一种人为规定的逻辑概念。 -
段寄存器
存放段地址的寄存器,有CS、DS、SS、ES. -
关键寄存器CS和IP(指令执行相关)
CS:代码段寄存器
IP:指令指针寄存器
*在8086PC机中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M16+N单元开始,读取一条指令并执行。**
修改CS/IP :jmp指令
- 代码段
- DosBox的使用
三、寄存器(内存访问)
-
字
-
DS
存放段地址 -
CPU提供的栈机制
SS与SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任意时刻,SS:SP指向栈顶元素。
入栈时,栈顶由高地址向低地址方向增长。
注意栈顶越界的问题
四、第一个程序
- 源程序
程序返回
数据不能以字母开头 - 编译
- 可执行文件加载过程
程序段前缀PSP:https://zhuanlan.zhihu.com/p/483606398, 占100H(256)个字节,程序加载时DS会指向PSP的首地址。
五、[bx]与loop
- 段前缀
- 内存安全
不可随意的向一段内存写入数据
六、包含多个段的程序
七、更灵活的内存地址定位方法(cpu寻址)
-
定义字符串数据
db '...'
-
[bx+idata]数组处理
八、数据处理的两个基本问题
- 数据位置
指令执行前,所处理的数据所在的位置 :CPU内部、内存、端口。
3个概念用于数据位置的表达:
1)立即数(idata)
在汇编指令中直接给出,执行前位于CPU指令缓冲器中。
2) 寄存器
3)段地址(EA)和偏移地址(SA)
存放段地址的寄存器可以通过段前缀指定,如不指定,不同的指令的默认段寄存器不一样的。 - 寻址方式
https://blog.csdn.net/m0_62783065/article/details/127526748九、转移指令原理
转移指令分类
- jmp
- jcxz
- loop
十、CALL和RET指令
十一、标志寄存器
十二、内中断
- 内中断的产生
- 中断处理程序
- 中断向量表
- 中断过程
十三、int指令
十四、端口
十五、外中断
十六、直接定址表
0 条评论