寄存器分类
-
- 寄存器分类
- 通用寄存器(两个八位寄存器)
- AX(可分为)
- AL和AH是作为一个独立的8位寄存器来使用的,和AH没有关系,CPU在执行指令时不会将进位存储在AH中
- 但是,如果执行add ax,93H时会将进位存储到AH中(保证程序兼容性)
- AH
- AL(低位)
- AL和AH是作为一个独立的8位寄存器来使用的,和AH没有关系,CPU在执行指令时不会将进位存储在AH中
- BX
- BH
- BL
- BH
- CX
- CH
- CL
- CH
- DX
- DH
- DL
- DH
- AX(可分为)
- 变址寄存器(执行与地址有关的操作,纯粹的16位寄存器)
- 凡是bx出现的地方,都可以以此替换
- 编程时可以用此来实现两段空间的交互
- SI 源变址寄存器
- DI 目标变址寄存器
- 凡是bx出现的地方,都可以以此替换
- SP 栈顶的偏移地址
- BP 寻址寄存器 ?
- IP 指令指针寄存器(偏移地址)
- 专门存放段地址
- CS 代码寄存器(段地址)
- 同时修改CS、IP内容,使用jmp 段地址:偏移地址
- 同时修改CS、IP内容,使用jmp 段地址:偏移地址
- SS 栈顶段地址
- DS 存放要访问数据的段地址
- ES 附加段寄存器
- CS 代码寄存器(段地址)
- 标志寄存器(16位寄存器,按位起作用)
- 例:PSW
- 作用 :
- 用来储存相关指令的某些执行结果
- 用来为CPU执行相关指令提供行为依据
- 用来控制CPU的相关工作方式
- 用来储存相关指令的某些执行结果
- 直接访问标志寄存器的方法
- pushf:将标志寄存器的值压栈
- popf:从栈中弹出数据,送入标志寄存器中
- pushf:将标志寄存器的值压栈
- ZF(零标志 Zero Flag)
- = 1,表示结果是0,
- = 0,表示结果不是0
- = 1,表示结果是0,
- PF(奇偶标志 Parity Flag)
- 记录二级制位中所有1 的个数
- 1的个数位偶数,PF = 1;
- 1的个数位奇数,PF = 0;
- 记录二级制位中所有1 的个数
- SF(符号标志 Sign Flag)
- 将结果视为有符号数
- 结果为负,SF = 1;
- 结果为非负,SF = 0;
- 将结果视为有符号数
- CF(进位标志 Carry Flag)
- 记录运算结果向更高位的进位值或从更高的位借位,对于无符号数
- 有进位或借位,CF = 1;
- 无进位或借位,CF = 0;
- 记录运算结果向更高位的进位值或从更高的位借位,对于无符号数
- OF(溢出标志 Overflow Flag)
- 有符号数操作指令执行后,
- 有溢出,OF = 1;
- 无溢出,OF = 0;
- 有符号数操作指令执行后,
- DF(方向标志 Direction Flag)
- 在串处理指令中,控制每次操作后si,di的增减
- movesb 以字节为单位传送
- ((es)\times×\times×16+(di)) = ((ds)\times×\times×16+(si))
- ((es)\times×\times×16+(di)) = ((ds)\times×\times×16+(si))
- movesw 以字节为单位传送
- ((es)\times×\times×16+(di)) = ((ds)\times×\times×16+(si))
- ((es)\times×\times×16+(di)) = ((ds)\times×\times×16+(si))
- movesb 以字节为单位传送
- DF = 1,每次操作后si,di递增
- DF = 0,每次操作后si,di递减
- 对DF为进行设置的指令
- cld指令:将标志寄存器的DF为设为0
- std指令:将标志寄存器的DF设为1
- cld指令:将标志寄存器的DF为设为0
- 在串处理指令中,控制每次操作后si,di的增减
- 例:PSW
- 寄存器冲突问题
- 编写调用子程序时,看有没有使用子程序,以避免寄存器的重复使用
- 在编写子程序时,不使用会产生冲突的子程序
- 在子程序使用的寄存器入栈,当子程序使用完时将寄存器出栈(实用性较高)
- 编写调用子程序时,看有没有使用子程序,以避免寄存器的重复使用
- 通用寄存器(两个八位寄存器)
- 寄存器分类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)