dsp汇编指令系统介绍(精)

dsp汇编指令系统介绍(精)
dsp汇编指令系统介绍(精)

汇编指令集

本节根据指令的功能来分,提供六张表来说明指令集的概况:

累加器、算数和逻辑指令(表2);

辅助寄存器和数据页指针指令(表3);

TREG、PREG和乘法指令(表4);

转移指令(表5);

控制指令(表6);

I/O和存储器操作(表7)。

在每张表中,指令按字母顺序排列。执行每条指令所需要的周期数在表中给出,所有指令都假设从内部程序存储器和内部数据存储器中执行,指令的周期数适用于单指令执行,不适用于重复方式。编程时,用户必须对每条指令的寻址方式了解清楚,因此这里也在表中给出了每条指令的寻址方式。由于指令的操作码对用户编程没有多大指导意义,在这里就没有列出来。

为了参照起见,我们先定义这六张概述表的符号意义:

ACC 累加器。

AR

BITX

CM 辅助寄存器。 4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。 2位数值,CMPR指令执行CM值所声明的比较:

若CM=00,测试当前AR=AR0否;

若CM=01,测试当前AR

若CM=10,测试当前AR>AR0否;

若CM=11,测试当前AR≠AR0否。

Shift

TP 4位右移量。用于条件执行指令的2位数值,代表如下4种条件:若BIO引脚为低,

TP=00;若TC位=1,TP=01;若TC位=0,TP=10;无条件TP=11。 ARX 用于LAR和SAR指令的3位数据值,指定被操作的辅助寄存器。

52

表2 累加器、算数和逻辑指令 ABS

周期

|(ACC)|→ACC 1

(ACC)+(数据存储器地址)×1

2shift→ACC

(ACC)+(数据存储器地址)×

216→ACC 1(ACC)+k→ACC 1

shift

(ACC)+lk×2→ACC 2

指令功能

(ACC)+(数据存储器地址)+(C)→

ACC

寻址方式

直接/间接

直接/间接短立即数长立即数

指令说明

ACC取绝对值

移位时低位填0,若SXM=1,高位用符号扩展;若SXM=0,高位填0;结果存在ACC中,该指令使C=0。寻址短立即数时,加操作不受SXM的影响,且不能重复执行。

ADD

ADDC 1

直接/间接该指令抑制符号扩展

该指令抑制符号扩展;无论SXM为何值,数据均作无符号16位数看待。当SXM=0和

直接/间接

移位次数等于0时,ADDS与ADD指令结果相同。

被寻址的数据寄存器单元的内容左移并加

直接/间接到ACC,移位次数由TREG的低4位确定,

SXM位的值控制移位时是否作符号扩展。

使用直接/间接寻址,ACC的低位字与数据直接/间接存储器单元的值作与运算,结果存在ACC

的低字,ACC的高位字清0。使用立即数寻

址,长立即数可以左移,移位时,32位中长立即数未被长立即操作数填充的位均被清零。

长立即数累加器中的内容用其逻辑反取代指定的数据存储器单元的内容或16位常数直接/间接左移并加载到ACC,低位填0,若SXM= 1,高位用符号位扩展;若SXM=0,则填直接/间接0。

长立即数

指定的数据存储器单元的内容或用0扩展

直接/间接的8位常数左移并加载到ACC的低16位, ACC的高位填0。数据作为16位无符号数短立即数处理,无论SXM为何值,本指令都不进行

符号扩展。

将数据存储器单元的内容左移后加载到

直接/间接ACC。左移位数由TREG的低4位确定。SXM

的值决定ACC高位是否符号扩展。

将ACC的内容换成其相反数。当对0000h作NEG操作时,OV置1。

若OVM=1,ACC=7FFFh,若OVM=0,则ACC

=8000 0000h,只要ACC不等于0则C=0,当ACC=0,则C=1。

NORM指令将ACC中的有符号数进行规格化。对定点数进行规格化即将其分成指数和尾数,为此对位31和位30作异或运算

间接

即可确定位30是数值还是符号。对当前AR的缺省修改方式是加1。该指令对正、负二进制补码均适用。由于该指令在流水

53

ADDS

(ACC)+(数据存储器地址)→

ACC (ACC)+(数据存储器地址)左移(TREG(3:0))位→ACC

(15:0)

1

ADDT 1

AND

CMPL

LACC

LACL

1

(ACC(15:0))AND (数据存储器地

址)→ACC(15:0)

0→ACC(31:16)

shift

(ACC(31:16))AND lk ×2→ACC2

16

(ACC(31:16))AND lk ×2→ACC

(ACC)的逻辑反→ACC 1

shift

(数据存储器地址)×2→

1

ACC

16

(数据存储器地址)×2→ACC 1

shift

位→ACC lk×22

(数据存储器地址)→ACC

(15:0)10→ACC(31:16)k→ACC(7:0)10→ACC(31:16)(数据存储器地址)左移TREG(3:0)位→ACC(15:0)

1

LACT

NEG (ACC)×(-1)→ACC 1

NORM

若(ACC)=0,则TC→1;否则若(ACC(31))XOR(ACC

(30))=0,

则TC→0,(ACC)×2 →ACC

按指定的方式修改AR

否则TC→1

1

OR

(ACC(15:0))OR (数据存储

器地址)→ACC(15:0)(ACC(31:16))→ACC

(31:16)(ACC)OR lk×2

shift16

→ACC

(ACC)OR lk×2→ACC (ACC(31))→C

(ACC(30:0))→ACC(31:1)

C→ACC(0)

C→ACC(31)(ACC(31:1))→A CC

((30:0))(ACC(0))→C ((ACC)×2)的高16位→

数据存储器地址((ACC)×2)的低16位→

数据存储器地址(ACC(31))→C

(ACC(30:0))→ACC(31:1)

0→ACC(0)

若SXM=0,则0→ACC(31)若SXM=1,则ACC(31)→ACC

(31)

(ACC(31:1))→ACC(30:0)

(ACC(0))→C

shiftshift

线的第4阶段才完成对AR的操作,而其它指令在流水线的第2阶段完成对AR 的操作,因此紧跟在NORM指令后的两条指令不能对AR值或者ARP值进行修改。否则NORM指令将不能操作正确的数据存储器单元。

ACC的内容和被寻址的数据地址单元的值

或左移后的立即数作或操作,SXM位对OR1直接/间接指令没有影响。数据操作数没有被占用的位总是填0。因此在直接或间接寻址或不2长立即数移位的长立即数的情况下ACC的高位是不变的。当操作数是立即数且移位次数不等2长立即数于0时,操作数左移低位补0。

将ACC内容左移一位,进位位被移入最低位,最高位被移入进位位。

将ACC内容右移一位,进位位被移入最高位,最低位被移入进位位。

ROL

1

ROR

1

SACH

SACH将整个ACC的32位数左移0-7位,将

1直接/间接移位后数值的高16SACH将整个ACC的32位数左移0-7位,将

1直接/间接移位后数值的低16 1 1

SFL指令使ACC的内容左移一位,ACC的最低位填0,最高位移入进位位C。SFR指令将ACC的内容右移一位。若SXM=1,则产生算数右移,ACC的符号位不变,位31复制到位30,位0移入进位位。若SXM=0,则产生逻辑右移,ACC的所有内容右移一位,位0移入进位位,位31填0 在直接间接和长立即数寻址方式里被寻址的数据存储单元的内容或16位常数左移,然后累加器减去移位后的值。移位时低位填0。高位扩展与否由SXM当使用短立即数时累加器减去8位正常数。此时不可以指定移位值,减法不受SXM的影响,并且是不可重复的。通常情况下,若减法结果有借位则进位位清0;若减法结果没有借位,则进位位置1。但若移位次数为16,则当减法结果有借位时进位位清0,减法不产生借位时,进位位不变。

ACC的值减去被寻址的数据寄存单元的内容及进位位的逻辑反值,抑制符号扩展。若相减结果产生借位进位位清0;若没有借位则进位位置1。

ACC实现条件减,可用于除法:把16位的

54

SACL

SFL

SFR

(ACC)-(数据存储器地址)×2→ACC

(ACC)-(数据存储器地址)×

SUB

2→ACC (ACC)-k→ACC (ACC)-lk×2

shift16shift

