机器指令

机器指令是用机器(计算机)的机器代码编写的命令或程序,可以识别和执行。

null
  • 机器指令由内存中的几个字节组成,这些字节告诉处理器执行一个机器操作。
  • 处理器逐个查看主存中的机器指令,并对每条机器指令执行一次机器操作。
  • 主存储器中的机器指令集合称为 机器语言程序。

机器代码或机器语言是由计算机中央处理器(CPU)直接执行的一组指令。每一条指令都执行一项非常特定的任务,例如加载、跳转或对CPU寄存器或内存中的数据单元执行ALU操作。CPU直接执行的每个程序都由一系列这样的指令组成。

文件的一般格式 机器指令

[标签:]助记符[操作数,操作数][;注释]
  • 括号表示字段是可选的
  • 标签中出现的第一个字节是指令的标识符。必须紧跟其后 “:”
  • 包含空格是任意的,但至少必须插入一个空格;没有空间会导致歧义。
  • 注释字段以分号开头 “ ; ”

例子:

这里是:MOV R5,#25H;在R5中加载25小时

8086微处理器中使用的机器指令

1.数据传输指令 –移动、负载交换、输入、输出。

  • MOV:将字节或字移动到寄存器或内存。
  • 输入,输出:从端口输入字节或字,输出字到端口。
  • 加载有效地址
  • LDS,LES使用数据段加载指针,额外段。
  • 推,弹出:将单词推到堆栈上,将单词从堆栈中弹出。
  • 交换字节或字。
  • XLAT:使用查找表翻译字节。

2.算术指令 –加、减、增、减、转换字节/字并进行比较。

  • 加,减:加,减字节或字
  • ADC,SBB:加、减字节或字并进位(借用)。
  • INC,DEC:递增、递减字节或字。
  • 否定:否定字节或单词(二的补码)。
  • CMP:比较字节或字(减去而不存储)。
  • MUL,DIV:乘、除字节或字(无符号)。
  • IMUL、IDIV:整数乘、除字节或字(带符号)
  • CBW,CWD:将字节转换为字,将字转换为双字
  • AAA,AAS,AAM,AAD:ASCII调整为add,sub,mul,div。
  • DAA,DAS:十进制调整为加法,减法(BCD数字)

3.逻辑指令 –和、或、异或、移位/旋转和测试

  • 非:逻辑非字节或字(补码)
  • AND:字节或字的逻辑AND
  • 或:字节或字的逻辑或。
  • 异或:字节或字的逻辑异或
  • 测试:测试字节或字(不存储)。
  • SHL,SHR:逻辑移位旋转指令左移位、右移位字节或字?通过1或CL
  • SAL,SAR:算术左移,右移字节还是字?按1或CL
  • ROL,ROR:向左、向右旋转字节或单词?通过1或CL。
  • RCL,RCR:通过进位字节或字向左、向右旋转?通过1或CL。
  1. 字符串操作指令 –加载、存储、移动、比较和扫描字节/字
  • MOVS:移动字节或字串
  • MOVSB,MOVSW:移动字节,字字符串。
  • CMPS:比较字节或字串。
  • SCAS:can字节或字串(与A或AX相比)
  • LODS、STOS:将字节或字串加载、存储到AL。

5.控制转移指令 –有条件的、无条件的、调用子例程并从子例程返回。

  • JMP:无条件跳转。它包括循环传输、子程序和中断指令。
  • JNZ:跳到计数器值减为零。它运行循环,直到存储在CX中的值变为零

6.回路控制指令-

  • 循环:无条件循环,以CX计数,短跳转到目标地址。
  • Loop(LOOPZ):如果相等,则循环(零),在CX中计数,短跳转到目标地址。
  • LOOPNE(LOOPNZ):如果不相等(非零),则循环,在CX中计数,短跳转到目标地址。
  • JCXZ:如果CX等于零,则跳转(用于跳过循环中的代码)。
  • 子程序和中断指令-
  • 调用,RET:调用,从过程返回(在当前段内部或外部)。
  • INT,INTO:软件中断,溢出时中断。从中断返回。

7.处理器控制指令-

旗帜操纵:

  • STC、CLC、CMC:设置、清除、补码进位标志。
  • 标准,CLD:设置,清除方向标志。STI,CLI:设置,清除中断启用标志。
  • PUSHF,POPF:将标志推入堆栈,将标志弹出堆栈。

示例门问题

考虑下面给出的机器指令序列:

  MUL R5, R0, R1
  DIV R6, R2, R3
  ADD R7, R5, R6
  SUB R8, R7, R4

在上述序列中,R0到R8是通用寄存器。在所示的指令中,第一寄存器存储对第二和第三寄存器执行的操作的结果。该指令序列将在流水线指令处理器中执行,包括以下4个阶段:(1)指令提取和解码(IF),(2)操作数提取(of),(3)执行操作(PO)和(4)写回结果(WB)。对于任何指令,IF、OF和WB阶段各占用1个时钟周期。PO级ADD或SUB指令需要1个时钟周期,MUL指令需要3个时钟周期,DIV指令需要5个时钟周期。流水线处理器使用从PO级到OF级的操作数转发。执行上述指令序列所需的时钟周期数为___________ (A) 11 (B) 12 (C) 13 (D) 14

答复:(C)

说明:

 1   2   3   4   5   6   7   8   9   10   11   12   13
  IF  OF  PO  PO  PO  WB
      IF  OF          PO  PO  PO  PO  PO   WB
          IF          OF                   PO   WB
              IF          OF                    PO   WB

文章由Pooja Taneja提供。如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享