指令系统

指令系统概述

  • 指令:要求计算机执行特定操作的命令,是程序员指挥计算机工作的最小单位。
  • 指令系统:指一台计算机全部指令的集合。也称计算机指令集。反应该计算机硬件能完成的,全部功能。是软硬件的界面。
  • 指令系统设计包括:指令格式、指令类型、寻址方式、数据形式。
    不同计算机有不同的指令系统(CPU不同-->指令系统不同-->功能不同)

指令的基本格式:

(二进制代码表示指令)


指令格式
  1. 指令操作码(性质和功能)
  • 定长操作码(操作码长度相同,编码简单、译码时间短、不便于新增指令)
  • 变长操作码(操作码位数不相同,压缩操作码平均长度、设计复杂、译码时间长)
  1. 指令的地址码(操作数地址)
  • 零地址指令(只有操作码,无操作数)


    image.png
  • 一地址指令(只有一个操作数)


    image.png
  • 二地址指令


    image.png
  • 三地址指令


    image.png
  • 多地址指令


    image.png

字长较长、功能较大、中型机中才会采用三地址指令和多地址指令

指令字长

操作码和地址码两部分组成的一串二进制数码的位数。(固定或变长)

  • 指令字长应与计算机字长相匹配,简化读取指令的操作,减少取指令的时间。一般指令字长是计算机字长的整数倍。(当指令字长=计算机字长时称为单字长指令,对它的访问只需要一次访问内存即可完成读取)

指令助记符

用较容易记忆的文字符号来表示指令中的操作码和操作数-->助记符

  • 所有指令助记符的集合及使用规则构成的程序设计语言,称为汇编语言(面向机器的低级语言)

80X86寻址方式

指令寻址

顺序寻址

处理器按程序顺序执行,一条指令结束,PC自动增量指向下一条指令,开始执行下一条指令。

跳转寻址

遇到程序分支等情况,需要控制流程跳转(转移)到指定位置(目标地址、目的地址)

按获得目标地址的方法不同,跳转寻址分为三类:

  • 相对寻址
    指令代码提供目标地址相对于当前指令地址的位移量,转移到目标地址就是当前指令地址加上位移量
    段内转移:在一个程序段中跳转。 (1000是目标地址)

1.同一程序被操作系统安排到不同的存储区执行时,指令间的位移没有改变
2.采用相对寻址就无需改变转移地址,给操作系统的灵活调度提供了很大的方便。

  • 直接寻址
    指令代码直接提供目标地址
    LABEL是段内还是段外是由汇编程序自动识别区分的
  • 间接寻址
    指令代码指出寄存器或存储单元地址,目标地址来自寄存器或存储单元的内容
    image.png

    80X86中指令地址是由代码段寄存器cs和指令指针寄存器来决定的。
    16位CPU是代码段值左移四位+IP=指令存储单元物理地址
    32位CPU(指令指针寄存器位32位,称EIP。利用代码段寄存器内容得到描述符,取出32位段地址+EIP的值=指令的物理地址)

数据寻址

80X86寻址方式类型
1.立即数寻址(指令需要的操作数紧跟在操作码之后作为指令代码的一部分,并随着处理器的取指操作从主存进入指令寄存器。)


立即寻址

2.寄存器寻址(指令的操作数存放在寄存器中)


寄存器寻址

3.存储器直接寻址(存储器寻址,操作数在存储单元,I/O指令特殊)
(如果操作数在主存单元中,指令代码中直接给出操作数有效地址称为存储器直接寻址)
存储器直接寻址

直接寻址段超越前缀

有效地址EA以变量名的方式给出

4.寄存器间接寻址(存储器寻址~)(有效地址存放在寄存器中,就是采用寄存器间接寻址存储器操作数)


寄存器间接寻址

数据段DI/SI/BX-->BS, 堆栈段BP-->SS

5.寄存器相对寻址(存储器寻址~)
(寄存器相对寻址的有效地址是寄存器内容和位移量的和)


寄存器相对寻址和间接寻址类似

寄存器相对寻址规定 BX-->DS,BP-->SS(ESP,EBP)

6.基址加变址寻址(存储器寻址~)(操作数有效地址是由基址寄存器(BX或BP)的内容加变址寄存器(SI或DI)的内容构成)


基址加变址

基址加变址寻址方式规定

7.相对基址加变址寻址(存储器寻址~)(操作数的有效地址是由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容再加上位移量构成)


image.png

