- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
指令 语法 功能
LAR
LAR ARx,源操作数
装载辅助寄存器
SAR
SAR ARx , 操作数
存储辅助寄存器
(三):状态寄存器及状态位装载和 存储指令
指令 LST SST 语法 功能 装载状态寄存器 存储状态寄存器 装载数据页指针 修改辅助寄存器 设置PREG输出移 位方式
LST #m,操作数 SST #m,操作数
(三)乘法指令 1:乘指令MPY
(1)格式: MPY 源 直接,间接,立 即寻址
2:无符号乘指令MPYU
实现无符号乘 使用于多精度乘法
(四)乘且加/减指令
指令 MAC 语法 MAC OP1,OP2 功能 乘且累加 乘且累加并带数 据移动 乘且加/减前次 乘积 加/减前次乘积 再平方
MACD MACD OP1,OP2 MPYA/ MPYA/ MPYS 操作数 MPYS SQRA/ SQRA/SQRS 操作数 SQRS
(1)格式:ABS | ACC| →ACC; (2)0→C. (3)特殊情况,若(ACC)=80000000h, 则 ( OVM ) =0 时 , 执 行 后 ( ACC ) =80000000h. ( OVM ) =1 时 , 执 行 后 ( ACC ) =7FFF FFFFh
(二)加减指令
指令 ADD/SUB 语法 功能 普通加减 带进位加减 抑制符号扩展加 减 当前辅助寄存器 加减短立即数 P寄存器加至ACC/ 从ACC减P寄存器 ADD/SUB 源操 作数[,移位位数] ADDC/SUBB ADDC/SUBB 源 ADDS/SUBS ADDS/SUBS 源
(五)条件减指令SUBC
(1):格式:SUBC 源操作数
直接,间接,立即寻址 ACC- 源操作数×215→ALU,并调整 (ALU) × 2+1 → ACC ALU≥0 (ACC) × 2 →ACC ALU<0 注:仅ACC,源≥0时有效 (2)作用:实现除法 方法:被除数→ACC(15:0),0→ACC(31:16) 除数→数据存储单元 执行16次SUBC指令 结果:商= ACC(15:0)余数= ACC(31:16)
(3):例实现除法运算8/5
可以采用以下程序段: ZAC ;0→ACC LDP #0 ;0→DP SPLK #5H,60H ;5→60h LACL #8H ;8→ACC(15:0), 0→ACC (31:16) RPT # 15 ;重复执行16次SUBC指令 SUBC 60H 则程序执行之后,(ACC)=00030001h,商为1, 余数为3.
(1)格式:CMPR CM
2:比较当前辅助寄存器与AR0指令 CMPR
(2)比较方式: CM=00,测试(当前AR)=(AR0)? CM=01,测试(当前AR)<(AR0)? CM=10,测试(当前AR)>(AR0)? CM=11,测试(当前AR)≠(AR0)? 若结果为真,TC=1;否则,TC=0.
(一)转移指令
这里 B BACC BANZ BCND 语法 B pma[,ind[, ARn]] BACC 功能 无条件转移
按ACC指定地 址转移 BANZ pma[,ind[, 当前辅助寄存器 ARn]] 非零转移 BCND pma,条件 条件转移指令 1[,…条件i]
例
;0 →ARP ;3 →AR1 ;60h →AR0 P1: ;(ACC)+((AR0)) →ACC, ;(AR0)+1 →AR0,1 →ARP BANZ P1,AR0 ;若(AR1)≠0循环 ;且AR1内容减1,0 →ARP 实现功能: AR1作循环计数器,循环4次,将0060h 开始4个数据存储单元内容加至ACC MAR *,AR0 LAR AR1,#3 LAR AR0,#60h ADD *+,AR1
(三)位测试指令
指令 语法 功能
BIT
BIT 源,位码
位测试
BITT
BITT
源
测试TREG规定 位
(四)其它控制指令
指令 CLRC SETC CMPR RPT NOP 语法 CLRC 控制位 SETC 控制位 CMPR CM RPT 源 NOP 功能 清除控制位 设置控制位 比较当前辅助寄 存器与AR0 重复 空操作
五:逻辑运算指令(13条)
指令 AND/OR/XOR CMPL NEG ROL/ROR SFL/SFR 语法 AND/OR/XOR 源[,左移位数] CMPL NEG ROL/ROR SFL/SFR 功能 逻辑与/或/异或 累加器取反 累加器求负 循环移位 算术移位
六:分支转移指令(20条)
(一)转移指令 (二)子程序调用指令 (三)位测试指令 (四)其它控制指令
POP
PUSH POPD PSHD
(六):存储器操作指令
指令 SPLK BLDD TBLR TBLW 语法 SPLK #lk, 目的操作数 BLDD 源,目的 TBLR 操作数 TBLW 操作数 功能 存储长立即数至 数据存储器 数据存储器→数 据存储器块传送 表读指令 表写指令
TAB
.word 1,2,3,4,5,6,7,8,9,10 lar ar0,#300 mar *,ar0 lacc #TAB rpt #9 tblr *+
LDP 操作数 MAR , 操作数 SPM const
LDP
MAR SPM
(四)T,P寄存器装载和存储指令
指令 语法 功能
LT
LT 操作数
装载T寄存器
PAC
PAC
将乘积寄存器装 入累加器
(五):堆栈操作指令
指令 POP PUSH POPD PSHD 语法 功能 栈顶弹出至ACC低 位 ACC低位进栈 操作数 操作数 栈顶弹出至数据寄 存器 数据存储器值进栈
(一):累加器装载和存储指令
指令 语法 功能 左移后装载累加 器 装载累加器低位 并清累加器高位 移位并存储累加 器高位 移位并存储累加 器低位 LACC LACC 操作数,[左移位 数]
LACL
LACL 操作数
SACH SACH 目的[左移位数] SACL SACL 目的[左移位数]
(二). 辅助寄存器装载和存储指令
�
例BCND PGM191,LEQ,C ;
若(ACC)≤0,并且C=1, PGM191 →PC; 否则顺序执行(PC+2)
GEQ 标志 位C 标志 位OV BIO 标志 位TC 第二类
(ACC)≥0 C=1 C=0 OV=0 OV=1 为低 TC=0 TC=1 无条件
(二)子程序调用指令
指令 CALL CALA CC RET RETC 语法 功能 CALL pma[ , 无条件调用 ind[,ARn]] CALA CC pma,条件 列表 RET RETC 条件列表 根据ACC指令内 容调用 条件调用 子程序返回 条件返回
(七)I/O端口操作指令
指令 语法 功能
IN
IN 目的,端口地址
从端口输入数据
OUTBiblioteka OUT 操作数,端口地址从端口输出
四:算术操作指令
实现加,减,乘.除等算术运算
(一)求绝对值指令
(二)加减指令 (三)乘法指令 (四)乘且加/减指令 (五)条件减指令与除法运算的实现
(一)累加器取绝对值运算指令ABS
ADRK/SBRK ADRK/SBRK #K APAC/SPAC APAC/SPAC
实现32位加法
lar ar1,#0060h lar ar0,#0062h mar *,ar1 lacc *+ mar *,ar0 add *+ ldp #0 sacl 64h mar *,ar1 lacc * mar *,ar0 addc * sacl 65h
3
. 2
指
令 系
统
一:汇编句法格式
操作码[操作数列表];[注释]
二:指令分类表
数据传送指令(33条) 算术运算指令(22条) 逻辑运算指令(11条) 分支转移指令(20条)
三:传送指令
(一)累加器装载和存储指令 (二)辅助寄存器装载和存储指令 (三)状态寄存器装载及状态位装载和存 储指令 (四)T寄存器和P寄存器装载及存储指令 (五)堆栈操作指令 (六)存储器操作指令 (七)端口操作指令
4:条件转移指令BCND
BIO
(1)格式:BCND pma,条件1[,…条件i] 分类 说明 规定所有条件都满足, ACC EQ (ACC)=0 pma →PC, NEQ (ACC)≠0 LT (ACC)<0 否则顺序执行 第 一 LEQ (ACC)≤0 (2)可选条件 类
GT C NC NOV OV BIO NTC TC UNC (ACC)>0