首页 > 编程知识 正文

高级语言如何变成汇编语言(高级语言程序设计难吗)

时间:2023-05-04 15:01:34 阅读:88893 作者:252

1 M-3机器指令程序设计

必须为M-3机器编写程序,并按照该机器制造商提供的机器指令进行。 每个命令都包含0和1字符串,无论是数据还是操作码。

M-3机器的各指令由操作码和操作数构成。 操作码8个二进制位。 有两个操作数,每个操作数表示内存地址,每个操作数占12位。

A1A2各指令的3个域共计32位,与M-3机器的存储单元长度一致。 所有的操作码和操作数都是数字。 例如

00 0001 0002

00进行加法运算,将0001单元的内容和0002单元的内容相加,将结果发送到寄存器By,返回到0002单元。

这个命令被发送到内存是因为:

00000000000000000010000000000010

指令在功能上分为算术运算、逻辑运算、代码传输、控制指令、停止5种。 指令地址必须自己分配,该机器只有数字类型的数据,程序只能进行数字计算。

指令集是制造商向编程人员提供的用于编程的指令格式规范。 计算机上有指令集只表明了计算机有潜在的计算能力。 计算机要工作,就必须编写程序,组织指令序列。

由命令列构成的各程序,其中全部为0和1,纸面上规定用8进制数书写,因此全部为数字0-7。 为每个操作码和操作数分配存储单元。 用输送命令将其从穿孔带寄存在指定的存储单元中,稍后通过地址操作从该单元取入。

以使用M-3机器指令编程为例,试写求出下式值的程序。

f=(xy-z ) sinx )/) xy )

这里,sinx用近似式x-x/6表示(-1x、1x、y、z1 )。 因为M-3是定点设备,所以所有初始数据、中间结果和最终结果的绝对值必须小于1且大于0.5。 请将计算公式改写为,以免数值溢出

f=(x/2y/2-z/2 ) sinx )/) x/2y/2 )

其次程序员给命令和数据分配地址,计划内存。 假设将初始数据x、y、z分别保存在0024-0026号单元中,1/2、-1/6保存在0027、0030单元中,程序从0005号单元保存在0023单元中。 步骤如下。

指令地址操作代码A1A2说明0005 1300250025y寄存器b 00062300270001 y/2000100071300260026 xb 00102300270002 z/2000200111300240024 xb 0012300024 xb 001230002 2b 00132000010001 x/2y/2b00010014310002 x/2y/2-z/2b00010015200010002上述式b00010016130024024 xb 6b 0021300024 x-x/6b 002263002002 fb0002002377(停止 中输入的8进制程序代码部分如下所示。

1300250025

2300270001

1300260026

2300270002

1300240024

330027

2000010001

310002

2200010002

1300240024

330030

330024

300024

63002002

77

到了机器内部,上述程序全部转换为二进制代码。

在这个阶段的程序中,各指令可以由机器直接识别。 的结构、命令格式有规格,地址操作数不能越界,数据不溢出。 后来这个阶段的编程有时也称为机器语言编程。

机器语言笨拙,但可以存储程序和数据,以电子速度自动运行程序,运行速度快,原始数据和加工结果保存,程序可以重复运行,中途不需要人的干预,计算机遵循编程逻辑,可以中途也省了纸和笔。 这是计算机的生命力,也是计算机领域的革命性之处。

2 DJS 21机(121机)的数据、指令和程序

1965年开始,共生产了130台DJS 21机,是我国最早批量生产的晶体管计算机,因此可以认为是我国第二代机械的代表。 DJS分别是汉语拼音电子、晶体管、数字三个词的开头。

日本航空130号班机

121机器采用的是地址指令系统,每个指令在操作码q之后只有一个地址操作码d。

(1比特) q ) 6比特) d ) 14比特) q有6个二进制比特,可以区分2^6=64种不同的操作,正好可以区分121架59条命令。 14位的操作数可以表示2^14=16384个存储器单元地址。 是索引修饰位,在0时,该指令直接操作存储器地址d; 时,对“D ”的新地址进行操作

行。

约定用十六进制数书写指令。下面根据操作码粗略看看121机的部分指令。

01-05传送指令用于内在和寄存器间传送数据和指令07-0F算术运算10-12、17逻辑运算13-16比较指令20-26、34-35转换指令2D电传打字2E光电输入2F打印33访问磁鼓磁带3F停机指令

其他还包括送地址指令,移位指令,用于阶码操作的指令,将数规格化的指令,用于支持变址寻址的指令等。

3 ALGOL60语言

1960年,欧洲人确定了ALGOL60编程语言,其编译系统可以引进到121机上。

ALGOL ,为算法语言(ALGOrithmic Language)的缩写,是计算机发展史上首批产生的高级程式语言家族。当时还是晶体管计算机流行的时代,由于ALGOL语句和普通语言表达式接近,更适于数值计算,所以ALGOL多用于科学计算机。

ALGOL60可以说明变量,一个变量对应一个数学量,跟人们的数学习惯相吻合。程序中使用变量名,避免了直接与内存单元和寄存器打交道的枯燥易错。编译程序会自动为每个变量名分配内存单元并对应内存地址。

ALGOL60也引入了函数,并提供了24条标准函数,用户自己也可以编写函数。

ALGOL 121的编译程序由一个80行的引导程序加载到内存。

ALGOL的数据类型中没有字符型,没有文件概念。

穿孔纸带上的当前位置用5个孔位的编码表示一个数字或字母。是字母还是数字由两个键进行相应的切换。

纸带格式有如下的严格要求:

空白要1米以上Y源程序源程序开始5个以上字母键表示区域结束S数据数据开始5个以上字母键表示区域结束空白GY源程序改正后的源程序行GS数据改正后的某些数据空白J结束空白要2米以上

4 BASIC语言

BASIC是继FORTRAN、ALGOL60后于1964年推出的第三个高级程序设计语言,这个语言一部分基于FORTRAN,一部分基于ALGOL60,并且增加了一些东西使之适合于分时系统。

BASIC以简单易用和解释执行为特点,在计算机初学者中广为流行。

BASIC强化了字符串操作和文件操作。新增了图像和语言功能,可以在屏幕上打点、画线、着色,还可以利用beep和sound语句让内置喇叭发声。

BASIC还有一些特殊功能,比如“on key(n) gosub 行号“可以重新定义功能键Fn的功能,这实际上是优先处理键盘中断的功能。

每一行的代码前面都有一个整数数字作为“行号”。行号是按顺序执行的依据,也是GOTO转向的标号。

BASIC中没有while、for等流程控制结构设计,只能使用GOTO语句控制流程转向。BASIC中GOTO语句有3种格式,一种是强行转,格式“GOTO 行号”,强制转向指定的语句行。第二种是条件转,格式“IF 条件表达式 THEN GOTO 行号“,表达式成立就转向指定的语句行。第三种是多路开关转,格式”ON 算术表达式 GOTO 行号1,行号2,…“将根据表达式的值为1,2,…分别转向行号1,行号2等处。

5 C、C++

到了C语言,有了控制结构,数据自定义类型结构体等。到了C++,结构体中可以包含函数,类如同基本数据类型一样,可以集合一组数据及数据之上的运算。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。