【汇编语言】call 和 ret 指令(一) —— 探讨汇编中的ret和retf指令以及call指令及其多种转移方式
ret 和 retf 1.1 ret 指令 1.1.1 功能与理解 CPU执行ret指令时,进行下面两步操作: (1)(IP)=((ss)*16+(sp)) (2)(sp)=(sp)+2 如果我们用汇编语法来解释ret指令,则: 1.1.2 程序演示 下面的程序中,ret 指令执行后,(IP)=0,CS:IP指向代码段的第一条指令。 assume cs:code stack segment db 1...
【汇编语言】数据处理的两个基本问题 —— 汇编语言中的数据奥秘:数据位置与寻址方式总结
述性符号 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 分...
【汇编语言】数据处理的两个基本问题(二) —— 解密汇编语言:数据长度与寻址方式的综合应用
公司基本信息)2.2 提出问题(公司信息的变化)2.3 问题的分析与求解2.3.1 分析要修改的数据2.3.2 确定修改方法 2.4 程序的实现2.5 用C语言来描述这个程序2.6 根据C语言风格修改汇编程序2.7 总结 结语 前言 1. 指令要处理的数据有多长? 对于这个问题,汇编语言中用以下方法处理。 1.1 通过寄存器指明数据的尺寸 通过使用8位寄存器还是16位寄存器,来进行字操作还是字节操作。...
【汇编语言】数据处理的两个基本问题(三) —— 汇编语言的艺术:从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与位移的深度解读
x)=0,什么也不做(程序向下执行)。 3. 根据位移进行转移的意义 3.1 为什么? 前面我们讲到: jmp short 标号jmp near ptr 标号jcxz 标号loop 标号 等几种汇编指令,它们对 IP的修改是根据转移目的地址和转移起始地址之间的位移来进行的。 在它们对应的机器码中不包含转移的目的地址,而包含的是到目的地址的位移距离。 3.2 举例说明 例如: 这段程序装在内存中的...
【汇编语言】标志寄存器(二) —— 标志位驱动的计算:ADC、SBB 和 CMP 的巧妙应用
前言 文章目录 前言1. abc 指令1.1 功能介绍1.2 举例说明1.3 为什么要提供这样的指令?1.3.1 CF值的含义1.3.2 示例演示1.3.3 得出结论 1.4 例1——对大的数据进行相加1.4.1 问题描述1.4.2 问题的分析与解答 1.5 例2——对更大的数据进行相加1.5.1 问题描述1.5.2 问题的分析与解答 1.6 例3——对更大更大的数据进行相加1.6.1 题目描述1....
【汇编语言】标志寄存器(一) —— 标志寄存器中的标志位:ZF、PF、SF、CF、OF 一网打尽
前言 文章目录 前言1. 标志寄存器1.1 功能概述1.2 8086CPU中的标志寄存器 2. ZF 标志2.1 功能介绍2.2 举例说明2.3 注意事项 3. PF 标志3.1 功能介绍3.2 举例说明 4. SF 标志4.1 功能介绍4.2 举例说明4.3 有/无符号数和补码4.4 补充说明 5. CF 标志5.1 功能介绍5.2 什么是更高位?5.3 举例说明5.3.1 进位的情况5.3.2 ...
【汇编语言】call 和 ret 指令(三) —— 深度解析汇编语言中的批量数据传递与寄存器冲突
文章目录 前言1. 批量数据的传递1.1 存在的问题1.2 如何解决这个问题1.3 示例演示1.3.1 问题说明1.3.2 程序实现 2. 寄存器冲突问题的引入2.1 问题引入2.2 分析与解决问题2.2.1 字符串定义方式2.2.2 分析子程序功能2.2.3 得到子程序代码 2.3 子程序的应用2.3.1 示例12.3.2 示例2 3. 寄存器冲突问题的发现与解决3.1 重看代码3.2 分析与解决...