汇编语言学习笔记一:CS和IP寄存器
来源:互联网 发布:三国演义的漏洞 知乎 编辑:程序博客网 时间:2024/05/18 18:55
1、CS是代码段寄存器,IP是指令指针寄存器(相当于偏移地址)。修改CS、IP的指令不同于修改通用的寄存器值的指令,修改通用寄存器的值可以用mov 指令(mav ax,123),mov指令被称为传送指令。修改CS、IP的指令是jmp指令。jmp指令被称为转移指令。
(1)同时修改代码段寄存器和指令指针寄存器,形如jmp 段地址:偏移地址。
jmp2AE3:3,执行后:CS=2AE3H,IP=0003H,CPU将在2AE33H处读取指令
(2)仅想修改IP的内容,形如“jmp 某一合法寄存器”,功能是用某一合法寄存器中的值修改IP的内容
jmpax,指令执行前:ax=1000H,CS=2000H,IP=0003H
指令执行后:ax=1000H,CS=2000H,IP=1000H。
2、一般来说,CPU在访问内存的时候要由相关部件提供内存单元的段地址和偏移地址,送入地址加法器合成物理地址。段寄存器提供段地址。8086CPU有4个段寄存器:CS、DS、ES、SS。典型的提供段地址和偏移地址的寄存器为CS和IP寄存器。也就是说,CPU会将CS:IP合成的物理地址指向的内容当作指令执行。CPU执行指令的步骤一般是:
(1)将CS、IP中的内容送入地址加法器(段地址*16+偏移地址)合成物理地址。
(2)地址加法器将物理地址送入输入输出控制电路
(3)输入输出控制电路将物理地址送上地址总线
(4)然后CPU从物理地址指向的内存单元读取机器指令,并将机器指令通过数据总线送入CPU的输入输出控制电路。
(5)输入输出控制电路将读取的指令送入指令缓冲器,同时IP的内容更新为原内容加指令长度。
(6)然后,执行控制器执行机器指令,并将执行后的内容送入相应的寄存器。
3、在编程时,可以根据需要将一组内存单元定义为一个段。我们可以将长度为N(N<=64KB,因为偏移地址长度为16位,最大为64KB)的一组代码存在一组连续、起始地址为16的倍数的内存单元中。这样,这段内存就可以看成是代码段,用来存放代码的。
4、查看CPU和内存,用机器指令和汇编指令编程,做实验
(1)打开程序调试工具:运行”cmd”->输入debug。
(2)Debug功能
1)用R命令查看、改变CPU寄存器的内容
2)用D命令查看内存中的内容
3)用E命令改写内存中的内容
4)用U命令将内存中的机器指令翻译成汇编指令
5)用T命令执行一条机器指令
6)用Debug的A命令以汇编指令的格式在内存中写入一条机器指令
Normal>(3)输入输出控制电路将物理地址送上地址总线(4)然后CPU从物理地址指向的内存单元读取机器指令,并将机器指令通过数据总线送入CPU的输入输出控制电路。
(5)输入输出控制电路将读取的指令送入指令缓冲器,同时IP的内容更新为原内容加指令长度。
(6)然后,执行控制器执行机器指令,并将执行后的内容送入相应的寄存器。
r命令查看寄存器的内容
r命令修改寄存器的内容(修改了ax、cs、ip寄存器的内容)
d命令查看内存中的内容(d 起始地址),显示分别为地址、地址中的内容、内容的ascll字符形态。
d命令查看某范围的内存内容(形如d1000:0 9)。
e命令改写内存中的内容(e 起始地址数据 数据 数据..)
e命令向内存中写入字符或字符串
e命令向内存中写入机器码,并使用u命令查看机器码对应的汇编
t命令执行执行一条或多条指令(先改变cs、ip寄存器的值)
a命令以汇编指令的形式在内存中写入机器指令,并用d指令查看对应的机器码(之后也可以用t指令执行相应的指令)
- 汇编语言学习笔记一:CS和IP寄存器
- 03CS和IP寄存器
- 8086 CS和IP寄存器
- 汇编语言学习笔记:寄存器(1)
- 汇编语言学习笔记 第一节:寄存器
- 汇编学习笔记---2.3 CS和IP
- 关于x86中的CS 和 IP 寄存器
- 汇编语言--x86 CS IP
- <学习笔记>王爽汇编语言__寄存器
- 《汇编语言》学习笔记 第二章之寄存器
- 汇编语言学习笔记(十一)标志寄存器
- 【学习笔记之汇编语言】【二】寄存器
- 《汇编语言》学习笔记 第二章 寄存器
- 汇编语言学习笔记之通用寄存器
- [汇编语言学习笔记][第二章寄存器]
- 汇编语言学习笔记第二章 寄存器
- 汇编语言学习笔记第二章 寄存器
- 汇编语言学习笔记1.0-(基础知识、寄存器)
- (*(volatile unsigned int *))详解
- AES加密测试原码
- 热更新学习笔记(一)
- 下载谷歌浏览器离线安装包
- java web应用分布式改造方案
- 汇编语言学习笔记一:CS和IP寄存器
- 在登录界面中:Form表单中action和onsubmit事件的执行顺序!
- leetcode 316. Remove Duplicate Letters
- Studio简易操作
- MySQL索引浅谈
- 大学极为关键的这一年,考研or工作?
- 破解华为三层交换机Console密码
- laravel ping+微信扫码
- vue绑定图片路径数据问题