标志内存或I/O中存储单元的数字叫做“地址”。

CPU中的标志寄存器有什么作用?

用于在运算指令执行后,存储运算结果的某些状态。

从程序员的角度看硬件

CPU:种类,时钟信号的频率。可以使用哪种机器语言取决于CPU的种类。

内存信息:地址空间,每个地址中可以存储多少比特的信息。每个地址都标志着一个内存中的数据存储单元,而这些地址所构成的范围就是内存的地址空间。

I/O信息:I/O的种类,地址空间,连接着何种周边设备。只要用CPU控制I/O的寄存器,就可以设定I/O的功能,与周边设备进行数据的输入输出。

在内存中,每个地址的功能都一样,既可用于存储指令又可用于存储数据。而I/O则不同,地址编码不同(即寄存器类型不同),功能也就不用。

机器语言和汇编语言

汇编语言的语法十分简单,以至于只有一个语法,即把“标签”,“操作码(指令)”和“操作数(指令的对象)”并排写在一行上。

标签的作用是为该行代码对应的内存地址起一个名字。

操作码就是表示“做什么”指令。按功能这些指令可以分成运算、与内存的输入输出和与I/O的输入输出三类。

操作数表示的是指令执行的对象。CPU的寄存器、内存地址、I/O地址或者直接给出的数字。

汇编语言的语法和英语祈使句很像。构成机器语言的是二进制数;而在汇编语言中,用十进制数和十六进制数记录数据。

Z80 CPU的寄存器结构

与I/O的寄存器不同,CPU的寄存器不仅能存储数据,还具备对数据进行运算的能力。A、B、C、D等字母是寄存器的名字。寄存器的用途取决于它的类型,有的指令只能将特定的寄存器指定为操作数。

像A寄存器也叫做累加器,是运算的核心。F寄存器也叫做标志寄存器,用于存储运算结果的状态,比如是否发生了进位,数字大小的比较结果等。PC寄存器也叫做程序指针,存储着指向CPU接下来要执行的指令的地址。

操作数必须是已存储在CPU寄存器中的数字,这是汇编语言的规定。

追踪程序的运行过程

用汇编语言编写的程序是不能直接运行的,必须先转换成机器语言。机器语言是唯一一种CPU能直接理解的编程语言。

一旦重置了CPU,00000000就会被自动存储到PC寄存器中,这意味着接下来CPU将从00000000号地址读取程序,取出这个地址下的指令,如果判断为两个字节构成的指令,就会下一个地址00000001中读出数据,把这两个数据汇集到一起解释、执行。

由于刚刚从内存读出了一条2字节的指令,所以PC寄存器的值要增加2,并接着从00000010号地址读出指令,解释并执行。按此流程序,反复进行“读取指令”,“解释、执行指令”,“更新寄存器的值”三个操作。

重点是要观察PC寄存器是如何控制程序流程的。

汇编比较两个数大小_计算机是怎样跑起来的 -- 体验一次汇编过程相关推荐

  1. 编写一个函数,实现计算两个数大小的比较,且返回最大值。

    例子:编写一个函数,实现计算两个数大小的比较,且返回最大值. 解释:当$a大于$b,返回最大值$a,当$b大于$b,返回最大值$b,否则输出null            实现效果:          ...

  2. 微信小程序比较两个数大小

    微信小程序,输入两个数比较大小 效果图 wxml代码 <!--index.wxml--> <view class="demo-box"><text c ...

  3. Java基础编程题目——定义一个比较两个数大小的方法

    编写一个方法判断两个数的大小,并返回较大的值 import java.util.Scanner;public class Max {public static void main(String[] a ...

  4. HTML数字比较大小游戏,Javascript 比较两个数大小并输出最大数

    题目:在页面中添加两个单行文本框,在两个文本框中输入两个数字,使用JavaScript函数比较这两个函数大小,并使用对话框输出最大数. 实现代码如下: function maxNum() { //获取 ...

  5. 用指针比较三个数大小_《测量力的大小》教案

    <测量力的大小>教案 作为一名辛苦耕耘的教育工作者,有必要进行细致的教案准备工作,教案是实施教学的主要依据,有着至关重要的作用.教案应该怎么写才好呢?下面是小编收集整理的<测量力的大 ...

  6. 用switch排两个数大小C语言,关于C语言Switch语句,先学这些技巧够不够?

    一.C语言中switch的用法 1.switch后面括弧内的[表达式],ANSI标准允许它为任何类型: 2.当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,否则,就 ...

  7. matlab问题利用M文件比较两个数大小,Matlab中写M文件及调用

    1题.自然数n的阶乘 function y=lilu_fact(n) n=floor(n);%如果是小数,向下取整至整数 y=1; if n>1  %这里负数,0的阶乘都将得到1 for i=1 ...

  8. java实现两个数运算_用java做简单的计算器类,实现两个数字的加减乘除运算

    计算器类 package calculator; import java.util.Scanner; public class Calculator{ private float number1; p ...

  9. python计算两个数乘积_如何用PYTHON使两个数字总和变成乘积

    1 打开JYPYTER NOTEBOOK,新建一个空白的PY文档. 2 #sum_double(1, 2) → 3 #sum_double(3, 2) → 5 #sum_double(2, 2) → ...

最新文章

  1. 体外反搏做_体外反搏治疗的原理
  2. project euler之甚至斐波那契数字(Even Fibonacci numbers)
  3. python有道翻译接口翻译页面-tornado框架学习及借用有道翻译api做自动翻译页面...
  4. python电脑配置苹果笔记本-tensorflow学习笔记1——mac开发环境配置
  5. Linux下查看文件内容
  6. RabbitMq--2--安装
  7. mysql验证配置_详解MySQL|教你一招如何自动验证 MySQL 配置正确性
  8. (二)流--递归算法
  9. 现在做Android开发有前途吗?复习指南
  10. QML 获取当前时间戳 yyyy-MM-dd hh:mm:ss.zzz
  11. windows切屏快捷键
  12. ABBYY FineReader15最新免费下载安装地址激活2020注册机教程
  13. MUI框架-01-介绍-创建项目-简单页面
  14. spring Aop 实现原理
  15. Device owner调研
  16. 将C盘的软件已经移到了D盘,为什么C盘还是会出现变红或饱满的状态?
  17. 代谢组学通路富集分析
  18. idea中Project JDK is not defind的其中之一解决办法
  19. Cadence网表算法
  20. 爱鸿森技术引进创新方法

热门文章

  1. OSPF次末节区域配置 201
  2. docker的安装与安装mysql(mac,centos为例)
  3. 便携式三星mysql_JDBC链接mysql - 三星蓝
  4. wins系统flask绑定mysql_flask如何连接mssql,网上大多是sqlite和mysql教程?
  5. extjs2.0 文件上传_extjs数据存储与传输
  6. python中tkinter的使用-中
  7. python计算绩效工资_python实现 --工资管理系统
  8. 存储过程 while is null_4.2 串的存储实现(2)
  9. sc.next在java什么意思_sc.next() 和 nextLine 的原理
  10. s5pv210——中断系统相关介绍