-
組合語言版的氣泡排序! (也很期待,除了冒泡法,知道中位數法)proteus除錯通過!
試程式設計將0240h為head的位址的16個連續單元中的無符號數字按降序排列,並將它們儲存在以300h為head的位址的儲存區。
org 00h
ajmp _init_sys
init_sys:
mov sp,#80h
main:mov r0,#10h
mov r1,#10h
mov dptr,#240h
loop_x:
mov a,r0
movx @dptr,a
inc dptr
inc r0
djnz r1, _loop_x
lcall _read ; read data form external ram to internal ram
lcall _arrange
lcall _write
ajmp $
read: ;
arrange: ;
write: ;end
-
選擇排序,合併排序,快速排序,Hill排序,以及什麼框排序,很多,你知道你是否學習過資料結構。 建議您自學資料結構。
-
在 Keil 專案欄中單擊滑鼠右鍵。 c 檔案 選擇“檔案”選項並勾選這 2 個框。
可以在 C 語言中嵌入程式集。
格式是這樣的,或者。
-
中西特產的結合,一定要治好胃。
-
org 0000h
--首先準備 6 個數字 MOV 40H、8Ah
mov 41h, #3bh
mov 42h, #0b9h
mov 43h, #47h
mov 44h, #29h
mov 45h, #0afh
call sort6 ;呼叫排序子程式 sjmp$ 停止,此時可以觀察排序結果。
sort6: ;排序子程式 MOV R6, 5 ; 6 個數字,比較 5 倍 S1:MOV R0,40H ; 起始位址為 MOV B, R6
mov r7, b
clr ;交換標誌零 s2: mov b, @r0 ; 取出前乙個數字 inc r0
mov a, @r0 ;取出最後乙個數字 cjne a, b, s3 ; 後前 S3: jnc n jh ; 如果減去足夠多,則無需交換mov @r0, b ; 兌換存款 dec r0
mov @r0, a
inc r0
setb ;設定交換標誌 n jh:
djnz r7, s2
jnb , s_end ;在不交換的情況下,結束 djnz r6、s1
s_end:
ret;--end
-
實際上,組合語言的各個語言段已經在 C 語言的文件庫中定義過了,但必須先呼叫相應的庫。
比如樓上,為了定時,或者組合語言是否準確,這要按需而定,有時候C語言要加上彙編,不僅方便,而且更容易修改,但是在遇到一些浮點處理時,就不得不用C語言了。
-
C語言的執行效率遠高於彙編,為什麼要加彙編,C語言不直接加入彙編,在巨集開頭可以定義一些彙編指令,比如define nop() nop();
-
氣泡分揀機如下:
org 0000h
lcall sort ;跳轉到分揀機。
sort: ;資料冒泡分揀機。
mov r6, #16 ;參與排序的資料總數。
dec r6 ;比較次數比資料總數少 1 個
l1:mov r0, #40h ;將資料的起始位址支付給 r0 40 小時
mov a, r6 ;調整比較次數。
mov r7, a
clr f0 ;清晰的交換標誌。
l2: ;比較。
mov a, @r0 ;取前乙個數字。
inc r0
mov b, @r0 ;以最後乙個數字為例。
cjne a, b, l3 ;前面的數字與後面的數字進行比較,之前和之後。
l3: ;判斷和處理。
jc n_jh ;後面的數字大於前面的數字,並且不會交換。
xch a,b ;否則,將交換和儲存正面和背面號碼。
mov @r0,a
dec r0
mov @r0,b
inc r0
setb f0 ;設定交換標誌。
n_jh:djnz r7, l2 ;如果您沒有完成比較,請繼續。
jnb f0, l_end ;如果沒有交換,它就會結束。
djnz r6, l1
l_end:
sjmp $ 排序完成。
結果:最小的數字在 40 小時內儲存;
最大的數字儲存在 4fh 中。
-
A指累加器A,B暫存器設定為乘法和除法運算,也可以作為普通暫存器使用。
C和A不同,B,C指的是進位,是位,是位,而A、B是八位,呵呵,如果有暫存器,有很多位標誌,希望多去**或者多看書,去了解。 就我個人而言,我建議檢視 C 語言,它更簡單。 如果不是考試課程,就不要學習彙編,那是浪費時間!
-
A和B都是累加器,A是最常用的累加器,B一般只用於乘法和除法,C是進位或借用標誌,即載體
-
MCU-51組合語言:
1.A是累加器,是最常用的專用暫存器。 絕大多數算術和邏輯運算必須在累加器的參與下完成; 使用累加器傳輸資料也是最有效的。
2.B是乙個通用暫存器,也是唯一可以參與乘法和除法運算的暫存器。
3.C是進位位,屬於位儲存器,也是布林處理器中位運算最常用的位暫存器,受一些算術和邏輯運算指令的影響來表徵結果的狀態。
-
沒有d.,只要找這本書就看吧。蓄能器a、b、c是位。
-
隨便借一本51的書,看看51的結構,你自然就知道了。
-
注釋';'和。
此逗號以中文模式輸入,應更改為英文模式。
-
我的程式是由keil編譯的,如下所示。
首先宣告 extrn 程式碼(傳送 crc); 傳送 CRC 是 C 語言中的乙個函式,並新增到程式集中
呼叫時。
lcall _send_crc
如果你想專攻。 使用 c 中的變數,程式碼就變成了。
屬於對應的資料,xdata等。
-
我的程式bai order keil編譯器,extrn程式碼(du傳送crc)第乙個國家zhisend crc c函式編譯加呼叫dao lcall send crc
如果要生成相應的資料,請使用 c,xdata** 中的 lerer 變數。
-
我的程式來到keil編譯器,第乙個自發傳送crc c函式編譯extrn程式碼(send crc)加上bai call lcall send crc
如果要生成相應的 DU 資料,請使用 c,xdata** 中的變數 DAO。
-
逆向思考是在 C 語言中插入乙個程式集。
-
檢查 C 的編譯。
和彙編編譯器,如上所述。
一般在彙編中,extern 是用來宣告外部部門的外部函式的,在 C 語言中,屬的函式名在彙編的函式名上加下劃線,有些編譯器是這樣的,不是所有的編譯器都是這樣的。 您仍然需要檢查編譯器的指令,以了解您使用的編譯器是如何工作的。
如果是keil,應該是上面的操作。
-
請留下您的電子郵件位址,我會給你乙份檔案,你會知道怎麼做。
1.編譯器。
一種程式,用於將用組合語言編寫的程式轉換為其等效的機器語言程式。 匯程式設計序輸入用組合語言編寫的源程式,並以機器語言輸出目標程式。 組合語言是專為特定計算機或計算機系列設計的面向機器的語言,由彙編執行指令和彙編偽指令組成。 >>>More