8086汇编4位bcd码_二进制如何变成汇编语言-程序员宅基地

技术标签: 二进制bit0是什么意思  8086汇编4位bcd码  

2b4cb5a57b2a064f2950d04fedeb9385.png

计算机基础课第 26 期分享

转载请联系授权(微信ID:qianpangzi0206)

01

从硬件到软件

之前我们把重点放在硬件 - 组成计算机的物理组件,比如电,电路,寄存器,RAM,ALU,CPU。但在硬件层面编程非常麻烦,所以程序员想要一种更通用的方法编程,一种"更软的"媒介,没错,我们要讲软件!

前面我们一步步讲了一个简单程序,第一条指令在内存地址 0:0010 1110,之前说过,前 4 位是操作码,简称 OPCODE。对于这个假设 CPU,0010 代表 LOAD_A 指令,把值从内存复制到寄存器 A,后 4 位是内存地址,1110 是十进制的 14。所以这 8 位表达的意思是 "读内存地址 14,放入寄存器 A"

只是用了两种不同语言,可以想成是英语摩尔斯码的区别,"Hello" 和 ".... . .-.. .-.. —",都是"你好"的意思,只是编码方式不同。英语和摩尔斯码的复杂度也不同,英文有 26 个字母以及各种发音,摩尔斯码只有"点"和"线",但它们可以传达相同的信息,计算机语言也类似。

计算机能处理二进制,二进制是处理器的"母语",事实上,它们只能理解二进制,这叫"机器语言"或"机器码"。

02

伪代码

在计算机早期阶段,必须用机器码写程序,具体来讲,会先在纸上用英语写一个"高层次版"。

举例:"从内存取下一个销售额,然后加到天、周、年的总和,然后算税"等等...这种对程序的高层次描述,叫 "伪代码"

在纸上写好后,用"操作码表"把伪代码转成二进制机器码,翻译完成后,程序可以喂入计算机并运行。

你可能猜到了,很快人们就厌烦了,所以在 1940~1950 年代,程序员开发出一种新语言, 更可读更高层次,每个操作码分配一个简单名字,叫"助记符"。"助记符"后面紧跟数据,形成完整指令。与其用 1 和 0 写代码,程序员可以写"LOAD_A 14"。我们在前面用过这个助记符,因为容易理解得多!

03

汇编器

当然,CPU 不知道 LOAD_A 14 是什么,它不能理解文字,只能理解二进制,所以程序员想了一个技巧,写二进制程序来帮忙,它可以读懂文字指令,自动转成二进制指令,这种程序叫汇编器。汇编器读取用"汇编语言"写的程序,然后转成"机器码","LOAD_A 14" 是一个汇编指令的例子。

随着时间推移,汇编器有越来越多功能,让编程更容易,其中一个功能是自动分析 JUMP 地址,这里有一个前面用过的例子:注意, JUMP NEGATIVE 指令跳到地址 5,JUMP 指令跳到地址 2。问题是,如果在程序开头多加一些代码,所有地址都会变,更新程序会很痛苦。

所以汇编器不用固定跳转地址,而是让你插入可跳转的标签。当程序被传入汇编器,汇编器会自己搞定跳转地址,程序员可以专心编程,不用管底层细节,隐藏不必要细节来做更复杂的工作,我们又提升了一层抽象。

然而,即使汇编器有这些厉害功能,比如自动跳转,汇编只是修饰了一下机器码。一般来说,一条汇编指令对应一条机器指令,所以汇编码和底层硬件的连接很紧密。

汇编器仍然强迫程序员思考  用什么寄存器和内存地址,如果你突然要一个额外的数,可能要改很多代码让我们想一想。

我们将在下一节讲。

相关阅读:

  1. 如何榨干CPU的所有价值

  2. 程序如何"进入"计算机

  3. 最早期编程

程序员成长充电站

c7f550ca8385f4a450721c3a2d57a98d.png

长按扫码关注,每天五分钟学习计算机最基础的知识和原理

右下角

给个在看

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39853155/article/details/109913572

智能推荐

C语言程序设计学习笔记第九章结构体_c语言谭浩强第五版宏定义在哪章-程序员宅基地

文章浏览阅读871次。第九章结构体9.1结构体的概念结构体是一种可以由我们自己定义的数据类型#include <stdio.h>struct student{ int num; int score; float average;};int main(void){ //定义变量,存放学生的序号、成绩、平均分 struct student Tom;//Tom是变量,struct student是数据类型 struct student cla_c语言谭浩强第五版宏定义在哪章

