找回密码
 立即注册
查看: 97|回复: 1

陈桂友老师的stc8H教程学习笔记之汇编篇

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:144
  • 最近打卡:2025-05-05 15:54:19

32

主题

149

回帖

995

积分

高级会员

积分
995
发表于 2025-1-8 18:51:44 | 显示全部楼层 |阅读模式
【例4-3】在40H和41H中存放1个双字节数据(即16位数据),高位字节数据在41H中,低位字节数据在40H中,试将其除以2。

看了这个程序有点疑惑,如果是奇数怎么解决。没看出来是怎么解决的。
结果补全程序跑了一下,果然如果是奇数,得不到准确的半值的


$NOMOD51
$include (stc8h.h)
    ORG 0000H
    LJMP    MAIN
    ORG 0100H
MAIN:
    CLR C        ;先将进位标志清0,为第一次移位做准备
    MOV A,41H
    RRC A
    MOV 41H,A        ;高位字节
    MOV A,40H
    RRC A
    MOV 40H,A
    END


在CLR C这行打断点,然后D:0,在40H和41H上都手动输入11 ,1111H=10进制4369.
执行完成后40H 内容88,41H内容08
0888H=10进制2184.这个是4368的一半。也就是说汇编的这个除法程序得不到小数。

另外,51单片机是大端模式。
大端模式,是指数据的高位保存在内存的低地址中,而数据的低位保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:144
  • 最近打卡:2025-05-05 15:54:19

32

主题

149

回帖

995

积分

高级会员

积分
995
发表于 2025-1-9 11:35:40 | 显示全部楼层
陈老师貌似有一个口误
教程中的第二位,其实是从右向左数第三位。


教程中的第二位其实是从右向左数第三位.png

$NOMOD51
$INCLUDE (STC8H.H)
       ORG0000H
       LJMPMAIN
       ORG0200H
MAIN:
       MOVSP,#80H
       CLR2AH
LOOP:
       LJMPLOOP
       END
先把25H设置为34,会变成30
把25H设置为3F,会变成3B。00111011


回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-6 21:50 , Processed in 0.100682 second(s), 53 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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