您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子百科>电脑硬件>台式机>

指令系统实例分析

2010年04月15日 11:21 www.elecfans.com 作者:佚名 用户评论(0

指令系统实例分析

一、教学计算机指令系统介绍
1、教学计算机指令系统概述
(1)6位固定长度的操作码,最多有64条指令。
(2)指令分类

①按指令长度分:有单字、双字指令

②按操作数的个数分:有无操作数、单操作数和双操作数指令

③按寻址方式分:有寄存器寻址、寄存器间接寻址、立即数寻址、变址寻址、相对寻址、直接寻址和堆栈寻址。
(3)指令格式

15 10  9 8  7 0 
 6位操作码  2位条件码  目的寄存器编号  源寄存器编号 
输入、出端口地址/相对转移的位移量 
立即数/绝对地址/变址位移量 
 

操作码:在最高6位,最多64条指令。


条件码:占2位,用作条件转移指令的判断条件(对应状态字C、Z、V、S)

最低8位:不同指令有不同的用法。
●输入或输出端口地址
●相对寻址的位移量(-128~+127)
●分成两个4位字段,表示双操作数的寄存器编号

2、教学计算机指令系统详述
(1)按操作数的个数分类

①无操作数指令:11条
NOP 空操作指令 DI 关中断指令
PSHF 状态字入栈指令 STC 进位位置1(C←1)
POPF 状态字出栈指令 CLC 进位位置0(C←0)
EI 开中断指令
RET 子程序返回指令
IRET 中断返回指令
LDMC 装入微指令代码指令
HALT 动态停机指令

②单操作数指令:有两种格式,共12条
格式1: 15 10  9 8  7 4  3 0 
操作码6位  不用  不用  SR 


MUL SR 无符号乘, R0 R1 ←R1×SR
DIV SR 无符号除, R0(余数)R1(商) ← R0 R1 /SR
格式2: 15 10  9 8  7 4  3 0 
操作码6位  不用  DR  不用 


指令:PUSH DR 将DR压入堆栈
POP DR 将栈顶元素弹出送入DR
INC DR DR ←DR+1
DEC DR DR←DR-1
NOT DR DR ←DR
SHL DR DR逻辑左移,最低位补0,最高位移入C

SHR DR DR逻辑右移,最高位补0,最低位移入C

RCL DR DR与C循环左移,C移入最低位,最高位移入C

RCR DR DR与C循环右移,C移入最高位,最低位移入C

③双操作数指令,有两种格式,共17条
格式1: 15 10  9 8  7 4  3 0 
OP  不用  DR  SR 


指令:ADD DR,SR 功能: DR DR+SR
ADC DR,SR 功能: DR DR+SR+C
SUB DR,SR 功能: DR DR-SR
SBB DR,SR 功能: DR DR-SR-C
CMP DR,SR 功能: DR-SR
TEST DR,SR 功能: DR&SR
OR DR,SR 功能: DR DR or SR
XOR DR, SR 功能: DR DR xor SR
AND DR, SR 功能: DR DR & SR
MOV DR,SR 功能: DR SR
MOV DR,[SR] 功能: DR [SR]
MOV [DR],SR 功能: [DR] SR
格式2: 15 10  9 8  7 4  3 0 
OP  不用  DR  SR 
DATA/ADR/OFFSET
 


DATA:立即数 ADR:内存地址
OFFSET:偏移量
指令: 功能:
MOV DR, DATA DR DATA
MOV DR, [ADR] DR [ADR]
MOV [ADR],SR [ADR] SR
MOV DR , OFFSET[SR] DR [OFFSET+SR]
MOV OFFSET [SR],DR [OFFSET+SR] DR

④I/O指令,输入、输出指令各1条
格式: 15 10  9 8  7 0 
OP  不用  IO/ PORT 

指令:
IN PORT R0 [PORT],从外设读入一字节到R0低8位
OUT PORT [PORT] R0, 把R0的低8位数据写到外设


⑤转移指令,3种格式,共6条相对转移指令
格式1: 15 10  9 8  7 0 
OP  CND  位移量 


JR ADR CND不用,必转ADR地址,ADR为原PC值+位移量
JR CND,ADR 当条件满足时转ADR所指的地址,ADR 为原PC值+位移量,条件 不满足则顺序执行
通过通用寄存器给出转移地址的转移指令
格式2: 15 10  9 8  7 4  3 0 
OP  CND  不 用  SR 

指令:
JP SR CND不用,无条件转SR 所指的地址
JP CND,SR 当条件满足时转SR 所指的地址,条件不满足则顺序执行
按绝对地址实现的转移指令
格式3: 15 10  9 8  7 4  3 0 
OP  CND  不用  不用 
ADR
 


指令:
JP ADR CND不用,无条件转移到ADR地址
JP CND,ADR 当条件满足时转移到ADR地址,条件不满足则顺序执行 ,

⑥子程序调用指令,两种格式,共两条。
格式1: 15 10  9 8  7 4  3 0 
OP  不用  不用  SR 

指令:CALL SR 调用SR指定的子程序,SP <---SP-1,
[SP] <---PC,PC <---- SR
格式: 15 10  9 8  7 4  3 0 
OP  不用  不用  不用 
ADR
 


指令:
CALL ADR 调用通过ADR指定的子程序,SP SP-1
[SP] PC,PC ADR
可以看出,子程序调用指令的两种格式与无条件转移指令的后两种格式是一样的。


(2)按指令实现的功能分类
①算逻指令:19条(见教材P139页)
②传送指令:12条(见教材P140页)
③输入、输出指令:2条(见教材P140页)
④控制类指令:17条(每条条件转移指令按两条计算)
⑤其它指令,3条

3、汇编语言程序设计
计算机语言按层次分为三级:
①机器语言 ②汇编语言 ③高级语言
汇编语言程序举例:
例1 设计一个小程序,用次数控制在终端屏幕上输出0~9十个数字符。(注:字符0~9的ASCII码为30H ~39H)
A820
MOVE R2, 0A ;R2为计数器,初值送10
MOVE R0, 30 ;R0初值送‘0'的ASCII码30H
(824) OUT 80 ;输出R0中存放的字符,80为端口地址
DEC R2 ; R2计数器减1,置状态标志位
JR Z,830 ;若为0,就转移到830处执行;否则顺序执行
PUSH R0 ; R0入栈,为了输入外部设备状态字
IN 81 ;将端口地址为81的外设状态字输入到R0中
SHR R0 ;R0逻辑右移一位,最低位进入C
JP NC,828;C=0,表示没有就绪,循环等待;
C=1,顺序执行
POP R0;栈顶元素弹出进R0
INC R0;R0内容+1
JP 824 ;无条件转移到824
(830) RET ;返回主程序

非常好我支持^.^

(0) 0%

不好我反对

(0) 0%

( 发表人:admin )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!