精华内容
下载资源
问答
  • 下列指令中错误指令为
    千次阅读
    2021-06-24 07:26:26

    1、指出下面指令正误,对错误指令说明错误原因

    (1)MOV DS ,100×立即数不能直接送到段寄存器

    (2)MOV [1200H] , 23H×目的操作数不能确定是字节属性还是字属性等

    (3)MOV [1000H] , [2000H] ×存储器之间不能直接传送数据

    (4)MOV 1020H , CX×立即数不能作为目的操作数

    (5)MOV AX , [BX+BP+0100H] ×目的操作数的寻址方式错误BX和BP都是基址寄存器

    (6)MOV CS , AX×不能直接对CS赋值

    (7)PUSH AL×PUSH操作对象是字属性

    (8)PUSH WORD PTR [SI]√

    (9)OUT CX , AL×在OUT指令中用DX寄存器存放端口地址而不是CX

    (10)IN AL , [80H]×在IN指令中端口直接表示时,不加[]

    (11)MOV CL , 3300H×3300H数太大,AL寄存器不能存放

    (12)MOV AX , 2100H[BP] √

    (13)MOV DS , ES×段寄存器之间不能直接传送数据

    (14)MOV IP , 2000H×IP寄存器不能直接赋值,不能使用MOV指令

    (15)PUSH CS√

    (16)POP CS×POP指令不能使用CS寄存器,不能向CS寄存器中赋值

    2、已知3个变量的数据定义如下所示,分析给定的指令是否正确,有错误时加以改正。DA TA SEGMENT

    V AR1 DB ?

    V AR2 DB 10

    V AR3 EQU 100

    DA TA ENDS

    (1)MOV V AR1 , AX×源操作数和目的操作数类型不匹配

    (2)MOV V AR3 , AX×V AR3是一个常量,值不变,不能赋值

    (3)MOV BX , V AR1

    MOV [BX] , 10×源操作数和目的操作数类型不匹配

    (4)CMP V AR1 , V AR2×存储器之间不能直接传送数据

    (5)V AR3 EQU 20×EQU不能重复定义

    3、设V AR1和V AR2为字变量,LAB为标号,分析下列指令错误之处,并加以改正(1)ADD V AR1 , V AR2×2个数都是存储器操作数,不能直接放在指令中,指令要求必须有一个是寄存器操作数

    (2)MOV AL , V AR2×源操作数和目的操作数类型不匹配

    (3)SUB AL , V AR1×源操作数和目的操作数类型不匹配

    (4)JMP LAB[SI] ×标号LAB位于代码段,[SI]位于数据段,两个不同的段,LAB[SI]不能确定是代码段还是数据段

    (5)JNZ V AR1×JNZ指令的操作数应该是标号

    (6)JMP NEAR LAB×正确指令是JMP NEAR PTR LAB

    4、说明下面指令哪些需要加PTR伪操作。

    BV AL DB 10H , 20H

    WV AL DW 1000H

    (1)MOV AL , BV AL√

    (2)MOV DL , [BX] √

    更多相关内容
  • 1.数据传送指令中错误的操作是()。 A.MOVSS[BX+DI],1000H B....2017-4-467717春北航《汇编语言》在线作业二三一答案1.数据传送指令中错误的操作是()。A.MOVSS[BX+DI],1000HB.MOVDX,1000HC.MOVWORDPTR[BX],1000HD...

    1.数据传送指令中,错误的操作是()。 A.MOVSS[BX+DI],1000H B....

    2017-4-4

    677

    17春北航《汇编语言》在线作业二三一答案

    1.数据传送指令中,错误的操作是()。

    A.MOVSS[BX+DI],1000H

    B.MOVDX,1000H

    C.MOVWORDPTR[BX],1000H

    D.MOVDS,2000H

    正确答案25195982

    2.条件转移指令JNE的测试条件为().

    A.ZF=0

    B.CF=0

    C.ZF=1

    D.CF=1

    正确答案25195982

    3.CPU要访问的某一存储单元的实际地址称()

    A.段地址

    B.偏移地址

    C.物理地址

    D.逻辑地址

    正确答案25195982

    4.8086CPU在基址加变址的寻址方式中,变址寄存器可以为()

    A.BX或CX

    B.CX或SI

    C.DX或SI

    D.SI或DI

    正确答案25195982

    5.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。

    A.无符号十进制数136

    B.带符号十进制数-120

    C.压缩型BCD码十进制数88

    D.8位二进制数-8的补码表示

    正确答案25195982

    6.下列指令执行时出错的是()

    A.ADDBUF1,BUF2

    B.JMPDWORDPTRDAT[BX]

    C.MOVAX,[BX+DI]NUM

    D.TESTAL,08H

    正确答案25195982

    7.执行如下程序:执行如下程序:MOVAX,0MOVBX,1MOVCX,100A:ADDAX,BXINCBXLOOPAHLT执行后(BX)=()

    A.99

    B.100

    C.101

    D.102

    正确答案25195982

    8.要实现使BETA的值为56,应采用语句为()

    A.BETADB56

    B.BETADB56H

    C.BETAEQU56

    D.BETAEQU56H

    正确答案25195982

    9.在程序执行过程中,IP寄存器中始终保存的是()

    A.上一条指令的首地址

    B.下一条指令的首地址

    C.正在执行指令的首地址

    D.需计算有效地址后才能确定地址

    正确答案25195982

    10.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法()

    A.名字的第一个字符可以是大写英文字母及小写英文字母

    B.名字的第一个字符可以是字母、数字及、@、_

    C.名字的有效长度≤31个字符

    D.在名字中不允许出现$

    正确答案25195982

    11.对于下列程序段:AGAIN:MOVAL,[SI]MOVES:[DI],ALINCSIINCDILOOPAGAIN也可用()指令完成同样的功能。

    A.REPMOVSB

    B.REPLODSB

    C.REPSTOSB

    D.REPESCASB

    正确答案25195982

    12.设AL=0AH,下列指令执行后能使AL=05H的是()

    A.NOTAL

    B.ANDAL,0FH

    C.XORAL,0FH

    D.ORAL,0FH

    正确答案25195982

    13.实现将DX:AX中存放的32位数扩大四倍,正确的程序段是()。

    正确答案25195982

    14.已知(AX)=1234H,执行下述三条指令后,(AX)=()MOVBX,AXNEGBXADDAX,BX

    A.1234H

    B.0EDCCH

    C.6DCCH

    D.0000H

    正确答案25195982

    15.某存储单元的物理地址是12345H,可以作为它的段地址有()

    A.2345H

    B.12345H

    C.12340H

    D.1234H

    正确答案25195982

    2判断题

    1.并行加法器的运算速度主要取决于全加器单元的速度

    A.错误

    B.正确

    正确答案25195982

    2.随机存取方式是指:既可以读出也可以写入

    A.错误

    B.正确

    正确答案25195982

    3.子程序调用指令本身的执行不影响任何标志位,并且子程序体中指令的执行也不会改变标志位。

    A.错误

    B.正确

    正确答案25195982

    4.把若干个模块连接起来成为可执行文件的系统程序是连接程序。

    A.错误

    B.正确

    正确答案25195982

    5.子程序的返回指令是IRET/IRETD,而中断服务程序的返回指令是RET。

    A.错误

    B.正确

    正确答案25195982

    6.在同步控制方式中,所有指令执行时间相同

    A.错误

    B.正确

    正确答案25195982

    7.子程序调用伪指令INVOKE与子程序的调用指令CALL在功能上是一致的。

    A.错误

    B.正确

    正确答案25195982

    8.在BIOS系统中,01H、11H——判断键盘缓冲区内是否有字符可读。

    A.错误

    B.正确

    正确答案25195982

    9.计算机系统中的显示器都有二种显示方式:文本显示方式和图形显示方式。

    A.错误

    B.正确

    正确答案25195982

    10.1KB=1000字节

    A.错误

    B.正确

    正确答案25195982

    北航《汇编语言》在线作业三

    1

    1.执行如下程序:执行如下程序:MOVAX,0MOVBX,1MOVCX,100A:ADDAX,BXINCBXLOOPAHLT执行后(BX)=()

    A.99

    B.100

    C.101

    D.102

    正确答案25195982

    2.将DX的内容除以2,正确的指令是()

    A.DIV2

    B.DIVDX,2

    C.SARDX,1

    D.SHLDX,1

    正确答案25195982

    3.已知(AX)=1234H,执行下述三条指令后,(AX)=()MOVBX,AXNEGBXADDAX,BX

    A.1234H

    B.0EDCCH

    C.6DCCH

    D.0000H

    正确答案25195982

    4.条件转移指令JNE的测试条件为()

    A.ZF=0

    B.CF=0

    C.ZF=1

    D.CF=1

    正确答案25195982

    5.串操作指令中,目的操作数的段地址一定在()寄存器中。

    A.CS

    B.SS

    C.DS

    D.ES

    正确答案25195982

    6.PSW寄存器中共有()位条件状态位,有()位控制状态位。

    A.6、3

    B.3、6

    C.8、4

    D.4、8

    正确答案25195982

    7.对于下列程序段:AGAIN:MOVAL,[SI]MOVES:[DI],ALINCSIINCDILOOPAGAIN也可用()指令完成同样的功能。

    A.REPMOVSB

    B.REPLODSB

    C.REPSTOSB

    D.REPESCASB

    正确答案25195982

    8.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是()。

    正确答案25195982

    9.半导体静态存储器SRAM的存储原理是

    A.依靠双稳态触发电路

    B.依靠定时刷新

    C.依靠读后再生

    D.信息不再变化

    正确答案25195982

    10.设AL=0AH,下列指令执行后能使AL=05H的是()

    A.NOTAL

    B.ANDAL,0FH

    C.XORAL,0FH

    D.ORAL,0FH

    正确答案25195982

    11.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是()

    A.12CSBH

    B.12B6BHC

    C.12C59H

    D.12BFEH

    正确答案25195982

    12.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是()。

    A.MOVAL,00H

    B.ANDAL,00H

    C.XORAL,AL

    D.SUBAL,AL

    正确答案25195982

    13.设AH=0,AL=06H,BL=09H,执行指令ADDAL,BLAAA之后,其结果应是()。

    A.AH=01,AL=05

    B.AH=1AL=15

    C.AH=0AL=0FH

    D.AH=0AL=05

    正确答案25195982

    14.下面指令中,合理而有意义的指令是()。

    A.REPLODSB

    B.REPSCASB

    C.REPCMPSB

    D.REPMOVSB

    正确答案25195982

    15.串指令中的目的操作数地址是由()提供。

    A.SS:[BP]

    B.DS:[SI]

    C.ES:[DI]

    D.CS:[IP]

    正确答案25195982

    2判断题

    1.计算机通用键盘一般采取硬件编码电路产生键码

    A.错误

    B.正确

    正确答案25195982

    2.子程序由伪指令PROC与ENDP定义,主程序调用子程序由CALL指令实现,在子程序中通过IRET指令返回主程序。

    A.错误

    B.正确

    正确答案25195982

    3.键盘缓冲区是一个环形队列,其性质与《数据结构》课程中对“环形队列”所描述的性质不一样。

    A.错误

    B.正确

    正确答案25195982

    4.把若干个模块连接起来成为可执行文件的系统程序是连接程序。

    A.错误

    B.正确

    正确答案25195982

    5.图形显示的最小单位是象素,对每个象素可用不同的颜色来显示。

    A.错误

    B.正确

    正确答案25195982

    6.子程序的返回指令是IRET/IRETD,而中断服务程序的返回指令是RET。

    A.错误

    B.正确

    正确答案25195982

    7.串行接口是指:接口与总线之间并行传送,接口与设备之间串行传送

    A.错误

    B.正确

    正确答案25195982

    8.子程序调用伪指令INVOKE与子程序的调用指令CALL在功能上是一致的。

    A.错误

    B.正确

    正确答案25195982

    9.子程序调用一定是程序员在编写源程序时事先安排好的,是可知的,而中断是由中断源根据自身的需要产生的,都是不可预见的。

    A.错误

    B.正确

    正确答案25195982

    10.在异步通信中,数据传送所需时间由异步应答信号确定

    A.错误

    B.正确

    正确答案25195982

    北航《汇编语言》在线作业一

    1

    1.在进行二重循环程序设计时,下列描述正确的是()

    A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内

    B.外循环初值应置外循环之内;内循环初值应置内循环之内

    C.内、外循环初值都应置外循环之外

    D.内、外循环初值都应置内循环之外,外循环之内

    正确答案25195982

    2.串操作指令中,目的操作数的段地址一定在()寄存器中。

    A.CS

    B.SS

    C.DS

    D.ES

    正确答案25195982

    3.十六进制数88H,可表示成下面几种形式,请找出错误的表示()。

    A.无符号十进制数136

    B.带符号十进制数-120

    C.压缩型BCD码十进制数88

    D.8位二进制数-8的补码表示

    正确答案25195982

    4.测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法是()。

    正确答案25195982

    5.ORAL,AL是()操作指令。

    A.异或

    B.加法

    C.右移

    D.逻辑或

    正确答案25195982

    6.指令JMPFARPTRDONE属于()

    A.段内转移直接寻址

    B.段内转移间接寻址

    C.段间转移直接寻址

    D.段间转移间接寻址

    正确答案25195982

    7.已知BX=2000H,SI=1234H,则指令MOVAX,[BX+SI+2]的源操作在()中。

    A.数据段中偏移量为3236H的字节

    B.附加段中偏移量为3234H的字节

    C.数据段中偏移量为3234H的字节

    D.附加段中偏移量为3236H的字节

    正确答案25195982

    8.中断服务程序入口地址占用()个字节

    A.4

    B.6

    C.2

    D.1

    正确答案25195982

    9.某存储单元的物理地址是12345H,可以作为它的段地址有()

    A.2345H

    B.12345H

    C.12340H

    D.1234H

    正确答案25195982

    10.DOS系统功能调用中,显示单个字符的系统调用号是()

    A.01H

    B.02H

    C.08H

    D.09H

    正确答案25195982

    11.条件转移指令JNE的测试条件为()

    A.ZF=0

    B.CF=0

    C.ZF=1

    D.CF=1

    正确答案25195982

    12.PSW寄存器中共有()位条件状态位,有()位控制状态位。

    A.6、3

    B.3、6

    C.8、4

    D.4、8

    正确答案25195982

    13.在下列串操作指令中,同时使用源串和目的串地址指针的指令是()

    A.STOSW

    B.LODSW

    C.SCASW

    D.CMPSW

    正确答案25195982

    14.半导体静态存储器SRAM的存储原理是

    A.依靠双稳态触发电路

    B.依靠定时刷新

    C.依靠读后再生

    D.信息不再变化

    正确答案25195982

    15.总线的数据传输率是指

    A.能一次并行传送的数据位数

    B.可一次串行传送的数据位数

    C.可一次并行传送的数据的最大值

    D.单位时间内可传送的数据位数

    正确答案25195982

    2判断题

    1.若按中断源来划分,则系统中的中断又可分为:硬件中断和软件中断。

    A.错误

    B.正确

    正确答案25195982

    2.子程序的调用和返回是一对互逆操作,也是一种特殊的转移操作。

    A.错误

    B.正确

    正确答案25195982

    3.图形显示的最小单位是象素,对每个象素可用不同的颜色来显示。

    A.错误

    B.正确

    正确答案25195982

    4.在常用硬磁盘中,各道容量相同

    A.错误

    B.正确

    正确答案25195982

    5.在字符显示器的缓冲存储器中,一般存放着存放字符编码

    A.错误

    B.正确

    正确答案25195982

    6.并行加法器的运算速度主要取决于全加器单元的速度

    A.错误

    B.正确

    正确答案25195982

    7.若总线地址是16位,则直接访存的空间最大为64K

    A.错误

    B.正确

    正确答案25195982

    8.子程序名必须是一个合法的标识符,并前后二者要一致。

    A.错误

    B.正确

    正确答案25195982

    9.1KB=1000字节

    A.错误

    B.正确

    正确答案25195982

    10.子程序调用伪指令INVOKE与子程序的调用指令CALL在功能上是一致的。

    A.错误

    B.正确

    展开全文
  • 单片机的指令系统.pdf

    2022-06-20 02:19:42
    指令功能助记符与操作数各 种寻址方式的结合,共构造出111种指令,而同一种指令所对应的操作码可以多至8种(如指令 Rn对应寄存器R0~R7)。 80C51单片机的指令系统具有较强的控制操作类指令,容易实现"面向控制...
  • 第五章 指令系统5.1 指令系统概述及指令格式随堂测验1、下列关于指令(机器指令)的描述,正确的是( ) (多选) A、是计算机系统硬件与软件之间的接口 B、是程序员操作计算机硬件的接口C、是冯诺依曼结构计算机实现...

    第五章 指令系统

    5.1 指令系统概述及指令格式随堂测验

    1、下列关于指令(机器指令)的描述中,正确的是( ) (多选) A、是计算机系统中硬件与软件之间的接口 B、是程序员操作计算机硬件的接口

    C、是冯诺依曼结构计算机实现“程序控制”原理的载体 D、是指挥计算机指令特定操作的命令

    2、下列关于指令的描述中,正确的是 ( ) (多选) A、指令的操作码定义了指令的功能 B、指令的地址码字段是不可缺少的 C、单地址指令只能处理一个数据

    D、指令的地址码字段可以表示一个地址,也可以表示一个数据

    3、下列关于指令格式的描述中,正确的是( ) (多选)

    A、对采用定长操作码的计算机而言,若需要支持65条指令,则其操作码字段最少需要7位

    B、若指令中每个地址字段位均为4位,则对RR型指令而言,可以 使用16个寄存器 C、指令字长确定的情况下,指令的地址字段越多 ,则其位数就越少 D、计算机硬件是影响指令格式设计的因素之一

    5.2 寻址方式及指令寻址随堂测验

    1、直接寻址的无条件转移指令执行的效果是将将指令地址送入 ( ) (单选) A、程序计数器 PC B、地址寄存器MAR

    C、数据缓冲寄存器 MDR D、偏移地址累加器

    2、下列关于寻址方式的描述中,正确的是( ) (多选) A、包括指令寻址方式和数据的寻址方式

    B、形成指令和数据所在虚拟存储器地址的方法 C、形成指令和数据所在主存地址的方法 D、形成指令和数据在Cache地址的方法

    3、下列关于指令寻址方式的描述中,正确的是( ) (多选) A、指令的有效地址通过指令中形式地址字段给出 B、程序中有条件和无条件转移采用的就是跳跃寻址 C、指令的不同寻址方式需要通过寻址方式特征位来标识 D、顺序结构中CPU依次访问不同指令采用的就是顺序寻址

    1

    4、某计算机字长64位,采用单字长指令,下列描述中,正确的是( ) (多选) A、指令字长为64位 B、指令字长为16位

    C、顺序寻址时,PC

    5.3 操作数寻址方式随堂测验

    1、在数据寻址方式中,获取操作数最快的寻址方式是 ( ) ( 单选) A、寄存器寻址 B、立即数寻址 C、直接寻址 D、间接寻址

    2、若指令的形式地址中给出的是操作数的有效地址, 该指令采用的寻址方式是( ) ( 单选) A、直接寻址 B、立即数寻址 C、寄存器寻址 D、变址寻址

    3、假定计算机字长64位,采用单字长指令, 某指令采用间接寻址,则取操作数至少需要访问主存的次数为( ) (单选) A、1 B、2 C、3 D、4

    4、相对寻址方式中,指令所提供的相对地址是( ) (单选) A、本条指令在内存中的首地址为基准位置的偏移量

    B、本条指令的下条指令在内存中的首地址为基准位置的偏移量 C、本条指令的上条指令在内存中的首地址为基准位置的偏移量 D、本指令操作数的直接有效地址

    5、下列关于操作数的寻址方式的描述中,正确的是( ) (多选) A、直接寻址方式下 ,地址字段的位数影响数据的寻址范围 B、间接寻址方式下 ,地址字段的位数影响数据的寻址范围 C、立即数寻址方式下 ,地址字段的位数影响立即数的大小 D、寄存器寻址方式下,地址字段的位数影响立即数的大小

    5.4 指令格式设计随堂测验

    1、采用将操作码字段扩展到没有使用的地址码字段的指令格式设计方案的主要目的是( ) (单选)

    A、减少指令长度

    B、充分利用地址字段,提高指令效率 C、保持指令长度不变,增加指令数量

    2

    D、减少地址码数量

    2、某计算机采用32位单字长二地址指令,每个地址码为12位(含寻址方式字段),若已经定义了250条二地址指令,则还可以定义多少条单地址指令 ( ) (单选) A、4K B、8K C、16K D、24K

    3、某计算机字长32位,内存空间为4M ,采用单字长二地址指令,操作码长度固定。要求支持200条指令,要求支持的寻址方式为4种,下列寻址方式中,可支持访问整个存储空间的寻址方式是( ) (多选) A、直接寻址 B、寄存器寻址 C、寄存器间接寻址 D、变址寻址

    4、某计算机机器字长和存储字长32位,采用双字长,下列描述中正确的是( )(多选) A、采用双字长指令有利于支持更多的指令和设计位数更多的地址字段 B、顺序寻址方式下,PC

    C、在该计算机中完成RS型指令,至少需要访问内存3次 D、采用双字长指令有利于支持更多的寻址方式

    5.5 MIPS指令概述随堂测验

    1、某采用相对寻址的MIPS I 型指令,其立即数字段的值内容为 1110000011100011,则计算操作数有效地址时,与PC内容相加的偏移量是( ) ( 单选) A、1111111111111111 1000001110001100 B、1111111111111111 1110000011100011 C、0000000000000000 1110000011100011 D、0000000000000000 1000001110001100

    2、下列关于MIPS特点的描述中,正确的是( ) (多选) A、寻址方式简单

    B、属于精减指令集计算机RISC

    C、只有Load/Store指令才访问存储器 D、寄存器数量较多

    3、MIPS指令分为R、 I、 J三种类型的指令,下列关于MIPS指令格式的描述中,正确的是( ) (多选) A、指令长度固定

    B、操作码字段长度固定

    C、指令中寄存器字段长度固定 D、立即数字段长度固定

    参考答案如下:

    3

    4、下列关于 MIPS 寻址的下列描述中, 正确的是( ) ( 多选)

    A、相对寻址时,将32位地址左移两位的目的是为了实现按32位整数边界对齐存放 B、伪直接寻址时,26位直接地址左移两位的目的是为了使32位地址的低两位为0,实现按32位的整数边界对齐存放

    C、立即数寻址时,指令中的立即数直接送给指令中指定的寄存器 D、MIPS指令中不单独设置寻址方式字段

    5.6 MIPS指令详解随堂测验

    1、下列关于MIPS R型指令的描述中,正确的是( ) (多选) A、不同功能的R型指令使用的寄存器数量不一定相同 B、所有R型指令的操作码OP字段的值均为 000000 C、R型指令既有算术运算指令,也有逻辑运算指令 D、R型指令不支持访问主存的指令

    2、下列关于MIPS I 型指令的描述中,正确的是( ) (多选) A、I型指令包括访问内存的指令 B、I 型指令包括条件转移指令 C、I型指令包括算术运算型指令

    D、I 型指令支持给寄存器赋立即数的操作

    3、下列关于 MIPS J型指令的描述中 ,正确的是 ( ) (多选) A、J型指令支持无条件跳转指令 B、J型指令只使用伪直接寻址方式

    C、J 型指令执行后 ,PC寄存器的值最后两位一定为00 D、所有J型指令均不使用MIPS的任何通用寄存器 5.1 ABCD、AD、ABCD 5.2 A、AC、BD、AD 5.3 B、A、B、B、AC 5.4 C、D、CD、ABCD 5.5 A、ABCD、ABC、ABD 5.6 ABCD、ABD、ABC

    4

    展开全文
  • Docker还存在一个特殊的镜像,名scratch,它表示一个空白镜像,如果你一scratch基础镜像的话,意味着你不以任何镜像基础,接下来所写的指令将作为镜像的第一层。对于Linux下静态编译的程序来说,并不需要有...
  • 计算机组成原理知识点汇总(考研用)——第四章:指令系统  本文参考于《2021年计算机组成原理考研复习指导》(王道考研),《计算机组成原理》 4.指令系统 4.1 指令格式   指令(又称机器指令)是指示计算机执行...

    计算机组成原理知识点汇总(考研用)——第四章:指令系统

     本文参考于《2021年计算机组成原理考研复习指导》(王道考研),《计算机组成原理》
    思维导图:
    在这里插入图片描述

    4.指令系统

    4.1 指令格式

      指令(又称机器指令)是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该机的指令系统,也称指令集。 指令系统是计算机的主要属性,位于硬件和软件的交界面上。

     4.1.1 指令的基本格式

      一条指令就是机器语言的一个语句,它是一组有意义的二进制代码。一条指令通常包括操作码字段和地址码字段两部分:
    在这里插入图片描述
      其中,操作码指出指令中该指令应该执行什么性质的操作和具有何种功能。操作码是识别指令、了解指令功能及区分操作数地址内容的组成和使用方法等的关键信息。例如,指出是算术加运算还是算术减运算,是程序转移还是返回操作。
      地址码给出被操作的信息(指令或数据)的地址(这里的“地址”可以是主存地址,也可以是寄存器的地址,甚至可以是I/O设备的地址),包括参加运算的一个或多个操作数所在的地址、运算结果的保存地址、程序的转移地址、被调用的子程序的入口地址等。
      指令的长度是指一条指令中所包含的二进制代码的位数。指令字长取决于操作码的长度、操作数地址码的长度和操作数地址的个数。指令长度与机器字长没有固定的关系,它可以等于机器字长,也可以大于或小于机器字长。 通常,把指令长度等于机器字长的指令称为单字长指令,指令长度等于半个机器字长的指令称为半字长指令,指令长度等于两个机器字长的指令称为双字长指令。
      在一个指令系统中,若所有指令的长度都是相等的,则称为定长指令字结构。若各种指令的长度随指令功能而异,则称为变长指令字结构。 因为主存一般是按字节编址的,所以指令字长多为字节的整数倍。
      根据指令中操作数地址码的数目的不同,可将指令分成以下几种格式:

      1.零地址指令

    在这里插入图片描述
      只给出操作码OP,没有显式地址。这种指令有两种可能:
      (1)不需要操作数的指令,如空操作指令、停机指令、关中断指令等
      (2)零地址的运算类指令仅用在堆栈计算机中。通常参与运算的两个操作数隐含地从栈顶和次栈顶弹出,送到运算器进行运算,运算结果再隐含地压入堆栈。

      2.一地址指令

    在这里插入图片描述
      根据操作码的含义不同,有两种常见形态:
      (1)只有目的操作数的单操作数指令,按A1地址读取操作数,进行OP操作后,结果存回原地址。指令含义:OP(A1)——>A1;
      如操作码含义是加1、减1、求反、求补等
      (2)隐含约定目的地址的双操作数指令,按指令地址A1可读取源操作数,指令可隐含约定另一个操作数由ACC提供,运算结果也将存放在ACC中。指令含义:(ACC)OP(A1)——>ACC;
      若指令字长为32位,操作码占8位,1个地址码字段占24位,则指令操作数的直接寻址范围为224=16M;

      3.二地址指令

    在这里插入图片描述

      指令含义:(A1)OP(A2)——>A1;
      对于常用的算术和逻辑运算指令,往往要求使用两个操作数,需分别给出目的操作数和源操作数的地址,其中目的操作数地址还用于保存本次的运算结果。
      若指令字长为32位,操作码占8位,两个地址码字段各占12位,则指令操作数的直接寻址范围为212=4K

      4.三地址指令

    在这里插入图片描述

      指令含义:(A1)OP(A2)——>A3
      若指令字长为32位,操作码占8位,3个地址码字段各占8位,则指令操作数的直接寻址范围为28=256。若地址字段均为主存地址,则完成一条三地址需要4次访问存储器(取指令1次,取两个操作数2次,存放结果1次)

      5.四地址指令

    在这里插入图片描述
      指令含义:(A1)OP(A2)——>A3,A4=下一条将要执行指令的地址
      若指令字长为32位,操作码占8位,4个地址码字段各占6位,则指令操作数的直接寻址范围为26=64

     4.1.2 定长操作码指令格式

      定长操作码指令在指令字的最高位部分分配固定的若干位(定长)表示操作码。一般n位操作码字段的指令系统最大能够表示2n条指令。

     4.1.3 扩展操作码指令格式

      为了在指令字长有限的前提下仍保持比较丰富的指令种类,可采取可变长度操作码,即全部指令的操作码字段的尾数不固定,且分散地放在指令字的不同位置上。
      最常见的变长操作码方法是扩展操作码,它使操作码的长度随地址码的减少而增加,不同地址数的指令可具有不同长度的操作码, 从而在满足需要的前提下,有效地缩短指令字长。下图为一种扩展操作码的安排方式:
    在这里插入图片描述
      在图中,指令字长为16位,其中4位为基本操作码字段OP,另有3个4位长的地址字段A1、A2、A3。图中所示的三地址指令为15条,1111留作扩展操作码之用;二地址指令15条,1111 1111留作扩展操作码之用;一地址指令为15条,1111 1111 1111留作扩展操作码之用;零地址指令为16条。
      除这种安排外,还有其他多种扩展方法,如形成15条三地址指令、12条二地址指令、63(3x16+15)条一地址指令和16条零地址指令。
      在设计扩展操作码指令格式时,须注意:
      (1)不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同
      (2)各指令的操作码不能重复
      通常情况下,对使用频率较高的指令分配较短的操作码,对使用频率较低的指令分配较长的操作码


      例题:一个计算机系统采用32位单字长指令,地址码为12位,若定义了250条二地址指令,则还可以有()条单地址指令

      答案:24K;

      例题:一处理器中共有32个寄存器,使用16位立即数,其指令系统结构中共有142条指令。在某个给定的程序中,20%的指令带有一个输入寄存器和一个输出寄存器;30%的指令带有两个输入寄存器和一个输出寄存器;25%的指令带有一个输入寄存器、一个输出寄存器、一个立即数寄存器;其余25%的指令带有一个立即数输入寄存器和一个输出寄存器。
      (1)对于以上4种指令类型中的任意一种指令类型来说,共需多少位?假定指令系统结构要求所有指令长度必须是8的整数倍
      (2)与使用定长指令集编码相比,当采用变长指令集编码时,该程序能够少占用多少存储器空间?

      答案:(1)由于有142条指令,因此至少需要8位才能确定各条指令的操作码。20%的一个输入寄存器和一个输出寄存器指令需要18位,对齐到24位;30%的两个输入寄存器和一个输出寄存器需要23位,对齐到24位;25%的一个输入寄存器、一个输出寄存器、一个立即数寄存器指令需要34位,对齐到40位;25%的一个立即数输入寄存器和一个输出寄存器需要29位,对齐到32位;
      (2)由于变长指令最长的长度为40位,所以定长指令编码每条指令的长度均为40位。而采用变长编码,平均长度为30位。能少占用25%的存储空间。

      例题:假设指令字长为16位,操作数的地址码为6位,指令有零地址、一地址、二地址三种格式。
      (1)设操作码固定,若零地址指令有M种,一地址指令有N种,则二地址指令最多有几种
      (2)采用扩展操作码技术,二地址指令最多有几种
      (3)采用扩展操作码技术,若二地址指令有P条,零地址指令有Q条,则一地址指令最多有几种

      答案:(1)16-M-N;(2)15种;(3)(16-P)x 2^6-Q x 2 ^(-6);二地址指令操作码每减少一个,可多构成2 ^6条一地址指令操作码;一地址指令操作码每减少一个,可多构成2 ^6条零地址指令操作码;

      例题:在一个36位长的指令系统中,设计一个扩展操作码,使之能表示下列指令:
      (1)7条具有两个15位地址和一个3位地址的指令
      (2)500条具有一个15位地址和一个3位地址的指令
      (3)50条无地址指令

      答案:在这里插入图片描述
      例题:某模型机共有64种操作码,位数固定,且具有以下特点:
      (1)采用一地址或二地址格式
      (2)有寄存器寻址、直接寻址和相对寻址(位移量为-128~+127)3种寻址方式
      (3)有16个通用寄存器,算术运算和逻辑运算的操作数均在寄存器中,结果也在寄存器中
      (4)取数/存数指令在通用寄存器和存储器之间传送数据
      (5)存储器容量为1MB,按字节编址
      要求设计算术逻辑指令,取数/存数指令和相对转移指令的格式,并简述理由

      答案:应有寻址特征位;
    在这里插入图片描述
    在这里插入图片描述


    4.2 指令的寻址方式

      寻址方式是指寻找指令或操作数有效地址的方式,即确定本条指令的数据地址及下一条待执行指令的地址的方法。寻址方式分为指令寻址和数据寻址两大类
      指令中的地址码字段并不代表操作数的真实地址,这种地址称为形式地址A。形式地址结合寻址方式,可计算出操作数在存储器中的真实地址,这种地址称为有效地址EA。

     4.2.1 指令寻址和数据寻址

      寻找下一条将要执行的指令地址称为指令寻址; 寻找操作数的地址称为数据寻址。

      1.指令寻址

      指令寻址方式有两种:顺序寻址方式与跳跃寻址方式。
      (1)顺序寻址可通过PC+1(1个指令字长),自动形成下一条指令的地址
      (2)跳跃寻址通过转移类指令实现。所谓跳跃,是指下一条指令的地址码不由程序计数器给出,而由本条指令给出下条指令地址的计算方式。 是否跳跃可能受状态寄存器和操作数的控制,而跳跃到的地址分为绝对地址(由标记符直接得到)和相对地址(相对于当前指令地址的偏移量),跳跃的结果是当前指令修改PC值,所以下一条指令仍然通过PC给出。

      2.数据寻址

      为区别数据寻址的不同方式,通常在指令字中设一个字段,用来指明属于哪种寻址方式
    在这里插入图片描述

     4.2.2 常见的数据寻址方式

      1.隐含寻址

      这种类型的指令不明显地给出操作数的地址,而在指令中隐含操作数的地址。 例如,单地址的指令格式就不明显地在地址字段中指出第二操作数的地址,而规定累加器ACC作为第二操作数地址,指令格式明显指出的仅是第一操作数的地址。因此,累加器ACC对单地址指令格式来说是隐含寻址。
    在这里插入图片描述
      隐含寻址的优点是有利于缩短指令字长;缺点是需增加存储操作数或隐含地址的硬件。

      2.立即(数)寻址

      这种类型的指令的地址字段指出的不是操作数的地址,而是操作数本身,又称立即数。 数据采用补码形式存放。
    在这里插入图片描述
      #表示立即寻址特征,A就是操作数本身
      立即寻址的优点是指令在执行阶段不访问主存,指令执行时间最短; 缺点是A的位数限制了立即数的范围。

      3.直接寻址

      指令字中的形式地址A是操作数的真实地址EA,即EA=A
    在这里插入图片描述
      直接寻址的优点是简单,指令在执行阶段仅访问一次主存,不需要专门计算操作数的地址;缺点是A的位数决定了该指令操作数的寻址范围,操作数的地址不易修改。

      4.间接寻址

      指令的地址字段给出的形式地址不是操作数的真实地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA=(A)。间接寻址可以是一次间接寻址,也可是多次间接寻址。
    在这里插入图片描述
      在图中两次间接寻址中,主存字第一位为1时,表示取出的仍不是操作数的地址,即多次间址;主存字第一位为0时,表示取得的是操作数的地址。 (当多次间接寻址时,可用存储字的首位来标志间接寻址是否结束,存储字的首位不能作为EA的组成部分)
      间接寻址的优点是可扩大寻址范围(有效地址EA的位数大于形式地址A的位数), 便于编制程序(用间接寻址可方便地完成子程序返回);缺点是指令在执行阶段要多次访存(一次间接寻址需2次访存,多次间接寻址需根据存储字的最高位确定访存次数)。 由于访问速度过慢,这种寻址方式并不常用。一般问到扩大寻址范围时,通常指的是寄存器间接寻址。

      5.寄存器寻址

      寄存器寻址是指在指令字中直接给出操作数所在的寄存器的编号,即EA=Ri,其操作数在由Ri所指的寄存器内。在这里插入图片描述
      寄存器寻址的优点是指令在执行阶段不访问主存,只访问寄存器, 因寄存器数量较少,对应地址码长度较小,使得指令字短且因不用访存,所以执行速度快,支持向量/矩阵运算;缺点是寄存器价格昂贵,计算机中的寄存器数量有限。

      6.寄存器间接寻址

      寄存器间接寻址是指在寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(Ri
    在这里插入图片描述
      寄存器间接寻址的特点是,与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)

      7.相对寻址

      相对寻址是把PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+A其中A是相对于当前指令地址的位移量,可正可负,补码表示。
    在这里插入图片描述
      A的位数决定操作数的寻址范围。
      相对寻址的优点是操作数的地址不是固定的,它随PC值的变化而变化,且与指令地址之间总是相差一个固定值,因此便于程序浮动。 相对寻址广泛用于转移指令。

      对于转移指令JMP A,当CPU从存储器中取出一字节时,会自动执行(PC)+1——>PC。 若转移指令的地址为X,占2B,则在取出该指令后,PC的值会增2,即(PC)=X+2, 这样在执行完该指令后,会自动跳转到X+2+A的地址继续执行。

      8.基址寻址

      基址寻址是指将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(BR)+A。 其中基址寄存器既可采用专用寄存器,又可采用通用寄存器。(基址寄存器可采用隐式的和显式的两种。所谓隐式,是在计算机内专门设有一个基址寄存器BR,使用时用户不必明显指出该基址寄存器,只需由指令的寻址特征位反映出基址寻址即可。显式是在一组通用寄存器里,由用户明确指出哪个寄存器作为基址寄存器)
    在这里插入图片描述
      基址寄存器是面向OS的,其内容由OS或管理程序确定,主要用于解决程序逻辑空间与存储器物理空间的无关性。 在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。 采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由OS确定。

      基址寻址的优点是可扩大寻址范围(基址寄存器的位数大于形式地址A的位数);用户不必考虑自己的程序存于主存的哪个空间区域,因此有利于多道程序设计,并可用于编制浮动程序,但偏移量(形式地址A)的位数较短。


      基址寻址在多道程序中极为有用。用户可不必考虑自己的程序存于主存的哪一空间区域,完全可由OS或管理程序根据主存的使用情况,赋予基址寄存器内一个初始值(即基地址),便可将用户程序的逻辑地址转化为主存的物理地址(实际地址),把用户程序安置于主存的某一空间区域


      9.变址寻址

      变址寻址是指有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容之和,即EA=(IX)+A, 其中IX为变址寄存器(专用),也可用通用寄存器作为变址寄存器。
    在这里插入图片描述
      变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(作为偏移量),形式地址A不变(作为基地址)
      变址寻址的优点是可扩大寻址范围(变址寄存器的位数大于形式地址A的位数);在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。 偏移量(变址寄存器IX)的位数足以表示整个存储空间。
      变址寻址与基址寻址的有效地址形成过程极为相似。但从本质上来讲,两者有较大区别。基址寻址面向系统,主要用于为多道程序或数据分配存储空间,因此基址寄存器的内容通常由OS或管理程序确定,在程序的执行过程中其值不可变,而指令字中的A是可变的;变址寻址立足于用户,主要用于处理数组问题,在变址寻址中,变址寄存器的内容由用户设定,在程序执行过程中其值可变,而指令字中的A是不可变的。

      10.堆栈寻址

      堆栈是存储器(或专用寄存器组)中一块特定的、按后进先出原则管理的存储区,该存储区中读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)堆栈可分为硬堆栈与软堆栈两种。
      寄存器堆栈又称硬堆栈。寄存器堆栈的成本高,不适合做大容量的堆栈;而从主存中划出的一段区域来做堆栈是最常用的方法,这种堆栈称软堆栈。
      在采用堆栈结构的计算机系统中,大部分指令表面上都表现为无操作数指令的形式,因为操作数地址都隐含使用了SP。通常,在读/写堆栈中的一个单元的前后都伴有自动完成对SP内容的增量或减量操作


      寻址方式、有效地址、访存次数(不包含为取本条指令而做的访存)的总结:
    在这里插入图片描述

      各常见指令寻址方式的特点和适用情况:
      立即寻址操作数获取便捷,通常用于给寄存器赋初值
      直接寻址相对于立即寻址,缩短了指令长度
      间接寻址扩大了寻址范围,便于编制程序,易于完成子程序返回
      寄存器寻址的指令字较短,指令执行速度较快
      寄存器间接寻址扩大了寻址范围
      基址寻址扩大了操作数寻址范围,适用于多道程序设计,常用于为程序或数据分配存储空间
      变址寻址主要用于处理数组问题,适合编制循环程序
      相对寻址用于控制程序的执行顺序、转移等


     4.2.3 X86汇编指令入门

      1.相关寄存器

      X86处理器中有8个32位的通用寄存器,各寄存器及说明如图:
    在这里插入图片描述
      为了向后兼容,EAX、EBX、ECX、EDX的高2位字节和低2位字节可独立使用,E为Extended,表示32位的寄存器。例如,EAX的低两位字节称为AX,而AX的高低字节又可分别作为两个8位寄存器,分别称为AH和AL。寄存器的名称大小写均可。

      2.寻址模式和内存分配

      (1)寻址模式
      以mov指令为例,mov用于在内存和寄存器之间移动数据,它有两个参数:第一个是目的地址,第二个是源地址。

    mov eax,[ebx]				;将ebx值指示的内存地址中的4字节传送到eax
    mov [var],ebx				;将ebx值传送到var的值指示的内存地址中
    mov eax,[esi-4]				;将esi-4值指示的内存地址中的4字节传送到eax
    mov [esi+eax],cl			;将cl值传送到esi+eax值指示的内存地址中
    mov edx,[esi+4*ebx]			;将esi+4*ebx值指示的内存中的4字节传送到edx
    

      (2)数据类型长度规定
      在汇编语言中声明内存大小时,一般显式地使用DB(D表示Data,B表示Byte)、DW(W表示Word,2Bytes)和DD(Double Word,4Bytes)。X86提供了三个指示规则标记,分别为BYTE PTR、WORD PTR和DWORD PTR,如:

    mov byte ptr [ebx],2		;2以单字节形式传送到ebx值指示的内存地址中
    mov word ptr [ebx],2		;2以双字节形式传送到ebx值指示的内存地址中
    mov dword ptr [ebx],2		;2以四字节形式传送到ebx值指示的内存地址中
    
      3.常用指令

      汇编指令通常可分为数据传送指令、逻辑计算指令和控制流指令。以下用于操作数的标记分别表示寄存器、内存和常数:
      < reg >:表示任意寄存器,若其后带有数字,则指定其位数,如< reg32 >表示32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、ESP或EBP);< reg16 >表示16位寄存器(AX、BX、CX或DX);< reg8 >表示8位寄存器(AH、AL、BH、BL、CH、CL、DH、DL)
      < mem >:表示内存地址(如[eax]、[var+4]或dword ptr[eax+ebx])
      < con >:表示8位、16位或32位常数。如< con8 >表示8位常数;
      X86中的指令机器码长度为1字节,对同一指令的不同用途有多种编码方式,如:

    mov ax,<con16>			;机器码为B8H
    mov al,<con8>			;机器码为B0H
    mov <reg16>/<mem16>,<reg16>			;机器码为89H
    mov <reg8>,<reg8>/<mem8>			;机器码为8AH
    mov <reg16>,<reg16>/<mem16>			;机器码为8BH
    

      (1)数据传送指令
      mov指令:
      mov指令将第二个操作数(寄存器的内容、内存中的内容或常数值)复制到第一个操作数(寄存器或内存)。但不能用于直接从内存复制到内存

    语法:
    mov <reg>,<reg>
    mov <reg>,<mem>
    mov <mem>,<reg>
    mov <reg>,<con>
    mov <mem>,<con>
    例:
    mov eax,ebx		;将ebx值复制到eax
    mov byte ptr [var],5		;5保存到var值指示的内存地址的一字节中
    

      push指令:
      push指令将操作数压入内存的栈,常用于函数调用。ESP是栈顶,压栈前先将ESP值减4(栈增长方向与内存地址增长方向相反),然后将操作数压入ESP指示的地址。

    语法:
    push <reg32>
    push <mem>
    push <con32>
    例:(栈中元素固定为32位)
    push eax		;将eax值压栈
    push [var]		;将var值指示的内存地址的4字节值压栈
    

      pop指令:
      出栈前先将ESP指示的地址中的内容出栈,然后将ESP值+4

    pop edi			;弹出栈顶元素送到edi
    pop [ebx]		;弹出栈顶元素送到ebx值指示的内存地址的4字节中
    

      (2)算术与逻辑运算指令
      add/sub指令:
      add指令将两个操作数相加,相加的结果保存到第一个操作数中。sub指令用于两个操作数相减,相减的结果保存到第一个操作数中。

    语法:
    add <reg>,<reg> / sub <reg>,<reg>
    add <reg>,<mem> / sub <reg>,<mem>
    add <mem>,<reg> / sub <mem>,<reg>
    add <reg>,<con> / sub <reg>,<con>
    add <mem>,<con> / sub <mem>,<con>
    例:
    sub eax,10		;eax<——eax-10
    add byte ptr [var],10		;10与var值指示的内存地址的一字节值相加,并将
    							结果保存在var值指示的内存地址的字节中
    

      inc/dec指令
      inc/dec指令分别表示将操作数自加1、自减1

    语法:
    inc <reg> / dec <reg>
    inc <mem> / dec <mem>
    例:
    dec eax			;eax值自减1
    inc dword ptr [var]			;var值指示的内存地址的4字节值自加1
    

      imul指令
      带符号整数乘法指令,有两种格式:(1)两个操作数,将两个操作数相乘,结果保存在第一个操作数中,第一个操作数必须为寄存器;(2)三个操作数,将第二个和第三个操作数相乘,并将结果保存在第一个操作数中,第一个操作数必须为寄存器

    语法:
    imul <reg32>,<reg32>
    imul <reg32>,<mem>
    imul <reg32>,<reg32>,<con>
    imul <reg32>,<mem>,<con>
    例:
    imul eax,[var]				;eax<——eax*[var]
    imul esi,edi,25				;esi<——edi*25
    

      乘法操作结果可能溢出,则编译器置溢出标志OF=1,以使CPU调出溢出异常处理程序;

      idiv指令:
      带符号整数除法指令,它只有一个操作数,即除数,而被除数则为edx:eax中的内容(64位整数),操作结果有两部分:商和余数,商送到eax,余数则送到edx。

    语法:
    idiv <reg32>
    idiv <mem>
    例:
    idiv ebx
    idiv dword ptr [var]
    

      and/or/xor指令
      逻辑与、逻辑或、逻辑异或操作指令,用于操作数的位操作,操作结果放在第一个操作数中

    语法:
    and <reg>,<reg> / or <reg>,<reg> / xor <reg>,<reg> 
    and <reg>,<mem> / or <reg>,<mem> / xor <reg>,<mem>
    and <mem>,<reg> / or <mem>,<reg> / xor <mem>,<reg>
    and <reg>,<con> / or <reg>,<con> / xor <reg>,<con>
    and <mem>,<con> / or <mem>,<con> / xor <mem>,<con>
    例:
    and eax,0fH			;将eax中的前28位全部置0,最后4位保持不变
    xor edx,edx			;置edx中的内容为0
    

      not指令
      取反

    语法:
    not <reg>
    not <mem>
    例:
    not byte ptr [var]		;将var值指示的内存地址的一字节的所有位翻转
    

      neg指令
      取负

    语法:
    neg <reg>
    neg <mem>
    例:
    neg eax				;eax<——-eax
    

      shl/shr指令
      逻辑移位指令,shl为逻辑左移,shr为逻辑右移,第一个操作数表示被操作数,第二个操作数指示移位的位数。

    语法:
    shl <reg>,<con8> / shr <reg>,<con8>
    shl <mem>,<con8> / shr <mem>,<con8>
    shl <reg>,<cl> / shr <reg>,<cl>
    shl <mem>,<cl> / shr <mem>,<cl>
    例:
    shl eax,1			;将eax值左移一位,相当于乘2
    shr ebx,cl			;将ebx值右移n位(n为cl中的值),相当于除以2^n
    

      (3)控制流指令
      X86处理器维持着一个指示当前执行指令的指令指针IP。IP寄存器不能直接操作,但可用控制流指令更新。
      jmp指令:
      控制IP转移到label所指示的地址

    语法:
    jmp <label>
    例:
    jmp begin
    

      jcondition指令
      条件转移指令,它依据处理机状态字中的一系列条件状态转移。

    语法:
    je <label> (jump when equal)
    jne <label> (jump when not equal)
    jz <label> (jump when last result was zero)
    jg <label> (jump when greater than)
    jge <label> (jump when greater than or equal to)
    jl <label> (jump when less than)
    jle <label> (jump when less than or equal to )
    例:
    cmp eax,ebx
    jle done		;若eax的值小于ebx值,跳转到done指示的指令执行,否则执行
    					下一条指令
    

      cmp指令
      比较两个操作数的值,并根据比较结果设置处理机状态字中的条件码,通常和jcondition指令搭配使用

    语法:
    cmp <reg>,<reg>
    cmp <reg>,<mem>
    cmp <mem>,<reg>
    cmp <reg>,<con>
    例:
    cmp dword ptr [var],10
    jne loop 			;若var指示的内存地址的4字节内容=10,则继续执行下一条
    					指令,否则跳转到loop指示的指令执行
    

      call/ret指令
      这两条指令实现子程序(过程、函数等)的调用及返回。call指令首先将当前执行指令地址入栈,然后无条件转移到由标签指示的指令。call指令保存调用之前的地址信息(当call指令结束后,返回调用之前的地址)。ret指令实现子程序的返回机制,ret指令弹出栈中保存的指令地址,然后无条件转移到保存的指令地址执行。

    call <label>
    ret
    

      例题:指令系统中采用不同寻址方式的目的是()
      A.提供扩展操作码的可能并降低指令译码难度
      B.可缩短指令字长,扩大寻址空间,提高编程的灵活性
      C.实现程序控制
      D.三者都正确

      答案:B;

      例题:为了缩短指令中某个地址段的位数,有效的方法是采取()
      A.立即寻址  B.变址寻址  C.基址寻址  D.寄存器寻址

      答案:D;

      例题:相对寻址方式中,指令所提供的相对地址实质上是一种()
      A.立即数  B.内存地址  C.以本条指令在内存中首地址为基准位置的偏移量  D.以下条指令在内存中首地址为基准位置的偏移量

      答案:D;

      例题:某计算机有16个通用寄存器,采用32位定长指令字,操作码字段(含寻址方式位)为8位,Store指令的源操作数和目的操作数分别采用寄存器直接寻址和基址寻址方式。若基址寄存器可使用任一通用寄存器,且偏移量用补码表示,则Store指令中偏移量的取值范围是()
      A.-32768~+32767  B.-32767 ~+32768
      C.-65536~+65535  D.-65535 ~+65536

      答案:A;目的操作数采用基址寻址需指定寄存器,用4位,留给偏移地址16位

      例题:设相对寻址的转移指令占3B,第一字节为操作码,第二、三字节为相对转移量(补码表示),而且数据在存储器中采用以低字节为字地址的存放方式。每当CPU从存储器取出一字节时,即自动完成(PC)+1——>PC。若PC的当前值为240(10进制),要求转移到290(10进制),则转移指令的第二、三字节的机器代码是();若PC的当前值为240(10进制),要求转移到200(10进制),则转移指令的第二、三字节的机器代码是()

      答案:2FH、00H;D5H、FFH;小端方式:低位存放在低地址,高位存放在高地址。低字节为字地址即小端方式大端方式:高位字节存放在低地址,低位字节存放在高地址,高位字节地址为字地址即大端方式。

      例题:某计算机指令系统采用定长操作码和变长指令码格式。
      (1)采用什么寻址方式时指令码长度最短?采用什么寻址方式时指令码长度最长?
      (2)采用什么寻址方式时执行速度最快?采用什么寻址方式时执行速度最慢?
      (3)若指令系统采用定长指令码格式,则采用什么寻址方式时执行速度最快

      答案:(1)寄存器寻址方式和寄存器间接寻址方式的指令码长度最短。立即寻址方式、直接寻址方式、间接寻址方式的指令码长度最长。若指令码长度太短,则无法表示范围较大的立即数和寻址到较大的内存地址空间
      (2)寄存器寻址方式执行速度最快(采用变长指令码格式,由于要表示一定范围内的立即数,包含立即数的指令通常需要较多的二进制位,取指令时,可能需要不止一次地读内存来完成取指令,因此寄存器寻址方式执行速度最快);间接寻址方式执行速度最慢。
      (3)立即寻址方式执行速度最快(采用定长指令码格式时,所有指令所包含的二进制位相同)

      例题:在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
      答案:(1)32;
      (2、3)寻址范围是一个数字范围,不带有单位。寻址范围的大小是一个数,指寻址区间的大小。注意变址寻址形式地址不变。
    在这里插入图片描述
      例题:
    在这里插入图片描述
    在这里插入图片描述
      答案:(1)16,8,16,16;  (2)0000H~FFFFH;
      (3)2315H;自增操作在运算结束后进行,R5的内容由5678H变为5679H,存储单元5678H中的内容变为68ACH;

      例题:在这里插入图片描述

      答案:
    在这里插入图片描述

      例题:在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述
      答案:(1)按字节编址,最多后跳127条指令
      (2)1FD4H,200EH;
      (3)C=Z=1,N=0;CF在最高位有进、借位时置1,符号标志表示运算结果最高位(无符号数比较,若<=,运算结果最高位可能为1也可能为0,如10H-A0H=70H,最高位为0)
      (4)部件1为指令寄存器,用于存放当前指令;多路选择器左边线上的结果应为PC+2+2xOFFSET。部件2用于左移1位实现乘2,为移位寄存器。部件3用于PC+2和2xOFFSET相加,为加法器。

      例题:
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

      答案:(1)128;  (2)0240H、0488H、06EAH;  (3)0,mov,mova,left,read,sub,mov,SRout  (4)4、2;读/写寄存器需1个时钟周期

      例题:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

      答案:(1)M为CISC。M的指令长短不一,不符合RISC指令系统的特点
      (2)96B;f1的第一条指令所在的虚拟地址为00401020H,最后一条指令的虚拟地址为0040107FH,f1的机器指令代码长度为60H=96B;
      (3)CF=1;执行第20条指令时,在补码加/减运算器中执行0减FFFF FFFFH操作,减法运算时的借位标志CF=1;
      (4)不能,shl指令把一个整数的所有有效数位整体左移,而对于float型变量,其机器数中包含阶码部分,将其作为一个整体左移时不能实现乘2的功能;

      例题:在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

      答案:(1)10次;执行第16行的call指令时递归调用f1;
      (2)第12行的jle指令是条件转移指令;第16行的call指令、第20行的jmp指令、第30行的ret指令一定会使程序跳转执行;
      (3)0040102AH;偏移量为00401000H-0040102AH=FFFF FFD6H;小端方式;
      (4)f(13)超出了int型数据能表示的最大范围,因此返回的是一个发生了溢出的错误结果;可将函数f1的返回值改为long long
      (5)函数的返回值为int型,若乘积的高33位为非全0或非全1,则OF=1;应加一条溢出自陷指令,使得CPU自动查询溢出标志OF,当OF=1时调出溢出异常处理程序。

      46题答案:虚拟地址的高20位为页号,相同,在同一页中;高22位为标记,中间4位为组号,低6位为块内地址;虚拟地址和物理地址的最低12位相同,对应的组号为0;


    4.3 CISC和RISC的基本概念

      指令系统朝两个截然不同的方向发展:一是增强原有指令的功能,设置更为复杂的新指令实现软件功能的硬化,这类机器称为复杂指令系统计算机(CISC)。 典型的有采用X86架构的计算机;二是减少指令种类和简化指令功能,提高指令的执行速度,这类机器称为精简指令系统计算机(RISC), 典型的有ARM,MIPS架构的计算机。

     4.3.1 复杂指令系统计算机(CISC)

      CISC的主要特点:
      (1)指令系统复杂庞大,指令数目一般为200条以上
      (2)指令的长度不固定, 指令格式多,寻址方式多
      (3)可以访存的指令不受限制
      (4)各种指令使用频度相差很大
      (5)各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成
      (6)控制器大多数采用微程序控制。有些指令非常复杂,以至于无法采用硬连线控制
      (7)难以用优化编译生成高效的目标代码程序

     4.3.2 精简指令系统计算机(RISC)

      精简指令系统计算机(RISC)的中心思想是要求指令系统简化,尽量使用寄存器-寄存器操作指令,指令格式力求一致。RISC的主要特点如下:
      (1)选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现
      (2)指令长度固定, 指令格式种类少,寻址方式种类少
      (3)只有Load/Store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行
      (4)CPU中通用寄存器的数量相当多
      (5)RISC一定采用指令流水线技术, 大部分指令在一个时钟周期内完成
      (6)以硬布线控制为主,不用或少用微程序控制
      (7)特别重视编译优化工作,以减少程序执行时间
      从指令系统兼容性来看,CISC大多能实现软件兼容,即高档机包含了低档机的全部指令, 并可加以扩充。但RISC简化了指令系统,指令条数少,格式也不同于老机器,因此大多数RISC机不能与老机器兼容。


      为了规整指令格式,使指令具有相同的长度,规定只有Load/Store指令才能访存。而运算指令不能直接访存,只能从寄存器取数进行运算,运算的结果也只能送到寄存器。因为寄存器编号较短,而主存地址的位数较长,通过某种方式可使运算指令与访存指令的长度一致。
      由于只有Load/Store指令才能访问内存,程序中可能会包含许多装入指令和存储指令,与一般通用寄存器指令风格相比,其程序长度会更长。


     4.3.3 CISC和RISC的比较

      和CISC比,RISC的优点主要体现在以下几点:
      (1)RISC更能充分利用VLSI芯片的面积。CISC的控制器大多采用微程序控制,其控制存储器在CPU芯片内所占的面积达50%以上,而RISC控制器采用组合逻辑控制,其硬布线逻辑只占CPU芯片面积的10%
      (2)RISC更能提高运算速度。 RISC的指令数、寻址方式和指令格式种类少,又设有多个通用寄存器,采用流水线技术,所以运算速度更快,大多数指令在一个时钟周期内完成
      (3)RISC便于设计,可降低成本,提高可靠性
      (4)RISC有利于编译程序代码优化。 RISC指令类型少,寻址方式少,使编译程序容易选择更有效的指令和寻址方式,并适当地调整指令顺序,使得代码执行更高效化
      CISC和RISC的对比见表:
    在这里插入图片描述


      例题:下列指令系统的特点中,有利于实现指令流水线的是()
      1.指令格式规整且长度一致  2.指令和数据按边界对齐存放  3.只有Load/Store指令才能对操作数进行存储访问
      A.1,2  B.2,3  C.1,3  D.1,2,3

      答案:D;指令长度一致、按边界对齐存放、仅Load/Store指令访存,这些都是RISC的特征,它们使取指令、取操作数的操作简化且时间长度固定,能有效地简化流水线的复杂度。


    展开全文
  • 1、单选(1分)一条双字长直接寻址的子程序调用指令,其第一个字操作码和寻址特征,第二个字地址码5000H。假设PC当前值2000H,SP的内容0100H,栈顶内容2746H,存储器按字节变址,而且进栈操作是先执行(SP)-...
  • 微机原理--指令判断--判断指令是否正确。

    千次阅读 多人点赞 2020-03-09 20:35:58
    微机原理判断指令是否正确。 1. MOV 1000H , BX ;指令错误,原因:立即数不能作为目标操作数 2. MOV BX , CL ;指令错误,原因:字长不一致 ...指令错误,原因:不能同时存储器操作字 5. ROL AL, 2 ;指令错...
  • 8086的指令系统

    2015-11-30 23:55:30
    指出下列错误指令错误的原因 (1) MOV AH,BX (2) MOV [BX],[SI] (3) MOV AX,[DI][SI] (4) MOV MYDAT[BX][SI],ES:AX (5) MOV BYTE PTR[BX],1000 (6) MOV BX,OFFSET MYDAT[SI] (7) MOV CS,AX
  • 02_[Linux操作系统]Linux基本操作指令

    千次阅读 多人点赞 2022-01-24 11:11:39
    18、cal指令 19、find指令 20、grep命令 21、zip/unzip指令 22、 23、bc命令 24、uname指令 25、file命令 26、几个重要的热键 27、关机命令 28、一些扩展命令 一、什么要学习指令? 已经有了图形化界面,为何还要...
  • 指令系统及汇编语言程序设计.doc
  • ARM汇编指令以及伪指令

    千次阅读 2020-10-26 17:21:05
    由于ARM指令是字对齐,PC值的第0位和第1位总0 ARM寻址方式 数据处理指令 转移指令 程序状态寄存器访问指令 加载/存储指令 异常指令指令 ARM的存储系统 ATPCS介绍 异常中断处理 ARM链接器 ...
  • AT 指令集详解

    万次阅读 多人点赞 2019-03-11 11:41:20
    主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同GSM 研制了一整套AT指令,用于控制手机GSM模块。其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM 07.05标准以及现在的GSM07.07标准。 在随后...
  • 7 假设某条指令的一个操作数采用寄存器间接寻址方式,假定指令中给出的寄存器编号8,8号寄存器的内容1200H,地址1200H中的内容12FCH,地址12FCH中的内容3888H,地址3888H中的内容88F9H.则该操作数的...
  • cortex-M3/M4 指令

    千次阅读 2021-12-21 19:10:06
    一、理解汇编语言用法 ARM汇编(适用于ARM realview工具链 DS-5 Keil微控制器开发套件)指令格式如下: label ​ mnemonic operand1,operand2, … ;...对于在ARM汇编器编写的数据处理指令,第一个操
  • v-show 指令通过改变元素的 css 属性(display)来决定元素是显示还是隐藏。 html: &lt;div id="app"&gt; &lt;p v-show="type==='科技'"&gt;大数据之下的锦鲤:什么你的...
  • 【Docker】之 Dockerfile 指令详解

    千次阅读 2022-03-09 19:05:58
    Dockerfile 指令 指定基础镜像 FROM 维护者信息 MAINTAINER 元数据标签 LABEL 设置环境变量 ENV 构建参数 ARG 指定工作目录 WORKDIR 挂载匿名卷 VOLUME 端口暴露 EXPOSE 复制文件 COPY 复制并解压文件 ADD 镜像构建...
  • 微型计算机原理与接口技术:2数据传送指令.ppt
  • 以下单独的题目记录,具体的分析复习,再另写文章。 1.第 1 个问题 下列关于CISC和RISC的描述错误的是? RISC指令的操作数必须预存于寄存器 RISC架构的指令种类通常比CISC架构更少 RISC指令长度是固定的 ...
  • 微机系统及其接口技术:第3章-1 寻址方式和指令系统.ppt
  • 80X86汇编语言程序设计第二章⑤.80868088指令系统(二)加减运算指令[参照].pdf
  • _____.A、文档B、语言C、程序D、系统(2)下列计算机基础知识选择题(1)解决某一特定问题而设计的指令序列称为______.A、文档B、语言C、程序D、系统(2)下列术语,属于显示器性能指标的是______.A、速度B、可靠性C、...
  • 嵌入式体系结构及接口技术:第6章 ARM汇编伪指令与伪操作2.ppt
  • 嵌入式体系结构及接口技术:第6章 ARM汇编伪指令与伪操作1.ppt
  • 80x86汇编指令系统

    2016-04-02 18:14:45
     80x86指令系统  80x86指令系统,指令按功能可分为以下七个部分。  (1) 数据传送指令。... (2) 算术运算指令。... (3) 逻辑运算指令。... 数据传送指令包括:通用数据传送指令、地址传送指令、标志寄存器传送
  • 10.在下列的指令中错误的指令有( )。 A.PUSH AL B.MOV AL,BX C.PUSH 1000H D.CALL AX 11.可以用下列指令代替“LOOP L”指令的有( )。 A.DEC CX B.DEC CX JNZ L JNC L C.DEC CX D.DEC CX CMP ...
  • 指令重排序

    千次阅读 2020-11-17 23:05:57
    编译器优化的重排序 编译器在不改变单线程程序语义的前提下(代码不包含synchronized关键字),可以重新安排语句的执行顺序。 指令级并行的重排序 现代处理器采用了指令级并行技术(Instruction-Level Parallelism...
  • 计算机组成原理——指令系统考研题

    千次阅读 多人点赞 2021-01-04 21:20:52
    (一)指令格式 1.指令的基本格式 2.定长操作码指令格式 3.扩展操作码指令格式 (二)指令的寻址方式 ...1.某机器字长16位,主存按字节编制,转移指令采用相对寻址,由两个字节组成,第一字节操作码字段,
  • 堆栈操作指令 处理器通常用硬件支持堆栈 (Stack) 数据结构, 它是一个按“先进后出" (First In LastOut, FILO) 存取原则组织的存储区域, 也可以说是 “后进先出" (Last In First Out, LIFO) 存取原则。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 76,996
精华内容 30,798
关键字:

下列指令中错误指令为