精华内容
下载资源
问答
  • 机器语言编程

    千次阅读 2017-11-17 08:00:42
    Introduction to PIPPINFINAL shows the output of the current program with its original data. The contents of symbolic location W have changed to 57 (X * (Y + Z)), and the PC has value 10, indicating

    Introduction to PIPPINFINAL

    这里写图片描述
    shows the output of the current program with its original data. The contents of symbolic location W have changed to 57 (X * (Y + Z)), and the PC has value 10, indicating that the last instruction executed was the HLT at location 8 in RAM.

    这里写图片描述

    Assmebly language

    这里写图片描述
    Thus constrained, we defined the PIPPIN language to consist of these 14 instructions
    这里写图片描述
    Here, then, is a sample program written in PIPPIN shown in both its assembly language and binary forms. The program implements the assignment statement: X = (3 * Y) + (2 / W).
    这里写图片描述

    The Fetch and Execute Cycles

    A computer program basically constitutes of instructions. We are, today, generally used to program computers using High Level Languages (HLL - C++, C, Pascal, Fortran, Java, etc.).

    Those programming languages are not understood by the CPU, so the compiler compiles our code into something that the machine will be able to handle or execute. The output of this phase is a machine language program.

    But the translations are not quite over.

    The computer is not able to handle or to understand these lines of code either, so here is where the fetch-execute phase takes place. The CPU is only able to understand binary code and the machine language was designed in a way that all of the instruct ions, that we can possibly make use of, are already translated into binary code and kept into a table in a specified area of the memory.

    What happens when I make use of a assembly language instruction?

    As we’ll see in the examples, there are basically four categories of instructions:

    No address instruction
    Two addresses instruction
    Four addresses instruction
    Four addresses instruction
    The so-called OP (operation code) is the binary code associated with the particular instruction (add, sub, etc). This is what we are looking for, this is finally something that could be used by the CPU.

    It is just after the fetch phase that this OP will be available and the instruction could be executed. Instructions are loaded into memory sequentially and the PC (Program Counter) is the register that keeps tracks of the execution point in the program . The PC contains an address in memory and once the content of this register is read the content of the address is read from memory into the IR (Instruction Register).

    Unfortunately there is not direct correspondence between the content of the PC and what I want to put in the IR because the PC contains an address into a table in the memory where the OP is contained. So in order to load the real OP into the IR the OP has to be retrieved from memory. These two steps are know as decode phase and they are necessary for the correct execution of the instruction. At this point the PC is incremented in order to point to the next instruction of the program.

    The content of the above paragraph is what is known as fetch phase.

    At this point the instruction is executed using the necessary resources (ALU, registers, etc.) and the result are stored in those locations specified by the OP.

    In the case when we need to use instructions which refers or specify to a specific memory location, those addresses has to be loaded before the execution phase begins so that the CPU knows where to retrieve or store operators needed in the instruction.

    展开全文
  • 这是汇编语言和机器语言编程的上一页,我们正在处理中,将那里的所有书籍都转换为新页面。 请每天检查此页面!!!
  •  大家好!...机器编程  哇!一上来就写程序了啊,还是用机器码的啊!是呢!嘿嘿!我们去下载1个二进制编辑器,我也不知道哪款好用点,我下载的是FlexHEX。然后我们打开它,并写入一下代码:

    http://www.cnblogs.com/dodolook/archive/2011/06/02/2068356.html


      大家好!今天是我学习汇编语言的第一课。我感觉汇编好好玩啊!

    机器码编程

      哇!一上来就写程序了啊,还是用机器码的啊!是呢!嘿嘿!我们去下载1个二进制编辑器,我也不知道哪款好用点,我下载的是FlexHEX。然后我们打开它,并写入一下代码:CD 00

    以前我学C语言的时候,我知道CD 00 其实就是1100 1101 0000 0000啦!然后我们保存它为1个文件。关于文件名随便取啦!然后我们运行打开cmd,我们把刚才编辑保存好的文件拖到cmd中然后再运行!

    哇!程序输出了Divide overflow 好棒啊!一上来就可以机器码编程啦!而且只有2字节呀!看起来也不是那么的复杂啊!但是我看下面的程序,下面的程序是welcome to masm的机器码:

    大家看到了吗?!好多的01011001啊,要是我们写二进制机器码的时候1个被错误的写成0了,那如何去调试查找啊,所以汇编语言产生了哦!汇编语言它的主题是汇编指令,汇编指令呢只是机器指令便于书写记忆的一种格式。比如:机器指令1000100111011000 它的意思是寄存器BX的内容送到AX中,对于的汇编指令是:MOV AX,BX。大家看,这样的写法是不是更接近人类语言呀!(咦!什么是寄存器啊,这里怎么冒出来个寄存器,寄存器是CPU中可以存储数据的器件,一个CPU中有多个寄存器,AX,BX就是其中2个寄存器的代号)。现在我们看看我们的8086CPU中有哪些寄存器:我们用运行输入cmd,然后再输入debug,然后再在-后输入r.我们一起看看:

    哇!眼花了!仔细一瞧啊!其实也不晕啊,就13个寄存器啊(我暂时这样理解)!每个寄存器是16位的,也就是说十六位二进制数。

      既然汇编语言是机器语言的助记符。虽然它们是一一对应的,但是如果把汇编语言直接塞给CPU,CPU也还是不认识的呢,所以,要让电脑运行汇编程序,必须要有1个翻译啊。这个翻译呢就是汇编语言编译器啦!

    汇编语言的组成

      1,汇编指令(机器码的助记符)

      2,伪指令(由编译器执行)

      3,其他符号(由编译器识别)

    汇编语言的核心是汇编指令啦,它决定了汇编的特性哦。

    我的指令和数据在什么地方啊

      CPU是计算机的核心,它控制着整个计算机的运作,但是我们必须向它提供指令和数据它才能工作呢,那么这些指令和数据放在什么地方的啊,以前我们学C语言做调试的时候知道,我们调试的时候看就是内存,所以汇编语言也一样啊,指令和数据也是放在内存里的,但是我们现在要重新取个名字,听起来更专业点,呵呵,内存就叫存储器(这里要和寄存器搞清楚关系啊,寄存器是CPU内部的,虽然它也是存放东西的啦!)。

    大笨蛋CPU如何区分指令和数据啊

    1000100111011000 这个二进制机器码要是我们把它当做是数据的时候,那么它就是89D8H

    1000100111011000 这个二进制机器码要是我们把它当做是指令的时候,那么它就是MOV AX,BX

    但是大笨蛋CPU就认识二进制的啊,它怎么知道哪些是数据哪些是指令啊!它是这样认识的,大笨蛋CPU和其他芯片之间有导线连接,逻辑上可以划分为:地址总线,数据总线,控制总线

    所以我们只要把1000100111011000放在地址总线,CPU就认识它是地址,如果把它放在数据总线上,那么CPU就认为他是数据,如果把它放在控制总线上,那么笨蛋CPU就认为它是指令。

    地址总线

      

    我们看到地址总线是一串0110101011010组成的,所以说呢,这些位二进制数有多少种变化CPU就可以对多少个存储单元进行寻址。也就是说,一个CPU有N根地址总线,那么这个CPU的地址总线宽度为N。这样的CPU最多可以寻址2的N次方个内存单元啦!

    数据总线

      数据总线就像一根和内存的高速公路呢!它的宽度决定了CPU和外界的数据传送的速度,当然高速公路越宽,这样就可以用很宽很宽的大卡车运货,这样每次运的货就更多!

    下面我们来看1个例子,我们向内存中写入数据89D8H的时候,8088,8086CPU的传送能力:

    8088CPU每次是传送8位数据:

    8086每次是传送16位的:

    从这个例子可以看出,8086一次就可以传送完8088两次才能传送完的数据啊!8086要先进呀!

    控制总线

      从地址总线,数据总线的知识,我们可以推理出有多少根控制总线,就意味着CPU提供了对外部器件的多少控制,呵呵!所以它的宽度决定了CPU对外部器件的控制能力啦!

      嗯!先学到这里!加油!梦想是总有一天要写出1个自己的操作系统出来。




    展开全文
  • 由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言,用机器语言编程的程序成为目标程序。只有目标程序才能被计算机直接识别和执行。 ...

     由于计算机内部只能接受二进制代码,因此,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成计算机的机器语言,用机器语言编程的程序成为目标程序。只有目标程序才能被计算机直接识别和执行。

     

    机器语言

    机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。

     

    汇编语言

    汇编语言:是用能够反映指令功能的助记符来表示指令的程学设计语言,用助记符来代表0、1编程,即符号化了的机器语言。

     

    C语言

    C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点。

     

    在C里,对你而言只要知道你定义的变量名就可以,而不需要知道编译器是如何分配内存单元或者寄存器来存储你的变量。

     

    1980年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局(American National Standard Institution)为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言的标准。1980年代至今的程序开发工具,一般都支持符合ANSI C的语法。

     

    c语言写一个的程序,首先c语言编译器(compiler)将程序转化为对应的汇编,汇编器(assembler)将汇编代码转换为机器码才可运行。C语言作为一种高级语言,可以跨平台,因为同一种高级语言在不同平台的不同编译器,可以调用相对平台的汇编器来在对应平台运行。

     

    C语言一般只比汇编程序生成的目标代码效率低10~20%。 

     

    执行效率

    C相对汇编来说的优势主要在移植性上和开发效率上;程序执行效率不如汇编。(C语言一般只比汇编程序生成的目标代码效率低10~20%。)

     

    当然也决于编程人员的水平。
    如果是汇编高手,用汇编语言编写的程序效率肯定是最高的。
    如果只是个普通程序员,用汇编语言编写的程序效率可能反而低,因为C语言编译器对很多常用的操作编译产生的是极其优化的汇编代码。

     

    转载于:https://www.cnblogs.com/alexfan/archive/2012/06/26/2563692.html

    展开全文
  • 计算机语言指用于人与计算机之间通讯的语言,也即是平时说的编程语言   编程 指令的概念很早就形成了,其实指令本身就是一种编程 一个指令替代了一组逻辑电路或者机电式/机械式中的一个计算单元 你只需要一个...

     

    语言

    计算机语言指用于人与计算机之间通讯的语言,也即是平时说的编程语言

     

    编程

    指令的概念很早就形成了,其实指令本身就是一种编程

    一个指令替代了一组逻辑电路或者机电式/机械式中的一个计算单元

    你只需要一个指令就相当于已经操作了一整个的模块

    这不也是一种编程的思维吗,只不过是指令对应硬件

     

    随着指令在现代计算机中的应用,计算机程序得以快速的发展

    因为一旦你知道计算机可以执行哪些指令,其实也就是哪些功能,具有哪些能力

    你就可以把这些指令按照一定的逻辑顺序重排组装

    这就是广义上的计算机程序

     

    计算机语言的发展有两个阶段

    面向机器到脱离机器的转变

     

    针对不同场景解决不同业务逻辑问题方向的发展

     

     

    机器语言

    为了使用计算机计算,必须将程序指令输入到计算机中

    最原始的时候那就是开关和纸带,也就是相当于直接使用二进制来工作,而且是人工操作

    也就是使用该机器指令01组合的字符串

    也就是机器语言,这其实是纯粹的计算机语言

     

    汇编语言

    就如同母语是普通话的人就不能天生的和母语是英语的人交流

    想要交流就必须有人要学习一门外语

    而想要学习计算机的机器语言这门外语,远比学习英语要复杂晦涩

    因为机器语言01字符串对于人类的认知来说,完全就等同于乱码

    难读、难编、难记和易出错

    你根本不会知道到底是什么意思

    随后,开始用与代码指令实际含义相近的英文缩写词、字母和数字等符号来替代描述指令代码

    出现了汇编语言,汇编语言只是机器语言的助记符语言

    不同的机器有不同的汇编语言

    需要汇编程序翻译成计算机可以识别的二进制机器语言

    本质还是面向机器的低级语言

    机器语言和汇编语言都是面向硬件的具体操作的,语言对机器过分依赖,所以称之为低级语言

     

    高级语言

    为了能够更加通用的解决问题,而不是专注于硬件本身,出现了高级语言

    高级语言不用关注机器的指令,使用接近人习惯的自然语言和数学语言符号

    能够专注于问题本身的业务逻辑

    显然高级语言也是不能直接运行于机器上的,需要翻译程序转换为机器可以执行的目标代码程序

    虽然高级语言不涉及寄存器这些东西,不需要你了解硬件

    但是这是高级语言隐藏了她们,而不是说这些东西不存在不重要,所有的语言都逃不过这一关

    始终是要编程机器语言的

    也正是由于隐藏了太多东西,就好像与底层的东西隔着好几层玻璃

    尽管看的见,但是自然清晰度下降

    直接后果就是编译后的文件变得更大,执行速度将会变慢(相对于汇编)

     

     

    从网上扒出来一份统计,或许不准,作为了解

    1951 – Regional Assembly Language

    1952 – Autocode

    1954 – IPL (LISP语言的祖先)

    1955 – FLOW-MATIC (COBOL语言的祖先)

    1957 – FORTRAN (第一个编译型语言)

    1957 – COMTRAN (COBOL语言的祖先)

    1958 – LISP

    1958 – ALGOL 58

    1959 – FACT (COBOL语言的祖先)

    1959 – COBOL

    1959 – RPG

    1962 – APL

    1962 – Simula

    1962 – SNOBOL

    1963 – CPL (C语言的祖先)

    1964 – BASIC

    1964 – PL/I

    1966 – JOSS

    1967 – BCPL (C语言的祖先)

    1968 – Logo

    1969 – B (C语言的祖先)

    1970 – Pascal

    1970 – Forth

    1972 – C

    1972 – Smalltalk

    1972 – Prolog

    1973 – ML

    1975 – Scheme

    1978 – SQL

    1980 – C++ (既有类的C语言,更名于1983年7月)

    1983 – Ada

    1984 – Common Lisp

    1984 – MATLAB

    1985 – Eiffel

    1986 – Objective-C

    1986 – Erlang

    1987 – Perl

    1988 – Tcl

    1988 – Mathematica

    1989 – FL

    1990 – Haskell

    1991 – Python

    1991 – Visual Basic

    1993 – Ruby

    1993 – Lua

    1994 – CLOS (ANSI Common Lisp的一部分)

    1995 – Java

    1995 – Delphi (Object Pascal)

    1995 – JavaScript

    1995 – PHP

    1996 – WebDNA

    1997 – Rebol

    1999 – D

    2000 – ActionScript

    2001 – C#

    2001 – Visual Basic .NET

    2002 – F#

    2003 – Groovy

    2003 – Scala

    2007 – Clojure

    2009 – Go

    2011 – Dart

     

     

     

    完整内容点击标题进入

     《计算机软硬件发展系列个人理解与总结-导航页》

     

    1.计算机发展阶段

    2.计算机组成-数字逻辑电路

    3.操作系统简单介绍

    4.计算机启动过程的简单介绍

    5.计算机发展个人理解-电路终究是电路

    6.计算机语言的发展

    7.计算机网络的发展

    8.web的发展

    9.java web的发展

     

    展开全文
  • 机器学习 编程语言 …以及为什么Python是ML中的事实 Python是机器学习使用的事实上的编程语言。 这是由于它的简单性和可读性,它使用户可以专注于算法和结果,而不是浪费时间在有效地构造代码并保持可管理性上。 ...
  • 机器语言和汇编语言都是面向机器的,不同设备的编写方式可能不同。 高级语言是面向用户的,通过编译程序或者解释程序,就可以对机器进行操作。 机器语言 机器语言是计算机可以直接执行的二进制指令集。 汇编语言 ...
  • 计算机语言通常分为三类:即机器语言,汇编语言和高级语言。 1. 机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。这种指令集,称机器码(machine code),是电脑的CPU可直接...
  • 机器语言是计算机最原始的语言,是由0和1的代码构成,cpu在工作的时候只认识机器语言,即0和1的代码。 2. 汇编语言 汇编语言,即为一种低级语言,它用人类容易记忆的语言和符号来表示一组0和1的代码,例如AND...
  • 1、机器语言 是一种二进制语言,直接用二进制代码表达指令,CPU可以直接执行,与具体的CPU型号有关 例如:11010011 11101101 2、汇编语言 一种将二进制代码直接对应助记符的编程语言,汇编语言与CPU型号有关,程序不...
  • 本文作者是一位机器学习工程师,他比较了四种机器学习编程语言(工具):R、Python、MATLAB 和 OCTAVE,并列举了这些语言(工具)的优缺点。海风教育退费 海风教育在线辅导0元一对一试听课等你来领取,领取课程方法...
  •  计算机语言通常分为三类:即机器语言,汇编语言和高级语言。   1. 机器语言  机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机的硬件结构赋予计算机的...
  • 机器学习编程语言之争,Python夺魁 随着科技的发展,拥有高容量、高速度和多样性的大数据已经成为当今时代的主题词。数据科学领域中所采用的机器学习编程语言大相径庭。究竟哪种语言最适合机器学习成为争论不休的...
  • 编程语言分类

    2019-04-17 12:16:00
    目录 一、机器语言 1.1 机器语言编程 二、汇编语言 2.1 汇编语言编程 三、高级语言 3.1 编译型 3.2 解释型 3.3 高级语言编程 3.3.1 编译型 ...
  • 机器学习使用什么编程语言 …以及为什么是Python。 Python是机器学习使用的事实上的编程语言。 这是由于它的简单性和可读性,它使用户可以专注于算法和结果,而不是浪费时间在有效地构造代码并保持可管理性上。 ...
  • 高级编程语言和机器语言的关系是什么? 高级语言使程序员能够用类似于英语的方式表达一系列的计算机指令,机器语言由一系列二进制位组成,基本让人无法阅读。 转载于:...
  • 1.机器语言 计算机的大脑或者说心脏就是CPU,它控制着整个计算机的运作。每种CPU,都有自己的指令系统。这个指令系统,就是CPU的机器语言。 机器语言是一组由0和1系列...机器语言编程是不是很令人烦恼呢,终于出现了汇
  • 编程语言的分类

    2019-07-23 16:26:00
    目录 编程语言的分类 一.机器语言 1.1 机器语言编程 二.汇编语言 2.1 汇编语言编程 三.高级语言 3.1 编译型语言 3.2 解释型语言 3.3 高级语言编程 ...
  • 机器学习编程语言by Preethi Kasireddy 通过Preethi Kasireddy 我应该选择哪种编程语言? 我应该专注于前端吗? 后端? 机器学习? (What programming language should I pick? Should I focus on front-end? Back...
  •  高级编程语言的发展历程(一)创始纪  高级编程语言的发展历程(二)虚拟机的前世今生  高级编程语言的发展历程(三)FORTRAN 语言是怎么来的  高级编程语言的发展历程(四)LISP 和 AI 的青梅竹马 A  ...
  • bmstu-mdpl 机器相关的编程语言

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,287
精华内容 6,114
关键字:

机器语言编程