简单算术运算汇编指令和CPU状态标志位介绍

数据传送指令

操作数类型

操作数中有3基本类型

  • 立即数:使用数字文本表达式
  • 寄存器操作数:使用CPU内已命名的寄存器
  • 内存操作数:引用内存位置

MOV指令

  • MOV指令将源操作数复制到目的操作数
  • 目的操作数的内容会发生改变,源操作数不会改变
MOV destination,source
  • 使用原则
  • 两个操作数必须是同样的大小
  • 两个操作数不能同时为内存操作数
  • 指令指针寄存器(IP、EIP、RIP)不能作为目的操作数
  • 单条MOV指令不能用于直接将数据从一个内存位置传送到另一个内存位置
  • 在源操作数的值赋给内存操作数之前,必须先将该数值传送给一个寄存器

针对第5条原则举例:

.data
var1  WORD ?
var2  WORD ?

.code
mov  ax,var1
mov  var2,ax

MOVZX指令(只用于无符号整数)

MOVZX指令(进行全零扩展并传送)将源操作数复制到目的操作数
注意:源操作数不能是常数

举例:

.data
val  BYTE           10001111b

.code
movzx  ax,val       ;AX=0000000010001111b

MOVSX指令(只用于有符号整数)

MOVSX指令(进行全零扩展并传送)将源操作数复制到目的操作数。
操作数在进行符号扩展时,在目的操作数上全部扩展位上重复(复制)长度较小操作数的最高位。

举例1:

.data
val BYTE 10001111b

.code
movsx  ax,val    ;AX=1111111110001111b

在这里插入图片描述

举例2:

mov    bx,0A69Bh   ;该处的0是一种方便的表示法,用于防止汇编器将常数误认为标识符
movsx  eax,bx      ;EAX=FFFFA69Bh
movsx  edx,bl      ;EDX=FFFFFF9Bh
movsx  cx,bl       ;CX=FF9Bh

LAHF和SAHF指令

LAHF(加载状态标志位到AH)指令将EFLAGS寄存器的低字节复制到AH。

被复制的标志位包括:符号标志位、零标志位、辅助进位标志位、奇偶标志位和进位标志位。使用该指令,可以方便的把标志位副本保管在变量中。

举例:

.data
saveflags   BYTE  ?

.code
lahf                         ;将标志位加载到AH
mov  saveflags,ah            ;用变量保存这些标志位

SAHF(保存AH内容到状态标志位)指令将AH内容复制到EFLAGS(或RFLAGS)寄存器低字节。

举例:

mov  ah,saveflags      ;加载被保存的标志位到AH中
sahf                   ;复制到EFLAGS寄存器

XCHG指令

XCHG(交换数据)指令交换两个操作数内容

  • 使用原则
  • 除了不适用立即数做操作数,XCHG指令操作数的要求与MOV指令操作数要求一样

举例:

xchg  ax,bx    ;交换16位寄存器内容
xchg  ah,bl    ;交换8位寄存器内容
xchg  var1,bx  ;交换16位内存操作数和BX寄存器内容
xchg  eax,ebx  ;交换32位寄存器内容

如果要交换两个内存操作数,则用寄存器作为临时容器,把MOV指令与XCHG指令一起使用

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
TMS320C28x CPU汇编语言指令是指由德州仪器公司开发的基于TMS320C28x系列数字信号处理器的指令系统,用于程序控制和数据处理。以下是对TMS320C28x CPU汇编语言指令的详细解释。 TMS320C28x CPU汇编语言指令有一系列不同的操作码,每个操作码代表不同的指令功能。这些指令用于操作寄存器、存储器和I/O设备,以及进行算术逻辑运算、数据转移和控制流程等操作。 指令集包括了多种类型的指令,比如数据传输指令算术指令、逻辑指令、位操作指令和分支指令等。数据传输指令用于将数据从一个地方传输到另一个地方,包括寄存器之间的数据传输和寄存器与存储器之间的数据传输。算术指令支持各种算术运算,例如加法、减法、乘法和除法等。逻辑指令用于逻辑运算,例如与、或、非和异或等。位操作指令用于对位进行操作,比如位移、置位和清除等。分支指令用于控制程序的流程,例如跳转和循环等。 TMS320C28x CPU汇编语言指令还具有一些特殊的功能,例如乘法累加、循环移位和半字、字和双字的操作等。乘法累加指令用于执行乘法和累加运算,可以高效地进行数值处理。循环移位指令用于循环移动数据的位,非常适用于数字信号处理应用。字操作指令和双字操作指令可以一次操作多个字节的数据,提高了数据处理效率。 总之,TMS320C28x CPU汇编语言指令为开发人员提供了丰富的指令集,可以高效地控制和处理数据。通过灵活地使用这些指令,可以编写出高效、精确和可靠的程序,满足各种计算需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值