有效地址和形式地址

  • 形式地址(指令中给出的地址)-->有效地址(经过某些规则计算)-->物理地址(处理器通过有效地址转换)-->访问存储单元


    image.png

    8.带比例的变址寻址(在32位的寻址方式中支持变址寻址寄存器内容乘以一个常数(可取1,2,4,8)这种寻址方式称为带比例的变址寻址)


    image.png

寻址方式及特点

  • 大多数处理器都支持基本寻址方式:
    立即数寻址、寄存器寻址和存储器直接寻址、寄存器间接寻址和寄存器相对寻址。

  • 目的操作数(寄存器或存储器寻址)<--源操作数(立即数、寄存器或存储器寻址)【两者不能同时为存储器寻址】

80X86CPU的常用指令

数据传送指令

1.通用数据传送指令(指令功能,指令支持的寻址方式,指令对标志的影响,特殊地方)

  • 数据传送指令(数据传送是计算机中最基本、最重要的一种操作,数据传送指令的功能是把数据从一个位置传送到另一位置)
    (1)通用数据传送指令(MOV,XCHG和XLAT方便传送)


    MOV:数据类型要一致,若两个操作数类型都不明确则利用PTR说明

    1、立即数只是源操作数,不是目的操作数。 2、存储器、段寄存器之间不能相互传送(通过寄存器作为中介)[CS代码段寄存器不能作为目的操作数]

    符号地址,指向一个字

    指出是word类型

0AH,0BH既可以认为是字节也可以认为是一个字。[SI]和[SI+2]属于存储器寻址方式既可以认为是字节地址也可以认为是字的地址。


错误的,最后一个目的操作数不能是ip或cs

XCHG

AX是一个字四位,AL是字节两位

XLAT

image.png

image.png

(2)堆栈操作指令(先进后出的主存区域)使用SS存放段地址,使用SP指针存放偏移地址。


当SP位于栈底时,堆栈空不能出栈不能pop,同理SP为0时在栈顶,堆栈满,不能push

PUSH

POP

image.png

image.png

(3)标志传送类指令(对标志寄存器(FR)保护和更新操作)
image.png

image.png

image.png

image.png

image.png

(4)地址传送类指令(存储器的逻辑地址传送至指定的寄存器中)


分类

image.png

image.png

image.png

(5)输入(外部设备-->CPU)输出指令(CPU-->外部端口)


<256都可以用,>256只能用DX寄存器

源操作数:8位二进制数提供的端口地址/DX间接提供的端口地址
目的操作数:AL字节数据/AX字数据
image.png
image.png

源操作数:AL/AX寄存器
目的操作数:8位二进制数据直接提供的端口地址/DX寄存器间接提供的端口地址(端口号>256时只能使用DX间接寻址)

80x86 CPU常用指令按功能分为

算术运算指令(带符号和不带符号的8位/16位二进制算数运算和BCD码表示的十进制算数运算。)

+、-、*、/、符号扩展、十进制调整

- 加减运算指令:

(+:ADD,ADC,INC)


image.png

image.png

image.png

image.png

image.png

image.png

image.png

减法指令(-:SUB,SBB,DEC,NEG,CMP)


image.png

image.png

image.png

image.png

image.png

image.png

减量指令(DEC):


image.png

image.png

求补指令(NEG):
image.png

比较指令(CMP)
image.png
  • 乘法运算指令(目的操作数隐含不显示)
    无符号数

    image.png

    image.png

    8位无符号数相乘

    16位无符号数相乘

    有符号数(补码-->源码 再乘。乘完符号相同+,符号相反-)
    image.png

    image.png

    image.png

    image.png

    image.png

  • 除法运算指令(源操作数代表除数,目的操作数隐含)
    无符号


    image.png

    image.png

    image.png

    有符号

    image.png

    image.png

    image.png

    被除数确定余数位(+则+),除数确定商的位(同号+)

    image.png

    image.png

    image.png

影响标志位的有:写标志寄存器SAHF

逻辑运算指令(字或字节按位逻辑运算)

dest和src都为1才为1,对AF无定义

image.png
image.png

image.png

image.png
image.png

image.png

指令的转移

移位运算指令(算数移位/逻辑移位:左移/右移。移位次数可>=1:可以是字节也可以是字进行操作)

image.png

逻辑左移:无符号数递增运算,每左移一位目的操作数扩大两倍;逻辑右移最低位进入CF最高位补0,无符号数的减位运算,目的操作数每右移一位,相当于原数除以2

算数右移:最高位补移位之前的符号位,符号位不变

对于逻辑移位和算数移位来说:


image.png
带不带进位主要看CF在不在移动序列中

image.png

对于循环移位指令来说:


image.png

程序控制指令

串操作及CPU控制指令

CISC和RISC

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350