设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 1807|回复: 2
收起左侧

C51汇编实现取AB寄存器之间的最大值/最小值/平均值并进行比较大小/传送 不影响标志位

[复制链接]
发表于 2018-11-6 10:04:59 | 显示全部楼层 |阅读模式

  1. MOV B,#7FH
  2. MOV A,#32H
  3. CALL AVG_AB
  4. SJMP $

  5. MIN_AB:                ;B小于A 则将B传送给A,否则不传送
  6.         PUSH PSW                ;将PSW压入堆栈,比较完成后不影响进位C等标志。
  7.         CJNE A,B,MIN_AB_NOT         ;比较后若A小于B则进位C为1,否则为0
  8.         JMP MIN_AB_END        ;比较等于则执行此语句
  9.         MIN_AB_MOV:        ;比较成立 进行数值传送
  10.         MOV A,B                ;将B送A
  11.         JMP MIN_AB_END
  12.         MIN_AB_NOT:        ;比较不等于会跳转到这里
  13.         JNC MIN_AB_MOV                ;进位C为0则跳转,否则顺序执行
  14.         MIN_AB_END:
  15.         POP PSW
  16.         RET


  17. MAX_AB:                ;B大于A 则将B传送给A,否则不传送
  18.         PUSH PSW
  19.         CJNE A,B,MAX_AB_NOT
  20.         JMP MAX_AB_END        ;比较等于则执行此语句
  21.         MAX_AB_MOV:        ;比较成立 进行数值传送
  22.         MOV A,B                ;将B送A
  23.         JMP MAX_AB_END
  24.         MAX_AB_NOT:        ;比较不等于会跳转到这里
  25.         JC MAX_AB_MOV                ;进位C为1则跳转,否则顺序执行
  26.         MAX_AB_END:
  27.         POP PSW
  28.         RET


  29. AVG_AB:                ;AB取平均值 A=(A+B)/2
  30.         PUSH PSW
  31.         ADD A,B
  32.         CLR C
  33.         RRC A
  34.         POP PSW
  35.         RET


  36. END
复制代码


发表于 2018-11-6 12:32:09 | 显示全部楼层
这玩意说难不难说简单也不简单
您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-3-29 00:33 , Processed in 0.465026 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表