欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 一個匯編程序,哪位大俠看的懂的幫忙看看唄 [打印本頁]

作者: gy2264458415    時間: 2017-2-26 17:24
標題: 一個匯編程序,哪位大俠看的懂的幫忙看看唄
一個匯編程序,哪位大俠看的懂的幫忙看看唄

IMG_20170226_172117.jpg (478.92 KB, 下載次數: 127)

IMG_20170226_172117.jpg

作者: lxa0    時間: 2017-2-26 22:37
看了
玩匯編代碼
一要有注釋
二要和硬件聯系在一起才行
這兩點都沒有
難啊
作者: xieyajun888    時間: 2017-2-27 01:44
匯編以前剛開始就學的匯編,后來學了c語言,基本通用了,趕緊去學習C語言吧
作者: 青蘋果    時間: 2017-2-27 08:47
看懂這個有什么用?
初始化了一下SP,Timer,清了幾個RAM,,,,

便有有錯誤,還是先把錯誤改了吧
作者: yzwzfyz    時間: 2017-2-27 12:58
贊同二樓。
本人從不用C寫單片機程序,只用寫。
作者: qq704661078    時間: 2017-2-27 13:47
定時器0和定時器1初始化程序,第1句設置堆棧首地址,第2句設置T0和T1的模式,第3、4句設置T0初值,第5、6句設置T1初值,接下來吧一堆標志位清零;鑒定完畢!
作者: utzuzu    時間: 2017-2-27 15:37
補充樓上意見,編譯錯誤信息表示 F_0 到 F_9  沒有定義。 就像c語言變量沒有聲明一樣。應該在程序的開頭定義好,比如 #define F_0  00h   (00h指向內存位尋址的第一個位)
作者: zl2168    時間: 2017-2-27 16:19
本帖最后由 zl2168 于 2017-2-27 16:22 編輯
yzwzfyz 發表于 2017-2-27 12:58
贊同二樓。
本人從不用C寫單片機程序,只用寫。

C程序與匯編程序雖各有千秋,但C程序優點更多。


C51編程的特點


C51編程與80C51匯編語言相比,主要具有以下特點:


編程相對方便。


用匯編語言編程,幾乎每一條指令操作都與具體的存儲單元有關,80C51單片機的片內存儲空間容量有限,編程之初即需安排好片內存儲單元的用途,且一般不宜重復使用。當一些應用項目程序量較大時,片內存儲單元有可能捉襟見肘,稍有不慎就將出錯,編程相對復雜。而C51編譯系統能自動完成對變量存儲單元的分配和使用,且對函數內局部變量占用的存儲單元,僅在調用時臨時分配,使用完畢即行釋放,大大提高了80C51片內有限存儲空間的使用效率。因此,使用者只需專注于軟件編程,不需過多關注涉及的具體存儲單元及其操作指令,編程相對方便。


便于實現各種復雜的運算和程序。


C語言具有豐富且功能強大的運算符,能以簡單的語句方便地實現各種復雜的運算和程序。相比之下,匯編語言要實現較復雜的運算和程序,就比較困難。例如,雙字節的乘除法,匯編語言要用許多條指令操作才能完成;而C51只需一條語句便能方便實現。又例如,循環、查表和散轉等程序,C51語句實現起來也相對簡單方便(當然C51語句編譯轉換為匯編語言指令后仍然復雜,只是不用程序員操心,由編譯器自動完成罷了)。


可方便地調用各已有程序模塊。


已有程序模塊包括C51編譯器中豐富的庫函數、用戶自編的常用接口芯片功能函數和以前已開發項目中的功能函數。讀者可能會說,匯編程序不也一樣可以調用嗎?不一樣。匯編程序調用時,涉及到模塊中具體的存儲單元,這些存儲單元很可能與主調用程序有重復,會引起沖突而出錯。而C51程序函數中的變量一般為局部變量,主函數調用前不占用存儲單元,僅在調用時由C51編譯器根據存儲區域空余情況臨時分配,使用完畢即行釋放,一般不會發生沖突而出錯。因此,C51程序可方便地調用各已有程序模塊,減少重復勞動,利于團隊合作開發,大大提高編程效率。


可讀性較好。


C語言屬于高級語言。一條C51語句,會編譯為多條甚至許多條匯編指令(例如數學運算和循環程序等),相對來說,C51程序簡潔而清晰,可讀性較好。


實時性較差。


匯編語言指令每一條對應13字節機器碼,每一步的執行動作都很清楚,程序大小和堆棧調用情況都容易控制,響應及時,實時性較好。而C51程序并不能被單片機直接執行,需編譯轉換為匯編語言指令。一條C51語句編譯后,會轉換成很多機器碼,占用單片機片內較多資源,可能出現ROMRAM空間不夠,堆棧溢出等問題;且執行步驟不很明確,有時還會兜圈子,因而實時性較差(參閱9-3),甚至會因時序配合不好而出錯。然而,隨著單片機芯片技術的發展,其運行速度和內存容量有了較大提高,這些都為C51的應用創造了有利條件。
以上摘自張志良編著《80C51單片機實用教程——基于Keil C和Proteus》高等教育出版社ISBN 978-7-04-044532-9