→ACC

1 1 1 2

直接/间接

直接/间接

短立即数

长立即数

SUBB SUBC

(ACC)-(数据寄存器地址)-(C的逻辑反)→ACC 11

直接/间接直接/间接

若(ACC)>=0 且(数据存储器地

址)>=0

(ACC)-(数据寄存器地址)×2→ALU输出。

若ALU输出>=0,则(ALU输出)×

2+1→ACC

否则(ACC)×2→ACC

15

SUBS

1

ACC

ACC)-((数据寄存器地址)×

SUBT

2 →ACC 若SXM=1,则(数据存储单元)

用符号扩展

若SXM=0,则(数据存储单元)

不用符号扩展

ACC(15:0))XOR(数据寄存器

地址)→ACC(15:0)(ACC(31:1))→ACC

(31:16)

或(ACC(31:0))XOR lk×

2

shift

(TREG(3:0))

1

正被除数放在ACC的低16位,ACC的高位清0;16位的正除数放在数据存储单元中。执行SUBC指令16次。;最后一次SUBC指令完成后ACC的低16位是除数的商,ACC的高16为是余数。若ACC和存储单元的内容为负,则不能用SUBC实现除法。若16位被除数的有效数字少于16位可将它放在ACC中并左移,左移的位数为前面非有效的0的个数,SUBC指令执行的次数为16减去移位次数。执行该指令不会因正溢或负溢而饱和。

ACC减去数据存储单元的内容,抑制符号扩展。不管SXM为何值,数据存储单元的

直接/间接内容都作为无符号处理。ACC还是作为有

符号数。若相减结果有借位清0,若没有借位C置1。

ACC减去左移后的数据存储单元的内容,移位次数由TREG的低4位确定。SXM控制是否对

直接/间接数据存储单元的内容作符号扩展。

XOR

→ACC(31:0)

16

ZALR

或(ACC(31:0))XOR lk×2→

ACC(31:0)

(数据存储器地址)→ACC

(31:16)

8000h→ACC(15:0)

直接和间接寻址时ACC的低16位和被寻址的数据存储单元的内容作异或运算,结果

存在ACC的低16位,ACC的高16位不变。使用长立即数寻址时,长立即数左移,数1直接/间接据操作数没有占用的位填0,然后和ACC 中的32位数作异或运算。

2长立即数

1

数据存储单元的内容送到ACC的高16位,

直接/间接ACC的低15位清0,第15位置1。

55

表3 辅助寄存器指令 ADRK

指令功能

(当前AR)+k→当前AR 若(当前AR)≠ 0,

则操作数→PC 否则(PC)+2→PC 按指令要求的方式修改(当前

AR)和(ARP)(当前AR)与(AR0)比较,并把结果放在状态寄存器ST1的TC位(数据存储器地址)→ARx

k→ARx lk→ARx 按指令指定的方式修改(当前

AR)和(ARP)(ARx)→数据寄存器地址(当前AR)-K→当前AR

寻址方式指令说明 8位立即数按右对齐方式与当前辅助寄存器1

值相加。

若当前辅助寄存器的内容不为0,程序控制4 转到指定的程序存储器地址;否则执行下一

条指令。对当前AR缺省的修改方式是减1。2 间接

在进入循环前将辅助寄存器(作循环计数器)初始化为N-1,可执行N次循环。该指令完成由操作数指定的比较;

若CM==00,测试是否(当前AR)=(AR0);若CM==01,测试是否(当前AR)<(AR0);

1 直接/间接

若CM==10,测试是否(当前AR)>(AR0);若CM==11,测试是否(当前AR)=(AR0);若条件为真,TC位置1;否则TC位清0。

1 直接/间接指定数据寄存器单元中的内容。8位常数或1 短立即数16位常数加载到指定的辅助寄存器。不论

2 长立即数SXM为何值,所指定的常数均为无符号整数。

直接寻址方式下MAR指令的作用同NOP指

1 间接令。间接寻址方式下可以修改辅助寄存器的

值和ARP的值,对寄存器的引用不起作用。将指定的辅助寄存器(ARx)的内容拷贝到指

1 直接/间接

定的数据存储单元。

当前辅助寄存器(由ARP指定的那个)的内

1 容减去8位立即数,结果存在当前辅助寄存

器中。

BANZ

CMPR

LAR

MAR SAR SBRK

表4 TREG、PREG和乘法指令周

寻址方式指令说明按ST1寄存器中PM状态位指定的方式将PREG

(ACC)+移位后的(PREG)→的内容进行移位,把移位后的值与ACC的内

1

ACC 容相加。状态寄存器中的SXM位对APAC指令

无影响。

(数据寄存器地址)→PREG被寻址的数据寄存单元的内容加载到PREG的

1 直接/间接

(31:16)高16位。PREG的低16位不变。

(数据寄存器地址)→TREG 1 直接/间接被寻址的数据寄存单元的内容加载到TREG。

指令的数据寄存单元的内容加载到TREG。按

(数据寄存器地址)→TREG PM状态位指定的方式对乘积寄存器的内容进(ACC)+移位后的(PREG)→1 直接/间接行移位,并把移位后的值与ACC相加,结果

ACC 放在ACC中。若相加结果有进位则C=1,否

则C=0。

指令将数据寄存单元的内容加载到TREG。按PM状态位指定的方式对乘积寄存器的内容进(数据寄存器地址)→TREG

(数据寄存器地址)→数据寄存行移位,并把移位后的值与ACC相加,结果

器地址+1 1 直接/间接放在ACC中。指定的数据存储单元的内容拷

(ACC)+移位后的(PREG)→贝到地址加1的数据存储单元。该指令移动ACC 数据的功能不能用于外部数据寄存器或存储

器映射的寄存器。

(数据寄存器地址)→TREG 1 直接/间接指令的数据寄存单元的内容加载到TREG。按

指令功能

56

APAC

LPH LT

LTA

LTD

LTP

PM状态位指定的方式对乘积寄存器的内容进

行移位,并把移位后的值送到ACC中。

指令的数据寄存单元的内容加载到TREG。按

PM状态位指定的方式对乘积寄存器的内容进(数据寄存器地址)→TREG LTS 1 直接/间接行移位,并用ACC的内容减去(PREG)移位ACC-移位后的(PREG)→ACC 后的值送到ACC中。若相减的结果产生了借

位则进位位C清0;否则进位位C置1。

PC加1即PC=PC+1 MAC指令可以1)按PM状态位指定的方式把

(PC)→MSTACK 先前的乘积移位,再与ACC的内容相加;2)

把指定的数据存储单元的内容加载到TREG;16位程序存储器地址→PC (ACC)+移位后的(PREG)→3)将数据存储单元的内容乘以指定的程序存

储器地址中的内容。若程序存储器是片内ACC

(数据存储器地址)→TREG RAM块BO,则CNF位必须置1。

(数据存储器地址)×(16位当重复MAC指令时,每重复一次包含在PCMAC 3 直接/间接程序存储器地址)→PREG 中的程序存储器地址加1。若使用间接寻址指定数据存储器地址则每次重复时就可以访间接寻址时,按指定方式修改

问新的数据存储器地址;若使用直接寻址方(当前AR)和(ARP)

式指定的数据存储器地址是常数,重复时不当(重复计数器)≠0时,

会对其进行修改。(重复计数器)-1→重复计数

器。

(MSTACK)→PC

操作与MAC相同,增加了(数据该指令与MAC的不同之处在于片内增加了数MACD 存储器地址)→数据存储器地址3 直接/间接据的移动

+1

TREG的内容乘以被寻址的数据存储单元的内

(TREG)×(数据存储器地址)容;使用短立即数时TREG的内容乘以有符号MPY 1 直接/间接→PREG(TREG)×k →PREG 的13为常数。短立即数值右对齐,相乘前无

任SXM如何都将该常数用符号扩展。

周指令功能寻址方式指令说明 ACC)+移位后的(PREG)→ACCTREG的内容乘以被寻址的数据存储单元的内MPYA (TREG)×(数据存储器地址)1 直接/间接容;按PM状态位指定的方式对先前的乘积进

→PREG 行移位,并将移位后的值加到ACC中。

