汇编CPU运行流程

以下是来自b站小甲鱼汇编讲解中个人对CPU运行流程的理解,因为看到很多人说对CPU流程图突然就懵了不理解,所以说一下自己的怎样理解的:


首先我们先要知道mov和jmp指令的格式:
(1)mov:是数据传送指令,也是最基本的编程指令,
		  用于将一个数据从源地址传送到目标地址(寄存器间的数据传送本质上也是一样的)
		  
	传递数据到寄存器:mov ax,0000   //把0000传送到ax寄存器去
	寄存器间传递数据:mov ax,bx    //把bx中的值传送到ax去
(注:mov在数据与寄存器间传递为3个字节,寄存器间传递是两个字节)2)jmp:是汇编语言中的无条件跳转指令。无条件跳转指令可转到
		  内存中任何程序段
	同时修改CS和IP的值:jmp 段地址:偏移地址
	例:jmp 1000H,0003H   //此时CS=1000H,IP=0003H
	
	只修改IP的值: jmp 某一寄存器
	例:jmp ax   //此时CS 不变 ,IP = ax中的值


注:CS为代码段寄存器
	IP为指令指针寄存器

在这里插入图片描述

在这里插入图片描述

执行的顺序结果为:
(1)mov ax,6622H
(2)jmp 1000:3
(3)mov ax,0000
(4)mov bx,ax
(5)jmp bx
(6)mov ax,0123H
最后又跳回第三步循环下来

一开始我们知道此时CS=2000H,IP=0000H

(1)此时告诉编译器去执行段地址为2000H偏移地址为0000H上的指令
,通过地址加法器得到的物理地址为:20000H;此时就执行

mov ax,6622H
执行后因为数据与寄存器间传递是三个字节的,因此IP加3执行下一条指令

(2)此时的CS = 2000, IP = 0003H,经地址加法器得到物理地址为:20003H;此时执行

jmp 1000:3
此时CS = 1000H; IP = 0003H

(3)此时CS = 1000H; IP = 0003H ;通过地址加法器相加得到物理地址为:10003H,此时执行

mov ax,0000
这里是把0000送到ax寄存器中,CS的值没有变,IP值执行完指令后加3
此时CS=1000H,IP = 0006H

(4)此时CS=1000H,IP = 0006H通过地址加法器相加得到物理地址10006H,此时执行

mov bx,ax
把ax中的值送到bx中,CS值没变,IP值执行完指令后加2(寄存器间传递加2)
此时CS=1000H,IP=0008H

(5)此时把CS=1000H,IP=0008H通过地址加法器相加得到物理地址10008H,此时执行

jmp bx
这里只修改IP的值(不懂得看上面得jmp指令格式),因此CS值不变,IP值变为bx中的值
CS=1000,IP=0000H

(6)此时CS=1000,IP=0000H通过地址加法器相加得到物理地址10000H,此时执行

mov ax,0123H
把0123H的值送入ax寄存器中,执行完该指令后CS不变,IP加3
CS = 1000H,IP= 0003H

最后又从第三步开始执行,执行到最后第六步以后又会跳到10000H物理地址执行里面的指令(即最后会一直循环在物理地址为10000H-10009H间)

若有什么错误的地方麻烦提醒一下,非常感谢

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值