作者: yzwzfyz    時間: 2017-2-28 11:20
C:經編譯后,成匯編,因此用匯編的人,是自己代替代了C。
有許多節省內存的技巧及方式,C是做不到了,因為C是從通用化出發的。因此沒有,C更能能節省內存的這一說。
作者: yzwzfyz    時間: 2017-2-28 11:21
比如:C是用堆棧傳遞參數的,需要的堆棧就大,占用的寄存器就多,51的寄存器本來就少,這會造成寄存器緊張,匯編傳遞參數很直接,大多可以不用堆棧,省出寄存器作他用。
在運作時間上,匯編有極大的優勢。
比如以下一個項目,用C很難完成,而用匯編就已很好的完成了(前提是只用51單片機):
16*64的LED點陣顯示+14個LED數據管顯示+中文漢字顯示處理+無線收發+生產記錄(計劃、產能、次品、待產)+年月日精確時間(普通晶振,日差小于一秒)。
單就解決顯示的掃描閃動(驅動顯示1136個LED段,必須分8次掃描,1136個點時刻會變,要占多少處理時間及內存),與程序運行的速度矛盾(漢字解碼+無線通訊+時鐘+掃鍵……)。

作者: yzwzfyz    時間: 2017-2-28 11:22
以上所例,僅說明匯編比C的優勢,并不排拆C的好處:
1、用匯編需用很強的優化寄存器及內存的能力,用C的好處是,不需要你去考慮這些復雜的問題,使得編程簡單。
2、 C出錯的機率遠小于匯編,匯編稍有不小心就會出錯,要命的是:不易察覺。
3、 C有團體合作的優勢, 這是 C的特點,便于交流。如果是匯編,很難與他人交流。
4、 對于運算程序, C已有前輩們做好了運算庫,很難想像一般人能用匯編去:開方、三角函數(當然,也可以讓C先編譯,再做成匯編的庫)。
5、 C 有龐大的公用程序庫(子程序),這對于程序量大的程序更有優勢。匯編的程序庫多為個人積累,很難得到。
作者: yzwzfyz    時間: 2017-2-28 11:22
其實C只有一個優點:
先插入說一下單片機程序通常結構:1硬件初始化、2軟件參數初始化(含內存安排)、3主程序(事件處理)、4中斷程序。
如果用匯編以上一切由你處理,除非你已獲得了很多相關的匯編數據庫。
如果用C:
在你未寫程序之前C已為你做了什么?
1、硬件初始化,C僅能做很少的部分。(注:這就是為什么在做硬件時你總是要一行行慢慢寫的原因,與匯編比幾乎沒有優勢)
2、軟件參數初始化(含內存安排),C完成其中的大部分。(注:比匯編操心少啊)
3、主程序(事件處理),C有大量的庫函數可以調用,可以減少你大部分工作量。(注:比匯編操心少啊)
4、中斷程序。C有大量的庫函數可以調用。(注:本人不建議在中斷中完成事件處理,而建議盡最大可能只在中斷中做一些事件標志!而讓事件在主程序中依標志進行處理,因為中斷有優先權,處理事件往往需要的時間多,會耽誤其它事件的處理,如這時按鍵就會偽“失靈”)

可見 C的這個優點是,C能幫你完成程序中的很大一部分工作。(其實是你調用了前輩們已做好的工作,這此工作是通過:編譯器、程序庫來實現的)

道理很簡單:一件事能用設備完成的盡量用設備,設備無法完成的用人工。C就是寫單片機程序的一個極好的“設備”。

作者: yzwzfyz    時間: 2017-2-28 11:23
用C的風險在哪里?
一個程序什么都OK了,就缺一些庫文件!找又找不到。
如果你會匯編,就可以自己完成找不到的這個庫。

總之C適合大多數的人,匯編僅適用很少的一部分人,但用匯編寫程序的人,一定是高手,否則他駕馭不了單片機。
做匯編需要徹底地了解單片機,做C無需要了解到很底層。而要精通單片機,匯編又是最佳手段。
作者: yzwzfyz    時間: 2017-2-28 11:24
個人建議:所有學單片機的同學學C,C是在大勢所趨,也適合絕大多數人。特別是團體作戰,未來不是單打獨斗的年代!
也建議那些想精通單片機的同學,學好匯編,匯編天馬行空,不受庫存文件、頭文件限制,不受C的規矩,但也必須會C。

一但學好了匯編,你再打開你的C編譯后的匯編看看,這時就知道缺點在那里,就能提高自己C語言的水平。也能輕松掌握C當中繞人的難點。
作者: utzuzu    時間: 2017-3-1 17:05
爭論C和匯編的人,必定是只擅長C或只擅長匯編的人。
作者: zl2168    時間: 2017-3-1 19:52
本帖最后由 zl2168 于 2017-3-1 20:46 編輯
utzuzu 發表于 2017-3-1 17:05
爭論C和匯編的人,必定是只擅長C或只擅長匯編的人。

錯!只有同時熟練應用C及匯編的人,才能客觀地比較C與匯編的優缺點。
作者: zl2168    時間: 2017-3-1 19:55
本帖最后由 zl2168 于 2017-3-1 20:47 編輯

不熟練應用C及匯編的人,只會講好與不好,講不出好與不好的原因,更講不到好與不好的點子上。
作者: 13572173645    時間: 2017-3-1 20:31
清標志位
作者: 黃昭旨    時間: 2017-3-2 16:53
哈囉~你好
你第7行到16行這些 =>   F_0  F_1  F_2  F_3  F_4  F_5  F_6  F_7  F_8  F_9
,這10個東西你沒有在程序的開頭定義它,你使用CLR要清除東西後面只能接C(進為旗標)或bit(位元)或是A(累加器),因為你沒有在程序開頭宣告定義那10個東西,所以下面才會跑出那10行說無效的
作者: lxa0    時間: 2017-8-13 01:38
不會C
只用匯編




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1