【汇编语言】包含多个段的程序(一)—— 在代码段中使用数据和栈
文章目录 前言1. 引言2. 在代码段中使用数据2.1 问题引入2.2 代码实现2.3 代码分析2.3.1 提出问题2.3.2 编译、链接、加载、查看程序2.3.3 查看内存内容2.3.4 正确的执行程序 2.4 面临的问题2.5 改进代码2.5.1 程序的执行过程2.5.2 CPU如何知道第一条执行什么指令? 2.6 程序的框架 3. 在代码段中使用栈3.1 问题引入3.2 代码实现3.3 重要说明 ...
【汇编语言】更灵活的定位内存地址的方法(一)—— 字符操作:and与or指令、ASCII码及大小写转换
文章目录 前言1. and和or指令1.1 and指令1.2 or指令 2. 关于ASCII码3. 以字符形式给出的数据3.1 示例代码3.2 分析代码3.2.1 相关代码的含义3.2.2 查看代码段中的内容 4. 大小写转换的问题4.1 问题引入4.2 问题代码4.3 分析与解决问题4.3.1 对比ASCII码值寻找规律4.3.2 探讨程序流程4.3.3 面临的问题4.3.4 重新思考问题,寻找解决方...
【汇编语言】内中断(二) —— 安装自己的中断处理程序:你也能控制0号中断
文章目录 前言1. 编程处理0号中断1.1 效果演示1.2 分析所要编写的中断处理程序1.2.1 引发中断1.2.2 中断处理程序1.2.3 中断处理程序do0应该存放的位置1.2.4 中断向量表的修改1.2.5 总结 1.3 程序框架1.4 注意事项1.5 从CPU的角度看中断处理程序1.6 一些问题的思考与解答 2. 安装2.1 使用movsb指令2.2 明确执行rep movsb前所设置的信息2....
【汇编语言】内中断(三) —— 中断探险:从do0到特殊响应的奇妙旅程
文章目录 前言1. do01.1 do0程序1.2 存放字符串,得到完整的程序1.3 分析初步完成的程序1.4 正确的完整程序1.5 分析正确的完整程序 2. 设置中断向量3. 单步中断3.1 什么是单步中断?3.2 CPU为什么要提供单步中断3.2.1 思考一下Debug功能3.2.2 Debug是如何利用单步中断的3.2.3 可能的问题以及如何解决的 4. 响应中断的特殊情况4.1 说明情况4.2 ...
【汇编语言】int指令(一)—— 中断与栈的联动机制:透视int与iret的核心原理
文章目录 前言1. int 指令1.1 格式以及功能1.2 举例说明1.2.1 源程序1.2.2 分析源程序 1.3 总结 2. 编写供应用程序调用的中断例程2.1 实例一2.1.1 问题2.1.2 分析与解答 2.2 实例二2.2.1 问题2.2.2 分析与解答 3. 对int、iret和栈的深入理解3.1 问题引入3.2 分析3.2.1 中断例程应该具备的功能3.2.2 如何实现目标地址的转移? 3...
【汇编语言】[BX]和loop指令(四)—— 汇编语言中的段前缀与内存保护:原理与应用解析
元的长度为2字节(字单元),存放一个字,偏移地址为0,段地址在cs中。 1.2 总结 这些出现在访问内存单元的指令中,用于显式地指明内存单元的段地址的“ds:”、“cs:”、“ss:”或“es:”,在汇编语言中称为。 2. 一段安全的空间 2.1 存在的问题 在8086式中,随意向一段内存空间写入内容是的,因为这段空间中可能存放着重要的系统数据或代码。比如下面的指令: mov ax,1000hmov d...
【汇编语言】寄存器(CPU工作原理)(五)—— 段寄存器以及CS和IP
初始状态,展示了8086CPU读取、执行一条指令的过程。注意每幅图中发生的变化(下面对8086CPU的描述,是在逻辑结构、宏观过程的层面上进行的,目的是使读者对CPU工作原理有一个清晰、直观的认识,为汇编语言的学习打下基础。其中隐蔽了CPU的物理结构以及具体的工作细节)。 下面的一组图(图 2.20~图 2.26),以上面的图 2.19 的情况为初始状态,展示了 8086CPU 继续读取、执行3条指令的过...
【汇编语言】寄存器(CPU工作原理)(三)—— 物理地址,16位结构CPU以及8086CPU给出物理地址的方法
文章目录 前言1. 物理地址2. 16位结构的CPU3. 8086CPU给出物理地址的方法4. 由段地址×16引发的血案……结语 前言 文章主要内容:分析物理地址及其组成,16位结构的CPU,探讨8086 CPU如何生成物理地址。 1. 物理地址 CPU访问内存单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称...
【汇编语言】寄存器(CPU工作原理)(四)—— “段地址x16 + 偏移地址 = 物理地址”的本质含义以及段的概念和小结
。 2. 段的概念 “段地址”这个名称中包含着“段”的概念。这种说法可能对一些学习者产生了误导,使人误以为内存被划分成了一个一个的段,每一个段有一个段地址。如果我们在一开始形成了这种认识,将影响以后对汇编语言的深入理解和灵活应用。 其实,内存并没有分段,,由于8086CPU用“基础地址(段地址x16)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。如下图所示,我们可...
【汇编语言】寄存器(CPU工作原理)(二)—— 汇编指令的基础操作
文章目录 前言正文——(一气呵成解决本文内容)结语 前言 文章主要内容:几条基础的汇编指令的讲解,例如 MOV、ADD 等常用指令。 正文——(一气呵成解决本文内容) 通过汇编指令控制 CPU 进行工作,看一下下表中的几条指令。 接下来看一下CPU执行下表中的程序段的每条指令后,对寄存器中的数据进行的改变。 示例1: 指令执行后 AX 中的数据为多少?思考后看下列分析。 示例2: 指令执行后 AX中的数...