- 打卡等级:常住居民III
- 打卡总天数:144
- 最近打卡:2025-05-05 15:54:19
高级会员
- 积分
- 995
|
【例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单片机是大端模式。
大端模式,是指数据的高位保存在内存的低地址中,而数据的低位保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放 |
|