tonyone 发表于 2013-4-13 20:46:06

汇编语言请教:怎样把两个寄存器的高位和低位组合成新....

假如把30H的高位和31H的低位组合成一个新的字节,汇编语言怎么编程,水平太烂,自己搞不出来,向高手请教。

babysnail 发表于 2013-4-13 20:56:19

mov a,30h
anla,#0f0h
xch a,31h
anla,#0fh
anll a,31h   

tonyone 发表于 2013-4-13 21:03:49

真快,谢谢楼上的高手

dz20062008 发表于 2013-4-14 02:19:22

本帖最后由 dz20062008 于 2013-4-14 02:24 编辑

估计2楼的结果总为#00h哈哈!
ANL 30H,#0F0H;30单元去低4位
ANL 31H,#0FH;31单元去高4位
MOV A,30H       ;把30单元的数传送到累加器A
ADD A,31H         ;30单元与31单元数据组合结果存于累加器A

总共6个机器周期

tonyone 发表于 2013-4-14 10:15:20

dz20062008 发表于 2013-4-14 02:19 static/image/common/back.gif
估计2楼的结果总为#00h哈哈!
ANL 30H,#0F0H;30单元去低4位
ANL 31H,#0FH;31单元去高4位


谢谢你,这么晚还在回帖。
我觉得2楼是正确的。

tonyone 发表于 2013-4-14 10:53:25

dz20062008 发表于 2013-4-14 02:19 static/image/common/back.gif
估计2楼的结果总为#00h哈哈!
ANL 30H,#0F0H;30单元去低4位
ANL 31H,#0FH;31单元去高4位


2楼最后一条错了,改为ORL A,31H

磊磊映画 发表于 2013-4-14 12:26:37

拆字拼字嘿嘿

babysnail 发表于 2013-4-14 14:24:31

本帖最后由 babysnail 于 2013-4-14 14:30 编辑

tonyone 发表于 2013-4-14 10:53 static/image/common/back.gif
2楼最后一条错了,改为ORL A,31H

是打错了!
要说最简短吗! 下面这个应该是最好的了!

MOVR0, #30H
MOVA, 31h
XCHDA, @R0

=============
MOVA, 31h
XCHDA, 30h

czzhouyun 发表于 2013-4-14 14:40:21

4L对了,LS错了XCHD只交换低4位

babysnail 发表于 2013-4-14 14:47:44

czzhouyun 发表于 2013-4-14 14:40 static/image/common/back.gif
4L对了,LS错了XCHD只交换低4位

错了吗!哈, 我正在研究stm8s 奇偶 C怎么估优化。喝点水先...

信天游 发表于 2013-4-14 16:28:19

czzhouyun 发表于 2013-4-14 14:40
4L对了,LS错了XCHD只交换低4位

30H和31H的低四位交换后,30H不就是结结果吗?

信天游 发表于 2013-4-14 16:31:18

本帖最后由 信天游 于 2013-4-14 16:32 编辑

babysnail 发表于 2013-4-14 14:24
是打错了!
要说最简短吗! 下面这个应该是最好的了!



后两条语句去掉不要,因为30H里就是最后结果

czzhouyun 发表于 2013-4-14 19:21:46

信天游 发表于 2013-4-14 16:28 static/image/common/back.gif
30H和31H的低四位交换后,30H不就是结结果吗?

确实,没反应过来
页: [1]
查看完整版本: 汇编语言请教:怎样把两个寄存器的高位和低位组合成新....