TREG的内容乘以被寻址的数据存储单元的内(ACC)-移位后的(PREG)→容;按PM状态位指定的方式对先前的乘积进MPYS ACC(TREG)×(数据存储器地1 直接/间接行移位,并从ACC中减去移位后的值,结果址)→PREG 放在ACC中。

TREG的无符号数乘以被寻址的数据存储单元

无符号数(TREG)×无符号数的无符号数;作无符号相乘不能使用PM=3这MPYU 1 直接/间接(数据存储器地址)→PREG 种移位模式,因为此时该移位器总要将PREG

的值进行符号扩展。

按指定的方式将PREG的内容移位,并把移位PAC 移位后的(PREG)→ACC 1 后的结果加载到累加器。

(ACC)-移位后的(PREG)→SPAC不受SXM影响,PREG的值总是要作符号SPAC 1 ACC 扩展

按PM指定的方式把SPEG的内容移位,移位后

的高16位数值存到数据存储单元。若右移6(PREG)移位后的高16位→数SPH 1 直接/间接位则高位用符号扩展,低位丢失;若左移则高据存储器地址位丢失而低位填0。PREG和ACC中的值都保

持不变。

按PM指定的方式把SPEG的内容移位,移位后(PREG)移位后的低16位→数SPL 1 直接/间接的低16位数值存到数据存储单元。若右移6据存储器地址位则高位用符号扩展,低位丢失;若左移则高

57 移位后的(PREG)→ACC

SPM

SQRA

SQRS

位丢失而低位填0。PREG和ACC中的值都保持不变。

指令字中的最低2位拷贝到状态寄存器ST1

consta nt→乘积移位模式(PM)

1 的乘积移位模式(PM)位。PM控制PREG输出

移位器的移位模式。

(ACC)+(PREG)移位后的值→按PM位指定的方式把PREG的内容移位,并ACC 将其加到累加器。被寻址的数据存储单元的

(数据存储器地址)→TREG 1 直接/间接值加载到TREG,计算其平方。(TREG)×(数据存储器地址)

→PREG

(ACC)-(PREG)移位后的值→按PM位指定的方式把PREG的内容移位,累ACC 加器减去移位后的值。被寻址的数据存储单

(数据存储器地址)→TREG 1 直接/间接元的值加载到TREG,计算其平方。(TREG)×(数据存储器地址)

→PREG

表5 转移指令 B BACC

指令功能

16位程序存储器地址→PC

间接寻址 ACC(15:0)→PC

若(当前AR)≠0,则(16位程序存储

器地址)→PC 否则(PC)+2→PC

周期4

指令说明

按指令要求的方式修改当前辅助寄存器和ARP的内容,把控制转到指令指定的程序存储器地址。控制转换到ACC的低位字所指定的地址。

如果当前辅助寄存器的内容不为0,程序控制转到指定的程序存储器地址;否则执行下一条指令。对当前AR缺省的修改方式是减1。

指令说明

如果指定的条件都满足则分支到指定的程序存储器地址。注意不是所有的条件组合都有意义。条件EQ表示ACC=0;NEQ表示ACC≠0; 条件LT表示ACC<0;LEQ 表示ACC<=0; 条件GT表示ACC>0;GEQ表示ACC>=0; 条件NC表示C=0;C表示C=1; 条件NOV表示OV=0;OV表示OV=1;

条件BIO引脚为低表示C=0;C表示C=1; 条件NTC表示TC=0;TC表示TC=1; UNC标志无条件。

当前程序计数器(PC)加1后压入栈顶(TOS)。再将累加器的低位字加载到PC,程序从该地址继续运行。

当前程序计数器(PC)加2后压入栈顶(TOS)。再将程序存储器地址的内容加载到PC。该指令为间接寻址方式。

若指定的条件都满足则控制转到指定的程序存储器地址。同样应注意不是所有的条件组合都有意义。处理器有32个中断向量,每个K(0-31)值代表一个中断向量。该指令是软件中断,它使程序控制转换到与K值对应的地址,有该地址引导到相应的中断服务程序。INTM位和中断屏蔽位都不影响INTR指令。该指令将程序计数器强置为不可屏蔽中断向量地址24H。它与硬件不可屏蔽中断NMI的效果相同。

58

4

BANZ 4

2周

指令功能

若条件都满足则(16位程序存储器地

BCND 址)→PC

4

否则(PC)+2→PC

2

CALA

PC+1→TOS ACC(15:0)→PC

PC+2→TOS

(16位程序存储器地址)→PC 按指令要求的方式修改(AR)和

(ARP)

若条件都满足则PC+2→TOS 且(16位程序存储器地址)→PC

否则PC+2

(PC)+1→堆栈相应的中断向量地址→PC

(PC)+1→堆栈

24H→PC

4

CALL 4

CC

42

INTR 4

NMI

4

RET RETC

1→INTM TOS)→PC 堆栈上弹一级

如果条件都满足则(TOS)→PC 同时堆栈上弹一级,否则继续

(PC)+1→堆栈

22h→PC

4424

TRAP

子程序和中断服务程序以RET指令结束,使程序控制返回到调用程序或被中断的程序。

如果条件都满足则执行标准的返回但不是所有的条件组合都有意义。

该指令是软件中断使控制转换到程序存储单元22h,PC加1后推入硬件堆栈。在程序空间22h可以存放分支命令使控制转到TRAP例程。TRAP指令是不可屏蔽的。

注:对表中的条件指令,如果条件成立,则所需的指令周期为4,如果条件不成立,则所需的周期为2。表6 控制指令 BIT

指令功能

寻址方式期

指令说明

