论坛风格切换切换到宽版
  • 3548阅读
  • 9回复

单片机考题 [复制链接]

上一主题 下一主题
离线bd5it
 
发帖
2355
只看楼主 倒序阅读 0楼 发表于: 2004-04-12
如何用51最短汇编语句实现

d7-d0;d6-d1;d5-d2;d4-d3位 数据对调 :confused:
离线ljchip
发帖
459
只看该作者 1楼 发表于: 2004-04-12
来了.
objbyte equ 20h

; 要对调的数据在acc中,调用swapacc:子程序后,对调后的数据在objbyte中.

swapacc:
mov objbyte, #0
jnb acc.0, bit1
setb objbyte.7
bit1:
jnb acc.1, bit2
setb objbyte.6
bit2:
jnb acc.2, bit3
setb objbyte.5
bit3:
jnb acc.3, bit7
setb objbyte.4
bit7:
jnb acc.7, bit6
setb objbyte.0
bit6:
jnb acc.6, bit5
setb objbyte.1
bit5:
jnb acc.5, bit4
setb objbyte.2
bit4:
jnb acc.4, swapaccret
setb objbyte.3
swapaccret:
ret
离线liu4ic
发帖
1350
只看该作者 2楼 发表于: 2004-04-12
'
如何用51最短汇编语句实现
d7-d0;d6-d1;d5-d2;d4-d3位 数据对调 :confused:
'
那都是1或0不用调,用nop一个,应最短了吧 :d
离线liu4ic
发帖
1350
只看该作者 3楼 发表于: 2004-04-12
'
objbyte equ 20h
; 要对调的数据在acc中,调用swapacc:子程序后,对调后的数据在objbyte中.
swapacc:
mov objbyte, #0
jnb acc.0, bit1
setb objbyte.7
bit1:
jnb acc.1, bit2
setb objbyte.6
bit2:
jnb acc.2, bit3
setb objbyte.5
bit3:
jnb acc.3, bit7
setb objbyte.4
bit7:
jnb acc.7, bit6
setb objbyte.0
bit6:
jnb acc.6, bit5
setb objbyte.1
bit5:
jnb acc.5, bit4
setb objbyte.2
bit4:
jnb acc.4, swapaccret
setb objbyte.3
swapaccret:
ret
'

看上去好复杂呀,头晕 :d
离线BD7RC
发帖
3283
只看该作者 4楼 发表于: 2004-04-12
把线焊反过来不久完了?要不,把芯片反过来焊也是蛮容易解决的吧?哈哈~
离线BG7KH
发帖
4815
只看该作者 5楼 发表于: 2004-04-12
采用两个暂时寄存器,用移位指令相互移。
离线bd5it
发帖
2355
只看该作者 6楼 发表于: 2004-04-13
'
把线焊反过来不久完了?要不,把芯片反过来焊也是蛮容易解决的吧?哈哈~
'

呵呵,是个好主意。但麻烦的是,我遇到的这块线路板本身就是反的,cpu插座画反了,p1口也画反了。当然出来的成品也就要反着做 :d
离线bg7jdy
发帖
1744
只看该作者 7楼 发表于: 2004-04-14
右移移出
左移移入
循环8次
离线bss
发帖
130
只看该作者 8楼 发表于: 2004-04-15
'
把线焊反过来不久完了?要不,把芯片反过来焊也是蛮容易解决的吧?哈哈~
'


有些实际应用无法反过来,就象我设计的51简易编程板,为了在40脚活动座上
兼容40脚的at89c51和20脚的at89c2051,刚好数据线的方向是相反的,也要
用到这种子程序,用的是楼上的“右移移出,左移移入,循环8次”。
离线bd5it
发帖
2355
只看该作者 9楼 发表于: 2004-04-15
明白了,多谢各位提示

d7-d0;d6-d1;d5-d2;d4-d3位 数据对调子程序 操作数在20h中,结果在21h为中