汇编语言(王爽) 第2章 寄存器
一、段寄存器
数据寄存器:地址寄存器
段地址寄存器:偏移地址寄存器
ds sp
es bp
ss si
cs di
ip
bx
8086CPU给了它20根地址线 0000 0000 0000 0000 ~ 1111 1111 1111 1111,0 ~ FFFFH
地址线的数量决定了CPU的寻址能力
段地址 * 16(10H) + 偏移地址 = 物理地址
段地址 * 16 = 基础地址
基础地址 + 偏移地址 = 物理地址
举例
先走2000m到 体育馆 再走 826m 到 图书馆(2826m)
基础地址:2000m
偏移地址:826m
物理地址:2826m
debug调试指令工具
u指令:将某个内存地址 开始的字节 全部以指令形式查看
d指令:将某个内存地址 开始的字节 全部以数据形式查看
e指令:修改某个内存地址的数据
r指令:查看和改变寄存器中的内容
a指令:以汇编指令的格式在内存中写入一条汇编指令
t指令:执行当前CS:IP所指向的机器指令
CPU如何区分指令和数据?
8086CPU中,在任意时刻,CPU将CS:IP所指向的内容 全部当做指令来执行
指令和数据在内存中本身没有区别,都是二进制;
CS:IP决定了CPU从哪里开始读取指令
一条指令由多个字节构成,指令是有长度的
与IP寄存器有关
指令的执行过程:
- CPU从CS:IP所指向的内存单元读取指令,存放到指令缓存器中
- IP自增,IP = IP + 所读取指令的长度,从而指向下一条指令
- 执行指令缓存器中的内容,回到第一步
转移指令:jmp
转移指令,可以修改CS和IP的值
jmp 2000:0
指令的执行过程为什么设计成这样?
为了实现函数的调用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)