(数据bit number

1

(15-(bit code))

→TC (数据bit number(15-TREG(3:0))→1

TC

0→控制位指令功能

1

BITT

CLRC 该指令将数据存储单元中被指定位的值拷贝到状态寄

直接/间接存器ST1中的TC位。指令中bit code的值0-15分别

对应数据存储器数值bit number的第15-0位。

该指令将数据存储单元中被指定位的值拷贝到状态寄存器ST1中的TC位。数据寄存器数值的bit number由

直接/间接TREG中低4位包含的bit code的值指定。TREG的低4

位与bit number的对应方法同bit code 与number的对应相同。

把指定的控制位清0。也可用LST指令加载ST0,ST1。

控制位有:C,CNF,INTM,OVM,SXM,TC,XF。

指令说明

该指令使程序停止运行,直至CPU接收到没被屏蔽的硬件中断(内部或外部的),NMI或复位。该指令使C2xx进入降功耗模式。C2xx在进入降功耗模式前将PC加1;在空闲状态中PC不变。即使INTM为1未被屏蔽的中断也可使

C2xx退出空闲状态。当未被屏蔽的中断使C2xx退出空闲状态后,CPU的工作取决于INTM:若INTM为0,程序分支到它所响应的中断服务程序。若INTM为1,程序从IDLE后面的指令继续执行。因NMI或复位退出空闲状态时,则不管INTM为何值都执行相应的中断服务程序

被寻址的数据寄存单元的低9位或9位的立即数值加载到状态寄存器ST0中的DP。也可以用LST指令加载DP。

用被寻址的数据寄存器的值加载状态寄存器但应注意:1)LST #0操作不影响ST1寄存器中的ARB字段。2)LST #1操作加载到ARB的值也加载到ARP。3)状态寄存器中的保留位总是读1,写入对其无影响。4)间接寻址时若操作数指定下一AR值则用所寻址的数据存储单元中的。高3位加载ARP。子程序调用或中断后可用LST指令恢复状态寄存器。

该指令只影响PC,不作其它任何操作。它可用于建立流水线和延时。

硬件堆栈是后进先出的8个单元。若弹出的次数多于7次则堆栈中的所有值将都相同。没有检查堆栈是否下溢的措施。

栈顶的值弹出并传送到指令指定的数据存储单元。其

59

寻址方式期

IDEL

PC加1,等待没被屏蔽的或不可屏蔽的硬件2

中断

LDP

(数据寄存器地址)的低9位→DP 或k→DP

22直接/间接短立即数

LST

(数据存储器地址)→状态寄存器STm 2

直接/间接

NOP POP POPD

PC加1即PC=PC+1 1 直接/间接直接/间接

0→ACC(31:16) 1堆栈上弹一级

(TOS)→数据存储器1

PSHD

地址堆栈上弹一级(数据存储器地址)

→(TOS)堆栈下压一级堆栈下压一级 ACC(15:0)→TOS (数据存储器地址)

→RPTC k→RPTC 1→control bit

它操作同POP。没有检查堆栈是否下溢的措施。

将指令指定的数据存储单元的内容传送到栈顶。堆栈

中低7个单元的值都下移一级。堆栈中最低一级单元

的内容丢失。

累加器的低位字节拷贝到硬件堆栈的栈顶。若弹出前

压入的次数多于8次,则随着每次的压入堆栈的第一

个值将丢失。

直接或间接寻址时,被寻址的数据存储单元的内容加载到重复计数器(RPTC);使用短立即数寻址时,8位立即

直接/间接

数加载到RPTC。RPT后面的那条指令重复n次.n为

短立即数

RPTC的初始值加1。该指令是不可中断的,器件复位时RPTC被清0。重复指令本身不能重复。

把指定的控制位置1。也可用LST指令加载ST0和

ST1。

指令字中的最低2位拷贝到状态寄存器ST1的乘积移

直接/间接位模式PM位(ST1的位1和位0。

直接寻址时,不论ST0中的数据页面指针DP为何值,指定的状态寄存器总是被保存到0页;不必修改DP,执

直接/间接行该指令时处理器自动访问0页。使用间接寻址时,

由所选用的辅助寄存器指定存储地址;因此状态寄存器的,值可以保存到数据寄存器的任何也面内。

1

PUSH 1

RPT

11

SETC SPM

1

constant→乘积移位模式PM位constant为1

0-3 (状态寄存器TSm)→

1

数据寄存器地址

SST

表7 I/O和存储器指令指令功能

周期

指令说明

BLDD

PC=PC+1

(PC)→MSTACK,lk→PC,(源)→目的间接寻址时按指令指定的方式修改(AR)和(ARP)

(PC)+1→PC

当(重复计数器)≠0 时

(重复计数器)-1→重复计数器(MSTACK)→PC

BLPD

PC=PC+1

(PC)→MSTACK,pma→PC,(源)→目的间接寻址时按指令指定的方式修改(AR)和(ARP (PC)+1→PC,当(重复计数器)≠0 时

(重复计数器)-1→重复计数器

(MSTACK)→PC

DMOV

数据存储器地址)→数据存储器地址+1

直接或间接寻址

把“源”指定的数据存储器中的字拷贝到“目的”指定的数据存储单元。源和目的地址可由长立即数地址或数据存储器地址指定。但必须是:如果源地址为长立即数,则目3

的地址只能为直接或间接;如果源地址为直接或间接,则目的地址只能为长立即数。该指令不能用于存储器映射的寄存器。使用RPT指令重复BLDD操作期间中断被禁止。把'源'指定的程序存储器中的字拷贝到'目的'指定的数据存储单元。源空间的第一个字由长立即数指定.3

目的地址可由辅助寄存器或数据存储器地址指定。使用RPT指令重复BLDD操作期间中断被禁止。

指定的数据存储单元的内容拷贝到地址加1的单元,拷贝时原来单元中的内容保持不变。该指令只能用于片内数据RAM块。可以工作于任何1配置的RAM块但要求这些RAM块配置为数据存储器。数据的移动可以跨越块的边界进行。此功能不能用于外部数据存储器。若指令指定了外部存储器地址,该指令读指定的60

IN

PA→地址总线A15-A0

数据总线D15-D0→数据存储器地址

(PA)→数据存储器地址PA→地址总线A15-A0

(数据存储器地址)→数据总线D15-D0

数据存储器地址→(PA)lk→数据存储器地址,直接或间接寻址PC→PC+1 ,(PC)→MSTACK (ACC(15:0))→PC,(pma)→数据存储器地址

间接寻址时按指令指定的方式修改(AR)和(ARP)

(PC)+1→PC,

当(重复计数器)≠0 时(重复计数器)-1→重复计数器

(MSTACK)→PC

PC→PC+1,(PC+1)→MSTACK (ACC(15:0))→PC+1 ,数据存储器地址→(pma)

间接寻址时按指令指定的方式修改(AR)和(ARP)

(PC)+1→PC ,当(重复计数器)≠0 时(重复计数器)-1→重复计数器(MSTACK)→PC+1

2

OUT 3

SPLK 2

TBLR 3

存储单元但不进行其它操作。数据移动对于实现DSP总的Z^(-1)延时很有用处。

该指令从I/O单元读入16位值,将其送到指定的数据存储单元。IS线变低表示进行I/O访问。直接或间接寻址。

该指令将数据存储单元中的16位值写到指定的I/O端口。IS线变低表示进行I/O 访问。直接或间接寻址。

将16位常数写到任意的数据存储单元。

该指令将程序存储单元中的一个字传送到指令指定的数据存储单元。程序存储单元中的地址由累加器的低16位指定。该指令先从程序存储单元读出然后写入指定的数据存储单元。直接或间接寻址。

TBLW

该指令将数据存储单元中的一个字传送到指令指定的程序存储单元。数据存储单元的地址由指令指定,程序存储器地址由累加器的低16位确3

定。该指令先从数据存储单元读出然后写入指定的程序存储单元。直接或间接寻址。

3 典型指令说明

本节在指令集的基础上,以几个常用的指令为例,说明了在编程过程中怎样使用指令集中给出的指令。在举例时,直接寻址时一律认为DP指针已经指向要寻址的数据区,就不用再重新装载DP,而间接寻址时则认为ARP已经指到当前AR,从而也不用再单独声明当前AR的值。

1 对累加器的加操作 ADD指令

ADD指令执行的操作是将数据存储器单元的数或立即数左移后加至累加器。移位时,低位填0,高位在SXM=1时为符号扩展,在SXM=0时填0。结果存在累加器中。寻址短立即数时,加操作不受SXM的影响,且不能重复执行。

ADD 5,2

;(DP=4:200-280h)将数据存储器单元205的内容左移2 ;位之后与ACC 相加,结果存在ACC

ADD

*+,2,AR0

;( ARP=4,AR4=282)将数据存储器单元282的内容左移2位之;后加至ACC,结果存在ACC,指令执行后AR4=283,ARP=0

ADD ADD

#2

;短立即数2与ACC相加,结果存在ACC ;长立即数1111h与ACC相加,结果存在ACC

#1111h,2

2 和累加器逻辑“与”操作指令AND

61

AND指令用来实现被寻址单元的内容和连接器的逻辑“与”操作,以及长立即数经过移位之后和连接器进行逻辑“与”操作。逻辑“与”操作之后的结果保存在累加器中。 AND 16 ;(DP=4:200-27Fh)将数据存储器单元210h的内容与;ACC 的内容进行逻辑“与”操作,结果保留在ACC中。

AND * ;(ARP=0,AR0=301h)将数据存储器单元301h的内容与ACC的

;内容进行逻辑“与”操作,结果保留在ACC中。

AND #00FFh,4 ;将立即数#0FFh左移4位之后和ACC逻辑“与”,结果保留在

;ACC中。

4 条件转移指令BCND

当所规定的条件符合时,控制转移到指定的程序存储器地址。

BCND P1,LEQ ;若ACC的内容小于等于零时,程序转到P1处开始执行。 5 位测试指令BIT

该指令将数据存储器中的指定位的值复制到状态寄存器ST1的TC位。将该指令和BCND指令结合可判断指定位的状态,并根据该位的状态来控制程序的转移。BIT

0h,15 BCND ;(DP=6)测试300h处的最低有效位。;若该位为1,则程序转到P1处执行。 P1,TC

7 清除控制位指令CLRC

CLRC指令将指定的控制位清除为0。指定的控制位为下述控制位之一:

C CNF INTM OVM SXM TC XF CLRC 状态寄存器ST1的进位位状态寄存器ST1的RAM配置控制位状态寄存器ST0的中断方式位状态寄存器ST0的溢出方式位状态寄存器ST1的符号扩展方式位状态寄存器ST1的测试/控制标志位状态寄存器ST1的XF引脚状态位 TC ;将ST1的TC位清零。

注:用LST指令也可装入ST0和ST1寄存器。

9 装载累加器的LACC指令

LACC指令执行的操作是将指定的数据存储器单元的内容或一个16位常量左移后送入累加器。移位时,低位填0,高位在SXM=1时为符号扩展,在SXM=0时填0。

LACC 5,4 ;(DP=8:400-47fh)将数据存储器单元405的内容左移4位之

;后送到ACC。

LACC *,4 ;(ARP=2,AR2=305h)将数据存储器单元305的内容左移4位之;后送到ACC。

LACC #1234h,2

;将长立即数1234h左移2位之后送到ACC。 62

10 装载累加器低位并清零累加器高位指令LACL

LACL指令将被寻址数据存储器单元的内容或者被零扩展的8位常量装入累加器的低16位,累加器的高半部分填零。数据被作为无符号的16位处理,而非二进制补码。无论SXM为何状态,该指令的操作数抑制符号扩展。

LACL LACL #10h 1 ;将10h装载入ACC。;(DP=6:300h-37Fh)将数据存储器单元301h的内容装载入

;ACC

指令系统和汇编语言程序的设计实验

第二章指令系统和汇编语言程序设计实验 本章实验主要包括指令系统和汇编语言程序设计两部分。采用软件模拟调试的方法, 目的在于通过这些实验可以使学生巩固所学知识, 加深对 MCS-51单片机部结构、指令系统的理解,更进一步掌握汇编语言程序设计的方法和技巧。 第一节指令系统实验 实验一熟悉键盘操作及数传指令编程设计 一、实验目的 1.熟悉软件模拟调试的环境及键盘操作。 2.掌握汇编语言程序设计的方法,加深对指令的理解。 3.学会软件模拟调试和察看修改观察项的方法。 二、实验容 印证数据传送指令的功能、寻址方式以及 PC 指针、 SP 指针、 DPTR 指针、Ri 指针分别对代码段、堆栈段、外扩数据存储器段、位寻址区等不同存储器的访问方式。 三、实验步骤 1.进入调试软件环境,输入源程序; 2.汇编源程序; 3.用单步方式运行程序; 4.检查并记录各寄存器和存储单元容的变化。 四、程序清单

1. 部 RAM 数据传送 需要查看的数据有 30H,31H,A,R0等。 ORG 0000H MOV R0,#30H MOV 30H,#45H MOV 31H,#46H MOV R2,30H MOV 02H,31H MOV A,#87H MOV 0E0H,30H MOV 30H,A MOV 31H,R0 SJMP $ END 2. 外部数据传送 需要查看的数据有外部数据存储器单元 2000H ,外部程序存储器单元2001H 。 ORG 0000H MOV A,#89H MOV DPTR,#2000H

MOVX DPTR,A INC DPTR CLR A MOVC A,A+DPTR SJMP $ ORG 2000H DB 44H DB 78H DB 67H END 3. 堆栈操作 需要查看的数据有 50H 、 51H 、 A 及 SP 指针和堆栈区中数据随 PUSH 和POP 指令执行后的变化情况和数据的存放次序等。 1 可用于保护现场和恢复现场的程序 ORG 0000H MOV SP,#5FH MOV 50H,#3BH MOV 51H,#2FH MOV A,#12H

DSP汇编指令学习笔记

Knowledge 问题 谁在DSP的汇编语言中加入了NOP指令? NOP指令加入的条件是什么? About DSP 1.DSP是实时数字信号处理的核心和标志。 2.DSP分为专用和通用两种类型。专用DSP一般采用定点数据结构(一般不支持小数), 数据结构简单,处理速度快;通用DSP灵活性好,但是处理速度有所降低。 3.DSP采用取指、译码、执行三个阶段的流水线(Pipeline)技术,缩短了执行时间,提高了 运行速率。DSP具有8个Functional unit,如果并行处理的话,以600MHz的时钟计算,如果执行的指令是single cycle指令,则可以4800MIPS(指令每秒)。 4.DSP的8个functional Unit,具有独特的功能,对滤波、矩阵运算、FFT(傅里叶变换) 具有 哈弗结构 把指令空间与数据空间隔离的存储方式。 这样实现是为了实现指令的连续读取,而实现pipeline流水线结构。 传统哈弗结构:两个独立的存储空间,还使用独立总线。让取指与执行存储独立,加快执行速度。 改进型哈弗结构:指令与数据的存储空间还是独立的。但是使用公共的总线(地址总线与数据总线)。这样实现的原因是因为出现了CACHE,数据的存储动作大部分被内部的CACHE 总线承接了,所以总线冲突的情况会大大减少。同时让总线的结构与控制变得简单,CACHE 存储的速度也明显快于外设存储器。 冯诺依曼结构:是指令空间与数据空间共享的存放方式。它不能实现pipeline的执行过程。 Pipeline(流水线)技术 是把指令的取指-译码和指令的执行独立开来的技术。虽然每条指令的过程还是要经过取指-译码-执行三个阶段最少3个CPU Cycle。但是多个指令同时并行先后进行,保证总体的指

DSP汇编指令总结

DSP汇编指令总结 一、寻址方式: 1、立即寻址: 短立即寻址(单指令字) 长立即数寻址(双指令字) 第一指令字 第二指令字 16位常数=16384=4000h 2、直接寻址 ARU 辅助寄存器更新代码,决定当前辅助寄存器是否和如何进行增或减。N规定是否改变ARP值,(N=0,不变)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); 4.3.1.2、减法指令(5条); 4.3.1.3、乘法指令(2条); 4.3.1.4、乘加与乘减指令(6条); 4.3.1.5、其它算数指令(3条); 4.3.1.6、移位和循环移位指令(4条); 4.3.1.7、逻辑运算指令(4条); 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条) 4.3.2.2、临时寄存器指令(5条) 4.3.2.3、乘积寄存器指令(6条) 4.3.2.4、辅助寄存器指令(5条) 4.3.2.5、状态寄存器指令(9条) 4.3.2.6、堆栈操作指令(4条) 4.3.3、存储器与I/O操作指令(8条)4.3.3.1、数据移动指令(4条) 4.3.3.2、程序存储器读写指令(2条) 4.3.3.3、I/O操作指令(2条) 4.3.4、程序控制指令(15条) 4.3.4.1、程序分支或调用指令(7条) 4.3.4.2、中断指令(3条) 4.3.4.3、返回指令(2条) 4.3.4.4、其它控制指令(3条)

