百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

计算机系统指令的机器码表示方法及8086的寻址方式和指令系统

liebian365 2024-10-18 09:33 16 浏览 0 评论

计算机是通过执行指令来处理各种数据的,因此,一条指令即要指出如何处理数据,同时还应指出数据的来源、操作结果的去向。一般来说指令是由两部分组成,即操作码和操作数。

操作码给出该指令应完成何种操作。

操作数用来描述该指令的操作对象。

在指令中操作码是不可缺少的,但操作数可以没有,也可以有一个操作数或两个操作数。

操作码表示计算机执行什么操作,由一组二进制代码表示,在汇编语言中用助记符代表。

操作数可能指明了参与操作的数的本身,或规定了操作数的地址。如何寻找操作数,这就是指令的寻址方式,也是由指令编码格式指出。

根据操作数的个数,指令格式可分为以下几种:

I 无操作数

控制类指令,比如“HLT”暂停指令。

II 单操作数

只给出一个操作数地址。该操作数可在寄存器或存储器中,或指令中直接给出立即数。比如“INC CX”

III 双操作数指令

指令中有两个操作数,其中一个为目的操作数,另一个为源操作数。一个操作数在寄存器中,另一个在寄存器或存储器中,或指令中直接给出立即数。不允许两个都在存储器中。

IV 三操作数指令

ADC AX, BX ;该指令完成操作数AX、BX和CF位相加。

由此可见,操作数可分为源操作数和目的操作数。

源操作数:只能读取的操作数。

目的操作数:即可读取又可写入(存放操作结果)的操作数。

操作数还可分为数据操作数和地址操作数。

指令的长度主要取决于指令操作码的长度、操作数的长度和操作数的个数。通常指令字长位数越多,所能表示的操作信息也就越多,指令功能就越丰富。但位数多则指令所占的存储空间就多,读取指令的时间就增加。

字长(一般是指CPU的机器字长)是指CUP—次能够处理的二进制数位数,它都是字节长度(8位二进制数)的1、2、4或8倍,也就是8、16、32或64位。因此,指令字长也是字节的简单倍数,如一字节指令,二字节指令、三字节指令......。

一条指令中的信息按其含义分成若干个信息段,每一信息段占一个字节或多个字节,且按一定的顺序排列,这便于CPU解释执行。如8086/8088CPU的指令系统,它釆用1-6个指令字节的变字长,它包括:

第1字节:操作码;

第2字节:寻址方式;

第3-6字节:操作数;

三部分组成。

指令格式如下:

其中,第一个字节:

高6位是操作码。

W位说明传递数据的类型是字(W=1)还是字节(W=0)(Word);

D位标明数据传送的方向:D=0,数据从寄存器传出 D=1,数据传至寄存器;(Destination)。

其中,第二个字节:

REG字段:寄存器号,用3位编码寻址8种不同的寄存器,再根据第一字节中W位,选择8位或16位寄存器。如下图所示。(对使用段寄存器的指令,REG字段占2位)

8086指令的二进制编码非常多,很难以一张表实现指令与机器语言的对照。

为每种基本指令类型给出一个编码格式,对照格式填上不同的数字表示不同的寻址方式、数据类型,即可求得每条指令的机器码。

8086指令系统采用变长指令,指令的长度可由1~6字节组成。

机器指令的长度:变长,由操作码+寻址方式+操作数所需字节数来决定;

汇编指令的长度:汇编指令对应的机器指令的长度。

指令执行的过程就要考虑到指令长度:

① CPU从CS:IP所组成的地址中读取指令,将这个指令存放到指令缓存器中;

② IP = IP + 所读指令的字节数;

③ 执行指令缓存器中的内容,回到步骤1,重复这个过程。

1 寄存器间传送指令的编码

MOV SP,BX

该指令的功能是将BX寄存器的内容送到SP寄存器中。

MOV指令从10001000(ox88)开始编码。

该指令的编码格式为:100010DW MOD REG R/M.

W=1:表示传送的是字数据;

REG字段:选择SP,则REG字段编码=100;

D位=1:表示数据传至所选的寄存器(SP);

MOD=11:因另一个操作数BX也是寄存器。

根据W=1及寄存器名称为BX,从上图查得R/M=011。

所以,该指令的2字节编码为8B E3H

2 寄存器与存储器间传送指令的编码

MOV CL, [BX+l234H]

该指令的功能是将有效地址为(BX+1234H)存储单元中的数据字节传送到CL中。

指令的编码格式为:100010DW MOD REG R/M 数据.

第1、2字节可通过查表得到;第3字节存放16位位移量的低字节34H; 第4字节存放高字节12H 。

所以该指令的4字节编码为8A 8F 34 12H

3 立即数寻址指令的编码

MOV [BX+2100H], 0FA50H

指令的功能是将16位立即数送到指定有效地址的字存储单元中;其中低字节50H送列[BX+2100H]单元,高字节FAH送到(BX+2101H)单元。

该指令的编码格式为:110011W MOD 000 R/M 数据 数据(若W=1).

指令中不但有16位立即数,还有16位位移量;

所以,该指令的6字节编码为C7 87 00 21 50 FA H


4 包含段寄存器的指令的编码

MOV DS, AX

指令的功能是将AX寄存器的内容传送到数据段寄存器DS。

该指令的编码格式为:10001110 MOD 0 REG R/M .

段寄存器DS的编码为11,即REG字段为11;另一个操作数也是寄存器,所以MOD=11,而R/M字段应填上AX的三位代码000 .

所以,该指令的2字节编码为8E D8H

5 段超越前缀指令的编码

MOV [BX], DL

指令的功能是将DL寄存器的内容传送到有效地址为(BX)的字节存储单元。

该指令(不带段超越前缀)的编码格式为:100010DW MOD 0 REG R/M .

数据从寄存器传出,则D=0;传递数据为字节,则W=0;进而,REG=010;另一个操作数是存储器,所以MOD=00,而R/M=111 .该指令的编码是在不带段超越前缀的指令代码为88 17H.

在指令代码前一个8位的段超越的缀代码,代码的格式为001××110,其中××位表明段超越寄存器。由于段寄存器CS的代码为01,所以指令的第1个字节的编码为00101110,即 2EH.

所以,该指令的机器码为2E 88 17H

6 重点汇编指令

7 主要寻址方式

8 机器码汇编指令与ASCII

再来一段机器码、汇编代码、C语言代码对照:

-End-

相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: