汇编语言(王爽) 第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所指向的机器指令
image

CPU如何区分指令和数据?

8086CPU中,在任意时刻,CPU将CS:IP所指向的内容 全部当做指令来执行
指令和数据在内存中本身没有区别,都是二进制;
CS:IP决定了CPU从哪里开始读取指令

一条指令由多个字节构成,指令是有长度的

与IP寄存器有关

指令的执行过程:

  1. CPU从CS:IP所指向的内存单元读取指令,存放到指令缓存器
  2. IP自增,IP = IP + 所读取指令的长度,从而指向下一条指令
  3. 执行指令缓存器中的内容,回到第一步

转移指令:jmp

转移指令,可以修改CS和IP的值
jmp 2000:0
image

指令的执行过程为什么设计成这样?

为了实现函数的调用

posted @ 2022-05-04 11:44  安河桥北i  阅读(98)  评论(0)    收藏  举报