4.3.1、算术逻辑指令(28条) 4.3.1.1、加法指令(4条); ▲ADD ▲ADDC(带进位加法指令) ▲ADDS(抑制符号扩展加法指令) ▲ADDT(移位次数由TREG指定的加法指令) 4.3.1.2、减法指令(5条); ★SUB(带移位的减法指令) ★SUBB(带借位的减法指令) ★SUBC(条件减法指令) ★SUBS(减法指令) ★SUBT(带移位的减法指令,TREG决定移位次数)4.3.1.3、乘法指令(2条); ★MPY(带符号乘法指令) ★MPYU(无符号乘法指令) 4.3.1.4、乘加与乘减指令(6条); ★MAC(累加前次积并乘)(字数2,周期3) ★MAC(累加前次积并乘) ★MPYA(累加-乘指令) ★MPYS(减-乘指令) ★SQRA(累加平方值指令) ★SQRS(累减并平方指令) 4.3.1.5、其它算数指令(3条); ★ABS(累加器取绝对值指令) ★NEG(累加器取补码指令) ★NORM(累加器规格化指令) 返回 4.3.1.6、移位和循环移位指令(4条); ▲ SFL(累加器内容左移指令) ▲ SFR(累加器内容右移指令) ▲ROL(累加器内容循环左移指令) ▲ROR(累加器内容循环右移指令) 返回 4.3.1.7、逻辑运算指令(4条); ▲ AND(逻辑与指令) ▲ OR(逻辑或指令) ▲ XOR(逻辑异或指令) ▲ CMPL(累加器取反指令) 返回 4.3.2、寄存器操作指令(35条) 4.3.2.1、累加器操作指令(6条)

第3章-MCS-51系列单片机的指令系统和汇编语言程序范文

