AVR 定点数运算程序设计及数制转换

AVR 单片机有加法和减法指令,可以直接调用相关指令来达到目的。

这里列出了16位加法、16位带立即数加法、

16位减法、16位带立即数减法、

16位比较、16位带立即数比较程序和16位取补程序。

 

 add16:  

  add       r16,r18 ;  r17:r16+r19:r18→r17:r16

  adc       r17,r19    

 addi16:

  subi  r16,low(-addi2) ; r17:r16+addi2→r17:r16

  sbci  r17,high(-addi2)    ;addi2为16位立即数

sub16:  

  sub       r16,r18  ; r17:r16-r19:r18→r17:r16

  sbc       r17,r19

subi16:

  subi  r16,low(subi2)     ; r17:r16-subi2→r17:r16

  sbci  r17,high(subi2)    ; subi2为16位立即数

 

cp16:   

  cp        r16,r18                  ;  r17:r16与r19:r18相比较

  cpc              r17,r19                 

 

cpi16:  

  cpi        r16,low(cp2)         ; r17:r16与16位立即数cp2相比较

  ldi         r18, high(cp2)

  cpc              r17,r18

 

beg16:  

  com             r16                ;r17:r16取补并回存

  com              r17

  subi             r16,low(-1)

  sbci              r17,high(-1)

 

;32位运算与16位运算相似,例:32位加法程序和32位减法程序如下:

 

ADD32:               ;32位加法程序

  ADD R16,R20

  ADC R17,R21

  ADC R18,R22

  ADC R19,R23

 

SUB32:            ;32位减法程序

  SUB R16,R20

  SBC R17,R21

  SBC R18,R22

  SBC R19,R23

 

posted @   IAmAProgrammer  阅读(520)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
历史上的今天:
2012-03-25 stm32 fsmc synchronous mode
点击右上角即可分享
微信分享提示