我懂51單片機的C語言編程,不太懂匯編。我粗略的看了壹下,發現匯編的位移運算比C語言的要復雜的多,C語言只有兩個運算符:> & gt(向右移動)和< & lt(向左移動)
例如:
0x 1 & lt;& lt2得到0x4。
0xf & gt& gt3得到0x2。
(在C語言中,0x的開頭表示十六進制)
可以看出,左操作數是被操作對象,右操作數是位移的位數。
壹般來說,在C51中,我們都是對無符號char類型進行比特運算,所以移位的比特都是零(對於有符號整數>;& gt,最高位也就是符號位會保持不變),所以C語言在這方面能做到的比匯編少。
當然可以像樓上說的那樣結合編程,也可以直接在C語言函數中插入匯編語句,Keil C編譯器已經支持了。我不知道什麽是聯合編程,但是在C語言中插入匯編語句應該是這樣的:
1.聲明:# pragmasrc
2.在assembly語句的開頭和結尾添加#pragma asm和#pragma endasm,以標識開始和結束位置。
歡迎嗨,如果妳想進壹步討論。