sql 血缘解析 calcite_calcite 血缘分析-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏12次。package pers.machi;import com.google.common.base.Joiner;import org.apache.calcite.avatica.util.Casing;import org.apache.calcite.config.Lex;import org.apache.calcite.sql.*;import org.apache.calcite.sql.parser.SqlParseException;import org.apache.calci_calcite 血缘分析

摄像头基础知识介绍_avdd dvdd 对图像信号的影响-程序员宅基地

文章浏览阅读6.4k次,点赞12次,收藏90次。一、摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进行处理,最终转换成手机屏幕上能够看到的图像。数字信号处理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通过一系列复杂的数学算法运算,对数字图像信号参数进行优化处理,并把处理后的信号通过USB等接口传到PC等设备。DSP结构框架:  1. ISP(image signal pro.._avdd dvdd 对图像信号的影响

centos rpm安装mysql5.5_Linux以rpm方式安装Mysql,Centos7通过rpm安装Mysql5.5,Linux Mysql rpm安装...-程序员宅基地

文章浏览阅读137次。Linux以rpm方式安装Mysql,Centos7通过rpm安装Mysql5.5,Linux Mysql rpm安装================================Copyright 蕃薯耀 2020-11-10https://www.cnblogs.com/fanshuyao/一、上传rpm包到Linux服务器,然后进入目录,接着安装rpm -ivh MySQL-server..._package perl-4:5.16.3-293.el7.x86_64 was already added, replacing with perl-

csharp基础练习题:密码系统【难度:1级】--景越C#经典编程题库,不同难度C#练习题,适合自学C#的新手进阶训练_csharp基础题目编程题-程序员宅基地

文章浏览阅读184次。csharp基础练习题:密码系统【难度:1级】:在星实验室,我们使用的密码系统解锁实验室的门,只有团队的Flash,给出了这些实验室的密码.密码系统包括的 N×N的的键区(N> 0)的有一天变焦看到思科使用的密码.他想通了,密码是对称的中心点(中心点N * N的键盘会与点坐标(N / 2,N / 2)).现在他必须尝试所有可能的对称组合,打开门.因为他没有足够的时间,他请你告诉我们,如果..._csharp基础题目编程题

oracle 清空回收站

--清除回收站中当前用户下的对象。---清除回收站中指定用户的表。---清除回收站中所有的对象。

随便推点

FPS游戏通用准星修正实现自瞄_自瞄的瞄准角度是什么-程序员宅基地

文章浏览阅读1.7w次,点赞6次,收藏43次。FPS游戏内的十字瞄准视角其实就是一个视角摄像机这个应该不难理解吧,如何调整摄像机的视角就要用到一个叫“姿态角(Euler角)”的数据,即: yaw , pitch , roll。这3个值的解释如下:pitch是围绕X轴旋转,也叫做俯仰角yaw是围绕Y轴旋转,也叫偏航角roll是围绕Z轴旋转,也叫翻滚角用张图来解释比较直观:首先我们要先知道自己的Euler角值,然后_自瞄的瞄准角度是什么

java单元测试如何全覆盖_单元测试个人总结 (1)-程序员宅基地

文章浏览阅读871次。2017年12月31日做一次技术总结,人生第一次框架选型:assertJ+Junit+powemockito+mockito+maven/ant/gradle+jacoco+jenkins+sonarqube单元测试中,要测试目标模块的时候比如测试 service 方法的时候,service 方法中我们有可能会去调用数据库的执行结果,会取 redis 中缓存数据,也有可能会使用当前的系统时间,根据..._java 单元测试 接口如何覆盖

陇剑杯 省赛 攻击者1 CTF wireshark 流量分析

陇剑杯 省赛 攻击者1 CTF wireshark 流量分析

MFC中CPropertyPage与CDialogEx的作用是什么,有什么区别,什么情况下会需要继承这两个类?

是用于创建不同类型用户界面的类。以下是它们的作用、区别、使用方式以及何时需要继承这两个类的详细说明。都是MFC中用于创建用户界面的重要类,选择使用哪个类取决于你的具体需求和设计。在MFC(Microsoft Foundation Classes)库中,四、何时需要继承这两个类。

RIP协议

RIP协议的详细配置

倒计时7天!博客之星虚位以待,Macbook等你来拿-程序员宅基地

文章浏览阅读369次。也许你陪伴了CSDN一年的时间刚刚写下自己的第二十篇的原创技术博文也许你是陪伴了CSDN近20年风雨的老码农更新了近千百篇的技术文章也许你还在坚持着“技术输出”也许你已经开始封笔也许你刚..._倒计时7天!博客之星虚位以待,macbook等你来拿