【汇编语言】更灵活的定位内存地址的方法(一)—— 字符操作: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 重新思考问题,寻找解决方...
【汇编语言】包含多个段的程序(一)—— 在代码段中使用数据和栈
文章目录 前言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 重要说明 ...
【汇编语言】包含多个段的程序(二)—— 将数据、代码、栈放入不同的段
文章目录 前言1. 存在的两个问题2. 解决办法3. 示例代码3.1 程序说明3.1.1 定义多个段的方法3.1.2 对段地址的引用3.1.3 各种段完全是我们的安排 4. 总结结语 前言 1. 存在的两个问题 在前面的内容中,我们在程序中用到了数据和栈,将数据、栈和代码都放到了一个段里面。我们在编程的时候要注意何处是数据,何处是栈,何处是代码。 这样做显然有两个问题: (1)把它们放到一个段中使程序显...
【汇编语言】数据处理的两个基本问题(二) —— 解密汇编语言:数据长度与寻址方式的综合应用
1 分析要修改的数据2.3.2 确定修改方法 2.4 程序的实现2.5 用C语言来描述这个程序2.6 根据C语言风格修改汇编程序2.7 总结 结语 前言 1. 指令要处理的数据有多长? 对于这个问题,汇编语言中用以下方法处理。 1.1 通过寄存器指明数据的尺寸 通过使用8位寄存器还是16位寄存器,来进行字操作还是字节操作。 1.1.1 字操作 下面的指令中,寄存器指明了指令进行的是字操作: mov ax,...
【汇编语言】数据处理的两个基本问题(三) —— 汇编语言的艺术:从div,dd,dup到结构化数据的访问
文章目录 前言1. div指令1.1 使用div时的注意事项1.2 使用格式1.3 多种内存单元表示方法进行举例1.4 问题一1.5 问题一的分析与求解1.5.1 分析1.5.2 程序实现 1.6 问题二1.7 问题二的分析与求解1.7.1 分析1.7.2 程序实现 2. 伪指令 dd2.1 什么是dd?2.2 问题三2.3 问题三的分析与求解2.3.1 分析2.3.2 程序实现 3. dup3.1 什...
【汇编语言】转移指令的原理(三) —— 汇编跳转指南:jcxz、loop与位移的深度解读
文章目录 前言1. jcxz 指令1.1 什么是jcxz指令1.2 如何操作 2. loop 指令2.1 什么是loop指令2.2 如何操作 3. 根据位移进行转移的意义3.1 为什么?3.2 举例说明 4. 编译器对转移位移超界的检测结语 前言 1. jcxz 指令 1.1 什么是jcxz指令 对IP的修改范围都为-128~127。 指令格式:jcxz 标号(如果(cx)=0,则转移到标号处执行。) ...
【汇编语言】数据处理的两个基本问题 —— 汇编语言中的数据奥秘:数据位置与寻址方式总结
述性符号 2. bx、si、di和bp2.1 通过"[...]"来寻址,只有这四种寄存器2.2 四种寄存器寻址时的组合方式2.3 使用bp时,默认段地址为ss 3.机器指令处理的数据在什么地方?4. 汇编语言中数据位置的表达4.1 立即数(idata)4.2 寄存器4.3 段地址(SA)和偏移地址(EA) 5. 寻址方式结语 前言 1. 引言 1.1 两个基本问题 本章对前面的所有内容是具有总结性的。我们...
【汇编语言】更灵活的定位内存地址的方法(三)—— 不同的寻址方式的灵活应用
文章目录 前言1. 比较不同的寻址方式2. 问题一3. 问题一的分析与求解3.1 分析3.1.1 数据的存储结构3.1.2 分析处理过程 3.2 代码实现 4. 问题二5. 问题二的分析与求解5.1 分析5.1.1 数据的存储结构5.1.2 分析处理过程 5.2 代码实现 6. 问题三7. 问题三的分析与求解7.1 分析7.2 代码实现7.2.1 分析实现的代码7.2.2 改进后的程序7.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条指令的过...