汇编程序入门指南

什么是机器语言?
在这里插入图片描述
机器语言就是由二进制数字构成的程序,CPU 可以直接对其解释、执行。

汇编语言、C 语言、Java、BASIC 等编程语言编写的程序,也都需要先转换成机器语言才能被执行。机器语言有时也叫作“原生代码”(Native Code)。
在这里插入图片描述

本篇文章我们就来学习一下如何编写汇编语言,汇编语言是低级语言,所以它是最接近机器语言的编程语言。
在这里插入图片描述
学习汇编语言,能让你更深刻的理解计算机的运行机制和原理,使你犹如拨云见日, 找到长期困惑着自己的问题的答案,不仅能因“我能看懂程序了”而获得成就感,更能因发现“计算机原来很简单啊”而信心倍增。

使用汇编语言编写一段程序然后让计算机运行你编写的程序,你就知道计算机是如何把汇编语言转换成机器语言执行的。

你可能会问,我们为什么不直接使用机器语言编写程序呢?原因就是机器语言是一堆的0和1的组合,但是每个组合都是有特定的含义的指令或数据,所以对人来说,如果只看0和1的话很难判断出各个组合都表示什么。

简单地说,就是机器语言不适合人类书写和阅读。

于是就有人发明了汇编语言,可以用一些英文单词或者英文简写来表示指令功能,这种类似的英语单词叫作“助记符”,使用助记符的编程语言叫作“汇编语言”。
在这里插入图片描述

无论是使用机器语言还是汇编语言,所实现的功能都是一样的, 区别只在于程序是用数字表示,还是用助记符表示。

也就是说,如果理解了汇编语言,也就理解了机器语言,更进一步也就理解了计算机 的原始的工作方式。

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

如下是一段汇编语言:
在这里插入图片描述

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

编程时如果总要考虑这一行的内存地址是什么?就会很不方便,所以在汇编语言中用标签来代替地址。用汇编语言编程时可以在任何需要标签的地方贴上名称任意的标签。

在上述代码程序中,使用了名称为“LOOP:”的标签,操作码就是表示“做什么”的指令。

因为用助记符表示的指令是英语单词的缩写,比如 LD 是 Load(加载)的缩写,所以多多少少能猜出其中的含义。汇编语言中提供了多少种助记符,CPU 就有多少种功能。

比如Z80 CPU 的指令全部加起来有 70 条左右。

CPU 的寄存器、内存地址、I/O 地址或者直接给出的数字都可以作为操作数。

如果某条指令需要多个操作数,那么它们之间就要用逗号分隔。操作数的个数取决于指令的种类。也有不需要操作数的指令,比如用于停止 CPU 运转的 HALT 指令。
在这里插入图片描述

汇编语言的语法和英语祈使句的语法很像。对比英语的祈使句 Give me money 和汇编语言的语句,就可以看出在英语的祈使句中,一 开头放置了一个表示“做什么”的动词,这个动词就相当于汇编语言中的操作码。

在动词后面放置了一个表示“动作作用到什么上”的宾语, 这个宾语就相当于汇编语言中的操作数。

因为程序的作用是向 CPU 发出指令,而且编程语言又是由说英语的人发明的,所以编程语言与英语祈使句类似也就不足为奇了。

构成机器语言的是二进制数,而在汇编语言中,则使用十进制数和十六进制数记录数据。若仅仅写出123这样的数字,表示的就是十进制数;而像123H这样在数字末尾加上了一个H(H 表示 Hexadecimal, 即十六进制数),表示的就是十六进制数。

这里先把主要的指令列在如下表中,请大家粗略地浏览一下。

在浏览的过程中请注意这些指令的分类,按功能这些指令可以分成运算、与内存的输入输出和 与 I/O 的输入输出三类。

这是因为计算机能做的事也只有输入、运算、输出这三种了。 操作数表示的是指令执行的对象。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/856296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

别让日志拖垮网站速度

网站日志是安全等审计的基础,但是过大的日志却能造成网站速度的缓慢。 对于一般的小型网站而言,网站的日志很小,但是对于大型的网站,日志可能会有几个G甚至十几个G,根据要求,程序的日志不能低于180天&…

C语言函数是如何变成汇编的

为了说明C语言如何被编译成汇编语言,我们可以通过一个简单的C程序,并使用ARM编译器来生成相应的汇编代码。 // simple.c int add(int a, int b) {return a b; }int main() {int result add(5, 3);return result; }使用ARM编译器生成汇编代码 我们使用…

智慧校园导航系统:技术驱动下的校园管理与师生体验革新

随着智慧校园建设的不断推进,校园导航系统作为提升校园管理效率、优化师生出行体验的重要工具,正逐渐成为各大高校的标配。本文将重点介绍维小帮智慧校园导航系统,如何通过创新的设计和功能,解决校园导航中的种种难题,…

视频二维码怎么设置全屏播放?默认全屏效果的添加技巧

视频做成二维码如何全屏展示呢?现在很多人都会将视频生成二维码后,分享二维码给其他人来扫码查看视频内容,设置视频默认全屏播放可以带来展示更好的效果,那么横版和竖版视频扫码自动全屏播放是如何生成的呢? 视频二维…

裂变客户时代:如何打造口碑传播的良性循环?【以Notion为例】

