九江建站公司,win优化大师有用吗,保定网络营销网站建设,维度网络专业做网站前言
这篇文章是写给对汇编有些兴趣但是又不喜欢麻烦的小伙伴们。你只需要找一个线上的汇编模拟器即可#xff01;这篇文章用little man computer (CPU simulator) 来演示和运行代码。little man computer 使用的计算机体系结构是Von Neuman architecture#xff08;冯诺伊曼…前言
这篇文章是写给对汇编有些兴趣但是又不喜欢麻烦的小伙伴们。你只需要找一个线上的汇编模拟器即可这篇文章用little man computer (CPU simulator) 来演示和运行代码。little man computer 使用的计算机体系结构是Von Neuman architecture冯·诺伊曼结构。 little man computer version 2 little man computer version 1
什么是汇编语言
汇编语言是一门低级的编程语言。它将机器语言的二进制指令包装成了助记符号。注意汇编语言中的每个指令和机器语言里的是一一对应的也就是说汇编并没有封装只是给晦涩难懂的二进制指令起了个简单名字缩写而已。 常用指令
我们这篇文章一共就涉及10个指令
INP(input)输入指令——将输入的值存储至累加器
OUT(output)输出指令——将累加器存储的值输出
DATdata)创建一个变量具体语法是var_name DAT value。比如 num DAT 2
BRZbranch zero当累加器中存储的值为0时分支到给定地址
BRPbranch positive)当累加器储存的值为正时分支到给定地址
BRAbranch always不管什么情况发生分支到给定地址一般用在循环语句中
STAstore from the accumulator)将累加器中的值存储到给定地址中
LDAload to the accumulator将给定地址中的值加载到累加器中
HTLhalt)字如其意就是停止程序的意思。
ADD顾名思义就是将累加器的值与另外一个值相加。
SUB将累加器的值与另一个值相减
如果看完还有点晕乎乎的不慌例子马上来了! 程序结构
顺序结构sequence)
当一个代码块从开头执行到末尾后停止时我们就说该代码块以顺序结构执行
例一自增 我们来看看程序是如何实现的
这是一段实现自增的程序。首先我们将num的值加载到累加器并与one变量进行加运算最后将相加结果存储回num变量中。注变量一般在程序末尾初始化。
如果我们再加一行代码OUT那么输出是这样的 翻译成python是这样子的
num0
num1
print(num)是不是特别简单那咱们再看一个例子。 例二输入两个数相加后输出和 首先我们输入了一个值到累加器内并将该值存储到变量num1中num1指向一个内存地址
接下来再输入一个值到累加器中然后将该值和num1变量指向的内存地址的值相加。得到的结果储存在累加器内所以我们可以放心地使用OUT指令将结果输出最后使用HLT停止程序。 运行结果
下面是以上代码的python版
num1int(input())
num1int(input())
print(num1)选择结构(selection)
选择结构简单地说就是如果满足这个条件那么执行这个否则执行那个。
例子两数比大小并输出较大数 这是很经典的选择结构。首先加载num1并减去num2如果是正数则说明num1更大所以跳到max1语句执行加载并输出num1的值。如果是负数就输出num2的值。就这么简单
以下是python代码
num15
num24
if num1num2:print(num1)
else:print(num2) 循环结构(iteration)
循环结构就是一直重复执行一个代码块。一般分为两种循环一种是条件循环即满足什么条件才会继续循环执行一种是遍历循环本文不会涉及。
例一倒数到零 首先计算机将num1中存储的值加载到累加器中。(BRZ END) 如果累加器内的值是零那就结束循环并执行END代码块如果不是零就执行下面的语句输出累加器内存储的值将该值减1后把商存入num1中自减。BRA LOOP的意思是不管怎么样都继续循环。END代码块就是执行结束程序。 for i in range(5):print(5-i) 例二两数相乘 该程序实现乘法的原理就是乘法的定义所以这里不再赘述
很多小伙伴看到代码可能有些疑惑这个程序在循环结构内每次都会让3自减1所以只会循环三次。根据乘法的定义我们知道4x3444那为什么在循环之前要先让num2自减一呢因为循环内的第一次执行就已经是44了那么一共只需要执行2遍44 4即可达到效果所以要让num2自减。这逻辑也太繁琐了有没有简单又能实现效果的
改良版 这段代码是0444 而不是4444——初始值从4改为了0所以不需要将num2减一。 运行结果
num14
num23
print(num1*num2) 例三两数相除 原理和两数相乘类似因此不再赘述。
num112
num23
print(num1/num2)
使用python 直接秒杀