第3章MCS一51系列单片机的指令系统 和汇编语言程序 3·1汇编指令 3·1·1请阐明机器语言、汇编语言、高级语言三者的主要区别,进一步说明为什么这三种语言缺一不可。 3·1·2请总结: (1)汇编语言程序的优缺点和适用场合。 (2)学习微机原理课程时,为什么一定要学汇编语言程序? 3·1·3MCS一51系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象与寻址范围。 3·1·4要访问片内RAM,可有哪几种寻址方式? 3·1·5要访问片外RAM,有哪几种寻址方式? 3·1·6要访问ROM,又有哪几种寻址方式? 3·1·7试按寻址方式对MCS一51系列单片机的各指令重新进行归类(一般根据源操作数寻址方式归类,程序转移类指令例外)。 3·1·8试分别针对51子系列与52子系列,说明MOV A,direct指令与MOV A,@Rj 指令的访问范围。 3·1·9传送类指令中哪几个小类是访问RAM的?哪几个小类是访问ROM的?为什么访问ROM的指令那么少?CPU访问ROM多不多?什么时候需要访问ROM? 3·1·10试绘图示明MCS一51系列单片机数据传送类指令可满足的各种传送关系。3·1·11请选用指令,分别达到下列操作: (1)将累加器内容送工作寄存器R6. (2)将累加器内容送片内RAM的7BH单元。 (3)将累加器内容送片外RAM的7BH单元。 (4)将累加器内容送片外RAM的007BH单元。 (5)将ROM007BH单元内容送累加器。 3·1·12 区分下列指令的不同功能: (l)MOV A,#24H 与MOV A.24H (2)MOV A,R0与MOV A,@R0 (3)MOV A,@R0与MOVX A,@R0 3·1·13设片内RAM 30H单元的内容为40H; 片内RAM 40H单元的内容为l0H; 片内RAM l0H单元的内容为00H; (Pl)=0CAH。 请写出下列各指令的机器码与执行下列指令后的结果(指各有关寄存器、RAM单元与端口的内容)。 MOV R0,#30H MOV A,@R0 MOV RI,A MOV B,@Rl MOV @R0,Pl MOV P3,Pl MOV l0H,#20H MOV 30H,l0H

汇编语言指令系统.