在当今的商业环境中,客户裂变已经成为品牌增长的重要驱动力。裂变客户时代,意味着每一个满意的客户都有可能成为品牌的传播者,帮助品牌吸引更多的新客户。那么,如何在这个时代打造口碑传播的良性循环呢?Notion是怎么做…

多路输出调光无频闪36V48V60V/300W恒流舞台灯调光芯片FP7126 LED舞台帕灯/激光灯控制IC,无频闪无噪音,多路共阳,调光深度0.1%

方案背景 在舞台演出中,灯光扮演着非常重要的角色,它不仅可以烘托氛围,营造氛围,更能够为表演者增添光彩,塑造形象。在博物馆场所中,突出展品细节。根据灯光用途和适用类型,舞台灯可以细分为聚光…

开学季品牌大战!你的品牌推广策划准备好了吗?

很多品牌都非常看好校园市场,尤其是开学季的时候,砸巨资做活动。如果细心的品牌方,一定会发现,会有20%的品牌,几乎每年在每个学校,都可以顺利推广,达到非常好的效果。 不是这些品牌的的推广厉害…

合肥各区县中华老字号、“安徽老字号”“合肥老字号”认定奖励补贴和申报条件材料指南

想要了解老字号申请的可以看过来!合肥各区县中华老字号、“安徽老字号”“合肥老字号”认定奖励补贴和申报条件材料指南如下,蜀山区、包河区、庐阳区、瑶海区、政务区、经济技术开发区、高新区、滨湖新区、新站区、长丰县、肥东县、肥西县各地需要申报的…

递归算法:代码迷宫中的无限探索

✨✨✨学习的道路很枯燥,希望我们能并肩走下来! 目录 前言 一 深入理解递归 二 迭代VS递归 三 递归算法题目解析 3.1 汉诺塔问题 3.2 合并两个有序链表 3.3 反转链表 3.4 两两交换链表中的节点 3.5 Pow(x,n)(快速幂)…

OS复习笔记ch11-1

外围设备的管理和磁盘调度 外围设备 从CPU的角度来看,外设有几个比较重要的I/O接口(interfaces) 状态reg:向CPU报告设备的状态(忙碌/空闲)命令reg:接收CPU命令,存储 CPU 需要执行的…

SwiftUI 6.0(iOS/iPadOS 18)中全新的 Tab 以及 Sidebar+悬浮 TabView 样式

概览 看来苹果一直对 iPadOS 中标签栏(TabView)不甚满意。这不,在 WWDC 2024 中苹果又对 TabView 外观做了大幅度的进化。 现在我们可以在顶部悬浮条和左侧的 Sidebar 两种不同布局之间恣意切换 TabView 的外观啦。而且,这在 Swi…

用AI帮助设计师提升工作效率?

在创意设计的世界里,效率往往意味着灵感与时间的完美结合。设计师们时常面临各种挑战,如何在保证作品质量的同时,又能提升工作效率?这不仅是设计师们思考的问题,也是AI技术正在积极解决的问题。那么,用AI帮…

华为仓颉开发语言“可能”明天正式面世(2024年6月20日写下)

众多迹象表明,鸽了几次的华为仓颉开发语言,有望在2024华为开发者大会上正式面世,你的期待热情是否还在? 1、“仓颉编程语言”公众号面世 最近,华为旗下的公众号“编程语言Lab”悄然改名为“仓颉编程语言”&#xff0c…

MySQL中实现行列转换的示例

在 MySQL 中进行行列转换(即,将某些列转换为行或将某些行转换为列)通常涉及使用条件逻辑和聚合函数。虽然 MySQL 没有像 Oracle/SQL Server 中的 PIVOT 和 UNPIVOT 那样的直接功能,但你可以通过结合 CASE 语句、UNION 或 UNION AL…

汽车信息安全硬件讨论:SE vs HSM

目录 1.什么是Secure Element 2.芯片内置HSM和SE 3.未来HSM的发展 现在的智能网联汽车看起来像是一个连接万物的智能移动终端,它不仅可以与OEM云服务器通信接收OTA推送,还可以与手机蓝牙、Wifi交互完成远程汽车解锁、座舱内环境设置等等,借…

echarts dataZoom用按钮代替鼠标滚轮实现同样效果

2024.06.19今天我学习了echarts dataZoom如何用按钮来控制放大缩小的功能, 效果如下: 通过控制按钮来实现图表放大缩小数据的效果。 步骤如下: 一、写缩放按钮,以及图表数据。 二、设置初始位置的变量,我这边是七个…

Github链接加速

链接1: github

爬虫学习。。。。

爬虫的概念: 爬虫是一种自动化信息采集程序或脚本,用于从互联网上抓取信息。 它通过模拟浏览器请求站点的行为,获取资源后分析并提取有用数据,这些数据可以是HTML代码、JSON数据或二进制数据(如图片、视频&#xff09…

【类型转换】C++中char、char*、int、string相互转换函数及string转不同进制数函数

参考资料:cplusplus官方资料strtol 函数用法 总结: 1、这些在做编程题处理输入数据时常用,需要牢记。

vue 弹出消息框

为了体现更好的交互性,免不了会用到消息弹出功能,于是antd vue提供了很多可以使用的消息控件,比如Modal,message,Popover这些控件。下面就我用过的进行总结。 1. Modal.method() 方法: Modal.warning({title: 提示,content: 未完…