一、add指令执行过程?
ADD指令,是一种计算机指令,含义为两数相加(不带进位)。OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,而且还可以是任意一个存储器操作数。
指令形式: ADD EA
1. 取指
把PC的内容(指令地址)装入地址寄存器(AR),送上地址总线,由地址总线找到对应的主存,取出指令码,然后通过数据总线将指令码传给CPU的指令寄存器(IR)。
2. 分析
把IR中的指令交给译码器译码,识别出这是一条AC与主存数据相加的指令,将指令中的EA输出到地址总线,地址总线在加法指令的控制下从主存读出数据,然后将读出的数据通过数据总线送到CPU的暂存寄存器(TR)中。
3. 执行
将AC中的数据和TR中的数据传入运算中心(ALU)进行加法运算,再将计算之和通过数据总线传给AC,结束指令。
二、MOV指令的执行过程?
moV指令是存取数据指令,cpu主要是跟寄存器和内存打交道,可以进行两种寻址方式的操作:直接寻址和间接寻址;指令类型主要是:将立即数取入指定数据寄存器;将直接地址中的数据取入指定数据寄存器;将指定寄存器内的数据存入指定的地址中;将指定寄存器内的数据放入地中址寄存器指定的内存中。
三、cpu执行STI指令的过程?
cpu执行指令的过程详解
计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。
取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。
分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。
计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。
一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。
四、计算机执行一条指令的步骤是取指令和执行指令……?
先对上图进行说明:
CO,J,CE为程序计数器的输出允许,输入允许,加1 允许控制线
AI,AO是寄存器A的输入允许,输出允许
那么其他的线相应控制着其他的寄存器。
开始
这里有三行汇编指令:
LDA 0x01 ; 把寄存器A设置为1
ADD 15 ; A+ 15
OUT : 把结果输出
这个指令对应的机器码是我们人为规定的,我们规定:LDA为0001,
那么汇编指令对应的机器码为:0001 0001
我们把这个机器码放在内存的地址0x00处
规定ADD对应的机器码为0010, 15对应1111,所以这条指令的机器码为:0010 1111
将这条指令存放在 内存地址0x01处
规定OUT这条指令的机器码为0011 那么这条执行对应的机器码为 0011 xxxx, 这里xxxx就是任意值的意思,我们把0011 xxxx放在内存地址的0x10处。
这样在内存地址0x00: 0001 0001
这样在内存地址0x01: 0010 11111
这样在内存地址0x02: 0011 xxxx
这3个字节就是我们上面的3行汇编代码对应的机器码
计算机上电后,
在第1个计算机时钟的上升沿:程序计数器为0,我们控制程序计数器将数值0输出到总线,并控制内存地址寄存器从总线获取到0
在第2个计算机时钟的上升沿:设定内存RAM为可输出,指令寄存器为可输入。由于内存地址寄存器中为0,所以内存此时输出地址0处的内容到指令寄存器IR中,IR中的内容就改变为:0001 0001. 同时控制程序计数器加1.
在第3个计算机时钟的上升沿:设置 IR的数据可输出,这样IR的后半部分0001代表的数字1就放到了总线上。 由于 IR的前半部分是0001,这个经过cpu控制器的解码,会设置寄存器A为可输入,这就将总线上的数据0读入到了寄存器A中。cpu控制器的作用就是将LDA对应的编码0001 转换成一串01,这串01,控制所有的寄存器,内存,但是这里我们只将IR可输出控制线 设置为1,设置A可输入控制线设置为1。其他的寄存器都设为不允许。
在第4个计算机时钟的上升沿:程序计数器为1,我们控制程序计数器将数值1输出到总线,并控制内存地址寄存器从总线获取到1
在第5个计算机时钟的上升沿:设定内存RAM为可输出,指令寄存器为可输入。由于内存地址寄存器中为1,所以内存此时输出地址1处的内容到指令寄存器IR中,IR中的内容就改变为:0010 1111. 同时控制程序计数器pc加1=2.
在第6个计算机时钟的上升沿:设置 IR的数据可输出,这样IR的后半部分1111代表的数字15就放到了总线上。 由于 IR的前半部分是0010,这个经过cpu控制器的解码,会设置寄存器B为可输入,这就将总线上的数据15读入到了寄存器B中。cpu控制器的作用就是将ADD对应的编码0010 转换成一串01,这串01,控制所有的寄存器,内存,但是这里我们只将IR可输出控制线 设置为1,设置B可输入控制线设置为1。其他的寄存器都设为不允许。 由于A和B都连在累加器ALU上,所以此时ALU已经完成了A+B=1+15=16的结果。
在第7个计算机时钟的上升沿:程序计数器为2,我们控制程序计数器将数值2输出到总线,并控制内存地址寄存器从总线获取到2
在第8个计算机时钟的上升沿:设定内存RAM为可输出,指令寄存器为可输入。由于内存地址寄存器中为1,所以内存此时输出地址1处的内容到指令寄存器IR中,IR中的内容就改变为:0011 xxxx 同时控制程序计数器pc加1=3.
在第9个计算机时钟的上升沿: 由于 IR的前半部分是0011,这个经过cpu控制器的解码,会设置寄存器ALU为可输输出,这就将16输出到了总线上。同时设置OUT寄存器为可输入,这就将16输入到了OUT中,就会把16显示出来。 cpu控制器的作用就是将OUT对应的编码0011 转换成一串01,这串01,控制所有的寄存器,内存,但是这里我们只将ALU可输出控制线 设置为1,设置OUT可输入控制线设置为1。其他的寄存器都设为不允许。 这样OUT和显示器直接相连,这就完成了数字16的显示。
以上就是三句代码在CPU里的执行过程了。
注意到 在第1/4/7个计算机时钟的上升沿,我们总是控制内存地址寄存器MAR从程序计数器PC获取数据
注意到 在第2/5/8个计算机时钟的上升沿,我们总是控制从内存从拿出地址对应的值到指令寄存器IR中。
第1,2两个时钟上升沿,完成了把指令LDA 0x01对应的机器码00010001读取到指令寄存器IR中。
第4,5两个时钟上升沿,完成了把指令ADD 15对应的机器码0010 1111读取到指令寄存器IR中。
第7,8两个时钟上升沿,完成了把指令OUT对应的机器码0011xxxx 读取到指令寄存器IR中。
也就是说,我们写的代码就是这样,一句一句的被读入指令寄存器的。
代码读入指令寄存器后,指令寄存器中高位4个值就会输入到cpu控制器中,cpu在控制器就会输出相应的控制动作,打开某些寄存器的输入口,输出口等。
这些动作都在第3,6,9个时钟周期实现。
由于每执行一句代码,总是需要先花费两个时钟的上升沿,将指令码和操作数读区到指令寄存器IR中,所以,我们有了微指令周期的概念。
比如我们这里一个微指令周期内,就包含3个时钟上升沿.
在一个微指令周期内,先用两个时钟上升沿,将具体的指令码读取到指令寄存器IR中,然后再用1个时钟上升沿,去根据指令机器码对应的控制逻辑,去改变寄存器或者累加器的输入输出控制线。从而完成代码所表示的功能。
也就是说,每句代码,在计算机中执行,都需要一个微指令周期来执行。
每个微指令周期都包含3个时钟上升沿。
每个微指令周期的前两个时钟上升沿用于将代码对应的指令码和操作数存放到指令寄存器里,在第3个时钟上升沿,才会去控制各种寄存器的控制线,完成代码所指示的功能。
当然,在当代码功能比较繁琐时,一个微指令周期可能需要不止3个上升沿。
那么问题来了,CPU控制器该如何设计?
另外,汇编指令在运行前,被编译成机器码,那么C语言在运行前,是如何被编译成机器码的?
还有,以上的每一个寄存器,累加器都可以买到一些小芯片快速的搭建出来,这也意味着,如果你想自己搭建一台计算机,按照这个思路是可行的。
实际上你搜索图片右上角的BenBlue就会看到一些教程。
五、微机指令执行过程有那些步骤?
计算机每执行一条指令都可分为三个阶段进行:即取指令、分析指令、执行指令。 取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。 执行指令的任务就是接受分析指令并执行。 计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。
六、指令的执行过程依次是?
计算机执行一条指令的主要步骤:取指(fetch)译码(decode)执行(execute)回写(write back)
计算机执行指令的过程 顺序是
第一步 取指 控制器将指令的地址送往存储器
第二步 译码 控制器分析指令的操作性质
第三步 执行 控制器从通用寄存器或存储器取出操作数
第四步 回写 将运算结果写入通用寄存器或存储器
七、ping指令格式?
PING指令是一个网络诊断工具,用于测试计算机之间的网络连接。下面是PING指令的常见格式:
```
ping [选项] 目标地址
```
其中,选项可以是以下之一:
- `-t`:持续发送PING请求,直到手动停止。
- `-n <次数>`:指定发送PING请求的次数。
- `-l <大小>`:设置发送的数据包大小(字节)。
- `-f`:在数据包中设置“不分段”标志。
- `-i <时间>`:设置发送PING请求的时间间隔(毫秒)。
- `-v <TTL>`:设置数据包的生存时间(TTL)。
目标地址可以是一个IP地址或域名。
以下是一些示例:
- `ping www.example.com`:对域名www.example.com执行PING请求。
- `ping 192.168.0.1`:对IP地址192.168.0.1执行PING请求。
- `ping -n 5 www.example.com`:发送5个PING请求到域名www.example.com。
- `ping -t 192.168.0.1`:持续发送PING请求到IP地址192.168.0.1,直到手动停止。
请注意,具体的PING指令格式可能因操作系统和网络工具的不同而略有差异。在使用PING指令时,建议参考相关操作系统或工具的文档以了解更详细的选项和用法。
八、ping测速指令?
ping命令简单测试网速。
命令格式:
ping ip地址 -l 字节数
注:上面的命令中 l 是字母l,不是数字1
网速等于≈(发送的字节数/返回的时间[毫秒])K字节
以上计算的结果速为字节(byte),不是我们通常说的位(bps)
如:
C:\Documents and Settings\Administrator>ping 202.101.224.68 -l 1000
Pinging 202.101.224.68 with 1000 bytes of data:
Reply from 202.101.224.68: bytes=1000 time=38ms TTL=251
Reply from 202.101.224.68: bytes=1000 time=38ms TTL=251
Reply from 202.101.224.68: bytes=1000 time=38ms TTL=251
Reply from 202.101.224.68: bytes=1000 time=38ms TTL=251
Ping statistics for 202.101.224.68:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 38ms, Maximum = 38ms, Average = 38ms
九、计算机执行指令的基本过程?
计算机能执行的都是机器码 完成一条指令的功能可以分成两个主要阶段:取指和执行。
取指(Fetch)――从主存储器中取出指令代码进入CPU。
8086CPU中,指令在存储器中的地址由代码段寄存器CS和指令指针寄存器IP共同提供,再由地址加法器得到20位存储器地址。
总线接口单元BIU负责从存储器取出这个指令代码,送入指令队列。
执行(Execution)――是将指令代码翻译成它代表的功能(被称为译码)、并发出有关控制信号实现这个功能。
8086CPU中,执行单元EU从指令队列中获得预先取出的指令代码,在EU控制电路中进行译码,然后发出控制信号由算术逻辑单元进行数据运算、数据传送等操作。指令执行过程需要的操作数据有些来自CPU内部的寄存器、有些来自指令队列、还有些来自存储器和外设。
如果需要来自外部存储器或外设的数据,则控制单元EU控制总线接口单元BIU从外部获取。
十、ping命令来判断通断,在执行指令怎么实现?
#includeint main(){ char ch; int i = system("ping 192.168.1.1")
; printf("%d\n",i); system("pause"); return 0;}dev-c++写的,返回值1表示未ping通,0表示ping通
- 相关评论
- 我要评论
-