汇编CPU运行流程

    科技2022-07-15  123

    以下是来自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间)

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

    Processed: 0.018, SQL: 8