查看: 1332|回复: 3
|
一些 Asm Code 疑问
[复制链接]
|
|
我现在修读着microprocessor,有一些code不会写,希望各位大大给点hint
其中一题考题:
write a macro
;Macro ReverseNibbles
;pre : Temp = B7B6B5B4 B3B2B1B0
;post: Temp = B0B1B2B3 B4B5B6B7
write a subroutine
;Subroutine GetAverage
;get value from array in RAM (top address already store in X(16-bits register))
;post : Average(R16) = average of all the value in array
*我现在学的microcontroller是 AT Mega16,没有Divide function
有人能给点提示吗?
谢谢
 |
|
|
|
|
|
|
|
发表于 11-11-2007 06:43 PM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 12-11-2007 08:29 PM
|
显示全部楼层
关于part1, 我的方法是。。。。 
.Macro ReverseNibbles
sbrc @0,0
sbr @1,7
sbrc @0,1
sbr @1,6
sbrc @0,2
sbr @1,5
sbrc @0,3
sbr @1,4
sbrc @0,4
sbr @1,3
sbrc @0,5
sbr @1,2
sbrc @0,6
sbr @1,1
sbrc @0,7
sbr @1,0
mov @0,@1
.EndMacro
*sbrc = skip if bit in register is clear
*sbr = set bit in register
*@0/1 = parameter for macro
我还没见过那么长的macro..... 
如果是做工肯定给老板骂死...
part 2
Armega 16 的确没有divide function,这是lecturer特地刁难我们。。。
他给的hint是 substract  |
|
|
|
|
|
|
|
发表于 12-11-2007 09:09 PM
|
显示全部楼层
原帖由 sushi-x 于 12-11-2007 08:29 PM 发表 
part 2
Armega 16 的确没有divide function,这是lecturer特地刁难我们。。。
他给的hint是 substract
对啊, 以前的MCU也是没有除法和乘法的, 要除法, 就是减法,要乘法, 就是加法。
我上面放的那个routine, 那个就是答案。。。
欢迎你继续讨论。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|