指令系统实例分析
一、教学计算机指令系统介绍
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 ;返回主程序
菜鸟首个物联网机器人分拨中心在南京启动
“鹿居”APP开发:基于Arduino与机智云的家居环境远程系统设计
中国联通正紧紧把握5G规模发展的关键时机筑基“十四五”
LoRa®创建更智能且具有精确线路故障检测功能的电网
研究发现机器人和自动化有助于供应链行业变革
指令系统实例分析
新型MPS可燃气体传感器简述
全球年产5亿吨电子垃圾 超7成进入中国
RFID智能制造叉车改装具备什么功能
MEMS业务保持强劲增长
边缘智能传感可实现更智能的自主机器人
土壤养分检测仪真的有用吗?
纵观两会上的人工智能提案,看李彦宏/马化腾/杨元庆都说了什么?
4525DO-DS5AI001DP压力传感器在新风机系统监测的应用
USB扩展串口方案在移动终端功能扩展中的应用
基于BISS0001的防盗报警电路设计
Labview怎么用三菱MX显示多个地址
AIoT智能化技术将会是叩开未来地产智能化大门的钥匙
如何选择最合适的网络拓扑方式呢?如何解决CAN总线故障?
英伟达希望通过宣布的一种新的分布式学习技术