汇编语言--指令系统整理总结--转贴 2007-05-1722:36 对于计算机软件专业的学生,适当的学习一些汇编语言知识,我认为很重要,有助于你对于计算机底层工作的了解,帮助你更好的理解计算机高级语言,汇编原理,也对于学习操作系统很有帮助... 近来自己在学汇编语言... 整理总结了常用的一些指令,认为对于学习汇编的龙友会有一些帮助以下内容均为个人整理...错误不当之处还望大家指出更正..谢谢..每条指令均按照 1、指令的汇编格式 2、指令的基本功能 3、指令的寻址方式 4、指令对标志位的影响 5、指令的特殊要求 这 5条内容的形式来对每条指令进行归纳总结.... [数据传送指令] 一、通用数据传送指令 1、传送指令 MOV (move 指令的汇编格式:MOVDST,SRC 指令的基本功能:(DST<-(SRC将原操作数(字节或字传送到目的地址。 指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式, 这个限制适用于所有指令。指令的执行对标志位的影响:不影响标志位。 指令的特殊要求:目的操作数 DST 和源操作数 SRC 不允许同时为段寄存器; 目的操作数 DST 不能是 CS,也不能用立即数方式。 2、进栈指令 PUSH (pushonto the stack

出栈指令 POP (popfrom the stack 指令的汇编格式:PUSHSRC ;POP DST 指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而 POP 指令又可将这些数据恢复。 PUSH SRC (SP<-(SP-2;(SP<-(SRC POP DST (DST<-((SP;(SP<-(SP 指令支持的寻址方式:push和 pop 指令不能不能使用立即数寻址方式。 指令对标志位的影响:PUSH和 POP 指令都不影响标志位。 指令的特殊要求:PUSH 和 POP 指令只能是字操作, 因此, 存取字数据后, SP 的修改必须是+2或者 -2; POP 指令的 DST 不允许是 CS 寄存器; 3、交换指令 XCHG (exchange 指令的汇编格式:XCHGOPR1,OPR2 指令的基本功能:(OPR1<->(OPR2 指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。 指令对标志位的影戏:不影响标志位。 指令的特殊要求:不允许使用段寄存器。 二、累加器专用传送指令 4、输入指令 IN (input 输出指令 OUT (output 指令的汇编格式:INac,port port<=0FFH

指令系统及汇编语言程序设计

第3章指令系统及汇编语言程序设计 一、简答题 1、80C51系列单片机的指令系统有何特点? 2、80C51单片机有哪几种寻址方式?各寻址方式所对应的寄存器或存储器空间如何? 3、访问特殊功能寄存器SFR可以采用哪些寻址方式? 4、访问内部RAM单元可以采用哪些寻址方式? 5、访问外部RAM单元可以采用哪些寻址方式? 6、访问外部程序存储器可以采用哪些寻址方式? 7、为什么说布尔处理功能是80C51单片机的重要特点? 8、对于80C52单片机内部RAM还存在高128字节,应采用何种方式访问? 9、试根据指令编码表写出下列指令的机器码。 (1)MOV A,#88H (2)MOV R3,50H (3)MOV P1.1,#55H (4)ADD A,@R1 (5)SETB 12H 10、完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指 令序列。 (1)将R0的内容传送到R1; (2)内部RAM单元60H的内容传送到寄存器R2; (3)外部RAM单元1000H的内容传送到内部RAM单元60H; (4)外部RAM单元1000H的内容传送到寄存器R2; (5)外部RAM单元1000H的内容传送到外部RAM单元2000H。 11、11、若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段 后上述各单元内容的变化。 MOV A,@R1 MOV @R1,40H MOV 40H,A MOV R1,#7FH 12、若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20)=0FH, 试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指 出CY、AC、和OV的值。 (1)MOV A,@R0 (2)ANL 40H,#0FH (3)ADD A,R4 (4)SWAP A (5)DEC @R1 (6)XCHD A,@R1 13、若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、 42H单元中的内容各为多少? MOV A,50H MOV R0,A MOV A,#00H MOV @R0,A MOV A,3BH MOV 41H,A MOV 42H,41H 14、试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。

DSP 汇编指令缩写

ABS Absolute value of Accumulator ADD add to accumulator ADDC add to accumulator with carry ADDT add to accumulator with shift specified by TREG AND and with accumulator CMPL complement accumulator LACC load accumulator with shift LACL load low accumulator and clear high accumulator LACT load accumulator with shift specified by TREG NEG negate accumulator NORM normalize contents of accumulator OR or with accumulator ROL/ROR rotate accumulator left/right SACH/SACL store high/low accumulator with shift SFL/SFR shift accumulator left/right SUB subtract from accumulator SBUC conditional subtract SUBS subtract from accumulator with sign extension suppressed SUBT subtract from accumulator with shift specified by TREG XOR exclusive or with accumulator ZALR zero low accumulator and load high accumulator with rounding ADRK add short limmediate value to AR BANZ branch on AR not zero CMPR compare AR with AR0 LAR load AR MAR modify AR STR store AR SBRK subtract short limmediate APAC add PREG to accumulator LPH load PREG LT load TREG LTA load TREG and ACC previous product LTD load TREG ACC previous product and move date LTS load TREG and subtract previous product MAC multiply and accumulate MACD multiply and accumulate wit data move MPY multiply MPY A multiply and accumulate previous product MPYS multiply and subtract previous product MPYS multiply unsign PAC load accumulator with PREG SPAC subtract PREG from accumulator SPH/SPL store high/low PREG SPM set PREG output shift mode

汇编语言指令

汇编语言指令集 数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2

格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL 影响标志: C,P,Z,S,O ROR,ROL,RCR,RCL

指令系统及汇编语言程序设计

指令系统及汇编语言程序设计 2.4 伪指令 伪指令本身不会产生可执行的机器指令代码,它仅仅是告诉汇编程序有关源程序的某些信息,或者用来说明内存单元的用途。伪指令在汇编过程中由汇编程序进行处理。 2.4.1 数据定义伪指令 数据定义伪指令用于定义变量的类型、给存储器赋初值或给变量分配存储单元。常用的数据定义伪指令有DB、DW和DD等。 格式: [变量名] 伪指令助记符数据表项 功能:定义一个数据存储区,其类型由所定义的数据定义指令而指定。 操作说明:方括号中的变量名为任选项,变量名后面不跟冒号“:”。数据表项可以包含多个数据之间用逗号分隔开。数据定义伪指令助记符有以下三种: (1) DB定义变量类型为字节(BYTE),DB后面的每个数据占一个字节。 (2) DW 定义变量类型为字(WORD),DW后面的每个数据占一个字,即两个字节。在内存中,低字节在前,高字节在后。 (3) DD 定义变量类型为双字(DWORD),后面的每个数据占两个字。在内存中,低位字在前,高位字在后。 例如,有下列数据定义语句 D1 DB 1,-12 D2 DW 1,2010H D3 DD 1,10203040H 数据表项中除了常数、表达式和字符串外,还可以是问号“?”,它仅给变量保留相应的存储单元,而不给变量赋初值。相同的操作数重复出现时,可用重复符号“DUP”表示。 其格式为: n DUP(初值[,初值,……]);n表示重复的次数,圆括号中为重复的内容。 下面是用问号或DUP表示操作数的例子: ARRAY DB 1000 DUP(0) VAR DW ?,? 2.4.2 符号定义伪指令 1. 赋值伪指令 格式:变量名 EOU 表达式 功能:将右边表达式的值赋给左边的变量。 操作说明:表达式可以是一个常数、符号、数值表达式或地址表达式。 需要注意的是:EQU伪指令不允许对同一符号重复定义。 EQU伪指令具体应用举例如下: CR EQU ODH ;定义CR为常数(回车的ASCII代码) TAB EQU TABLE-ASCII ;定义变量 DIS EQU 1024*768 ;定义数值表达式 ADR EQU ES:[DI+3] ;定义地址表达式 M EQU MOV ;定义助记符 2.等号(=)伪指令 格式:变量名=表达式 功能:将右边表达式的值赋给左边的变量。 操作说明:等号(=)伪指令的功能与EQU伪指令相仿,它可以对同一个名字重复定义。

MIPS 指令系统和汇编语言

第四章MIPS指令系统和汇编语言 1.考研预测:出题特点总结 本章是对统考408内容来说,本章是新增的章节。此外北航961大纲中制定了要考MIPS 指令集,从15年961真题来看MIPS是重中之重。但是今年计组并没有指定具体的教材,但大纲明确要求掌握MIPS指令集,所以还是建议考生将《计算机组成与设计:硬件/软件接口》中文版(原版第三版或第四版)作为本章的参考书籍。 本章大致内容是MIPS的基础知识,难度并不大。考生应该将重点放在MIPS指令集的基础上,考察C语言中的语句转换为对应的MIPS指令,所以需要熟练掌握C语言中一些语句对应的MIPS指令实现。本章出题很大可能就是C语言和MIPS汇编语言之间的转换,也可能涉及到第五章CPU指令流水线等内容。 2.考研知识点系统整理:梳理考点,各个击破 3.1 指令系统概述 机器指令要素 操作码:指明进行的何种操作 源操作数地址:参加操作的操作数的地址,可能有多个。 目的操作数地址:保存操作结果的地址。 下条指令的地址:指明下一条要运行的指令的位置,一般指令是按顺序依次执行的,所以绝大多数指令中并不显式的指明下一条指令的地址,也就是说,指令格式中并不包含这部分信息。只有少数指令需要显示指明下一条指令的地址。

指令执行周期 3.2 指令格式 一台计算机指令格式的选择和确定要涉及多方面的因素,如指令长度、地址码结构以及操

作码结构等,是一个很复杂的问题,它与计算机系统结构、数据表示方法、指令功能设计等都密切相关。 指令的基本格式 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如下: ( 其中A1为第一操作数地址,A2为第二操作数地址,A3为操作结果存放地址。 这条指令的含义:(A1)OP(A2)→A3 式中OP表示双操作数运算指令的运算符号,如“+”或“–”等。 (2)二地址指令

DSP28335汇编教程

DSP28335汇编教程 当硬件执行指令时,寻找指令所指定的参与运算飞操作数的方式——寻址方式。根据程序的要求采用不同的寻址方式,可以有效地缩短程序的运行时间和提高代码执行效率。汇编指令是可执行指令,每一条指令对应一条机器码,用来控制处理器仲的执行部分进行各种操作。在本章节当中将主要以基于C28x的DSP芯片为例,为读者讲解DSP的寻址方式和汇编指令系统,其中大部分内容也可适用于其他Ti公司的DSP产品。 6.1汇编语言指令集概述 在学习C28x系列DSP的寻址方式和汇编指令指令之前,先来对一些基础的知识进行讲解一下先,在汇编程序当中开发人员会常常使用到许多的特殊符号和标志,它们都具有特殊的含义,在学习汇编之前读者们必须先理解这些符号和标志含义,在这里会对其中最常用最重要的操作数符号和寄存器经行详细说明。 在进行汇编讲解之前先来了解一下开发的核心——CPU。在TMS320C2000系列中,CPU 内核为: C20x/C24x/C240x:C2xLP: C27x/C28x:C27x、C28x 这些CPU的硬件结构有一定差别,指令集也不相同,但是,在C28x芯片中可以通过选择兼容特性模式,使C28xCPU与C27xCPU及C2xLPCPU具有最佳兼容性。可通过状寄存器STl的位OBJMODE和位AMODE的组合,选定模式。 C28x芯片具有3种操作模式: 1.C28x模式:在该模式中,用户可以使用C28x的所有有效特性、寻址方式和指令系统, 因此,一般应使C28x芯片工作于该种模式。 2.C27x目标——兼容模式:在复位时,C28x的CPU处于C27x目标-兼容模式。在该模式 下,目标码与C27xCPU完全兼容,且它的循环—计数也与C27xCPU兼容。 3.C2xLP源——兼容模式:该模式允许用户运行C2xLP的源代码,这些源代码是用C28x 代码生成工具编译生成的。 在下面的讲解当中会牵涉到模式的转换,希望读者要搞清楚每一个模式的对应关系。 本节假设条件为芯片工作于C28x模式(OBJMODE=1,AMODE=0)。复位后,通过执行指令C28OBJ或者SETC OBJMODE将ST1中的OBJMODE位置1,芯片即可工作于C28x模式。 6.1.1 DSP中的操作数 汇编语言离不开操作符和操作数,操作符可以认为就是CPU的指令或者编译器上的伪指令,操作数是指令执行过程中的参与者,也可以说操作数就是指令所控制的对象。 如表6-1,表6-2和表6-3对指令中常用到的一些操作数符号进行说明

微机原理与接口技术汇编语言指令详解吐血版

第一讲 第三章 指令系统--寻址方式 回顾: 8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过 程。 重点和纲要:指令系统--寻址方式。有关寻址的概念;6种基本的寻址方式及 有效地址的计算。 教学方法、实施步骤 时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等 讲 授 40” ×2 提 问 3” ×2 小 结 2” ×2 讲授内容: 3.1 8086/8088寻址方式 首先,简单讲述一下指令的一般格式: 操作码 操作数 …… 操作数 计算机中的指令由操作码字段和操作数字段组成。 操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088的基本寻址方式有六种。 1.立即寻址 所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。如图所示。 例如:MOV AX ,3000H

立即数可以是8位的,也可以是16位的。若是16位的,则存储时低位在前,高位在后。 立即寻址主要用来给寄存器或存储器赋初值。 2.直接寻址 操作数地址的16位偏移量直接包含在指令中。它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。 例如: MOV AX,DS:[2000H]; 图2-2 (对DS来讲可以省略成 MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。 8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。 MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段 即绝对地址=(ES)*16+3000H 3.寄存器寻址 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。 例如:MOV DS,AX MOV AL,BH 4.寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄

高级语言、汇编语言及机器语言的区别

计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。 低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如目前流行的java,c,c++,C#,pascal,python,lisp,prolog,FoxPro,VC,易语言,中文版的C语言习语言等等,这些语言的语法、命令格式都不相同。 高级语言与计算机的硬件结构及指令系统无关,它有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握。但高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢。所以汇编语言适合编写一些对速度和代码长度要求高的程序和直接控制硬件的程序。高级语言、汇编语言和机器语言都是用于编写计算机程序的语言。 高级语言程序“看不见”机器的硬件结构,不能用于编写直接访问机器硬件资源的系统软件或设备控制软件。为此,一些高级语言提供了与汇编语言之间的调用接口。用汇编语言编写的程序,可作为高级语言的一个外部过程或函数,利用堆栈来传递参数或参数的地址。 机器语言(machine language)是一种指令集的体系。这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指指令系统 它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等特点。 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基本格式如,操作码字段和地址码字段,其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。 用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。手编程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,直观性差,还容易出错。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。 汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语合中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编程序把汇编语言翻译成机器语言的过程称为汇编.

dsp汇编指令系统介绍(精)

汇编指令集 本节根据指令的功能来分,提供六张表来说明指令集的概况: 累加器、算数和逻辑指令(表2); 辅助寄存器和数据页指针指令(表3); TREG、PREG和乘法指令(表4); 转移指令(表5); 控制指令(表6); I/O和存储器操作(表7)。 在每张表中,指令按字母顺序排列。执行每条指令所需要的周期数在表中给出,所有指令都假设从内部程序存储器和内部数据存储器中执行,指令的周期数适用于单指令执行,不适用于重复方式。编程时,用户必须对每条指令的寻址方式了解清楚,因此这里也在表中给出了每条指令的寻址方式。由于指令的操作码对用户编程没有多大指导意义,在这里就没有列出来。 为了参照起见,我们先定义这六张概述表的符号意义: ACC 累加器。 AR BITX CM 辅助寄存器。 4位数值,用于指定数据存储器数值中的哪一位将被BIT指令所测试。 2位数值,CMPR指令执行CM值所声明的比较: 若CM=00,测试当前AR=AR0否; 若CM=01,测试当前ARAR0否; 若CM=11,测试当前AR≠AR0否。 Shift TP 4位右移量。用于条件执行指令的2位数值,代表如下4种条件:若BIO引脚为低, TP=00;若TC位=1,TP=01;若TC位=0,TP=10;无条件TP=11。 ARX 用于LAR和SAR指令的3位数据值,指定被操作的辅助寄存器。 52 表2 累加器、算数和逻辑指令 ABS 周期 |(ACC)|→ACC 1 (ACC)+(数据存储器地址)×1 2shift→ACC (ACC)+(数据存储器地址)×

216→ACC 1(ACC)+k→ACC 1 shift (ACC)+lk×2→ACC 2 指令功能 (ACC)+(数据存储器地址)+(C)→ ACC 寻址方式 直接/间接 直接/间接短立即数长立即数 指令说明 ACC取绝对值 移位时低位填0,若SXM=1,高位用符号扩展;若SXM=0,高位填0;结果存在ACC中,该指令使C=0。寻址短立即数时,加操作不受SXM的影响,且不能重复执行。 ADD ADDC 1 直接/间接该指令抑制符号扩展 该指令抑制符号扩展;无论SXM为何值,数据均作无符号16位数看待。当SXM=0和 直接/间接 移位次数等于0时,ADDS与ADD指令结果相同。 被寻址的数据寄存器单元的内容左移并加 直接/间接到ACC,移位次数由TREG的低4位确定, SXM位的值控制移位时是否作符号扩展。 使用直接/间接寻址,ACC的低位字与数据直接/间接存储器单元的值作与运算,结果存在ACC 的低字,ACC的高位字清0。使用立即数寻 址,长立即数可以左移,移位时,32位中长立即数未被长立即操作数填充的位均被清零。 长立即数累加器中的内容用其逻辑反取代指定的数据存储器单元的内容或16位常数直接/间接左移并加载到ACC,低位填0,若SXM= 1,高位用符号位扩展;若SXM=0,则填直接/间接0。 长立即数 指定的数据存储器单元的内容或用0扩展

汇编语言指令集合 吐血整理

8086/8088指令系统记忆表 数据寄存器分为: AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据. BH&BL=BX(base):基址寄存器,常用于地址索引; CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。他们的特点是,这4个16位的寄存器可以分为高8位:AH,BH,CH,DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。 另一组是指针寄存器和变址寄存器,包括: SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置; BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置; SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针; DI(Destination Index):目的变址寄存器,可用来存放相对于ES段之目的变址指针。 指令指针IP(Instruction Pointer) 标志寄存器FR(Flag Register) OF(overflow flag) DF(direction flag) CF(carrier flag) PF(parity flag) AF(auxiliary flag) ZF(zero flag) SF(sign flag) IF(interrupt flag) TF(trap flag) 段寄存器(Segment Register) 为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器; DS(Data Segment):数据段寄存器; SS(Stack Segment):堆栈段寄存器;

反汇编语言常用指令

内容目录 计算机寄存器分类简介 计算机寄存器常用指令 一、常用指令 二、算术运算指令 三、逻辑运算指令 四、串指令 五、程序跳转指令 ------------------------------------------ 计算机寄存器分类简介: 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。 对低16位数据的存取,不会影响高16位的数据。 这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。 程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、除、输入/输出等操作,使用频率很高; 寄存器EBX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器ECX称为计数寄存器(Count Register)。 在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址, 在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果, 而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。 2、变址寄存器 32位CPU有2个32位通用寄存器ESI和EDI。 其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。 3、指针寄存器

8088汇编语言指令

8088指令系统总结 预备知识:符号含意、数据传送原则 符号含意 符号含意 opr 操作数 src 源操作数 dst 目的操作数 mem 存储器 im 立即数 seg 段寄存器 reg 通用寄存器 EA 偏移地址 PA 物理地址 nn直接地址DISP8:8位偏移地址DISP16:16位偏移地址 数据传送原则 口诀数据传送原则 寄段储间互传数,seg、reg、mem之间的数据可以相互传送。 立即只入寄和储。im可入reg、mem 只有寄间互换数,reg之间的数据可以传送。Mem间、seg间不可自传CS立即不可目,CS和立即数不可入,不能当目的操作数 8088指令系统 8088指令系统分六大类 一、数据传送指令 二、算术运算指令 三、逻辑运算与位移指令 四、串操作指令 五、控制与转移指令 六、CPU控制指令 一、数据传送指令 1.通用传送指令 (1)传送指令MOV dst, src功能:dst←src (2)堆栈操作指令人W PUSH src作用:SP←SP-2 ((SP+1)+SP)←src src(reg seg mem) POP dst 作用:dst←((SP+1)+SP)SP←SP-2 dst(reg seg mem)

(3)交换指令XCHG OPR1,OPR2 OPR1←→OPR2 2.累加器传送指令 (1)输入输出指令 256B短格式:直接寻址,64K长格式:直接、间接寻址,PORT为8位口地址输入指令:直接寻址IN AX,PORT IN AL,PORT 间接寻址IN AX,DX IN AL,DX 输出指令:直接寻址OUT AX,PORT OUT AL,PORT 间接寻址OUT AX,DX OUT AL,DX (2)换码指令XLAT AL←(BX+AL)(BX)为mem地址 3.地址传送指令 (1)有效地址传送寄存器 LEA reg16, mem作用:mem的EA→reg16 (2)指针送寄存器和DS指令 LDS reg16, mem32 作用:reg16←mem32的低字高字→DS (3)指针送寄存器和有ES指令 LES reg16, mem32 作用:reg16←mem32的低字高字→ES 4.标志寄存器传送指令 (1)取标志指令:LAHF F的低字节→AH (2)置标志指令:SAHF AH→flag的低字节 (3)标志入栈指令:PUSHF SP-2→SP F→(SP+1):SP (4)标志出栈指令:POPF (SP+1):SP→F SP+2→SP 二、算术运算指令 1.加法类指令(Add)opr-reg mem B/W (1)不带进位加法ADD dst, src dst←dst+src 影响OSZAPC (2)带进位加法ADC dst, src dst←dst+src+CF影响OSZAPC (3)加1指令INC opr opr←opr+1影响OSZP (4)组合十进制调整DAA放在ADD后 (5)非组合十进制调整AAA放在ADC后 原理:2个十进制数相加,可能出现非法数(A到F),需用调整指令,进行加6调整变成合法十进制数。十进制=BCD组合=压缩组合BCD占4位非组合BCD占8位 2 . 减法类指令(substract) (1)减法指令SUB dst, src;dst←dst-src影响标志位OSZAPC (2)带借位减法指令SBB dst, src;dst←dst-src-CF影响标志位

相关文档
最新文档