導航:首頁 > 編程知識 > 匯編程序注意什麼

匯編程序注意什麼

發布時間:2023-05-30 08:52:06

① 匯編語言程序的缺點

匯編語言程序是面向機器的,處於整個計算機語言層次結構的底層,故專被視為一種低屬級語言,通常是為特定的計算機或系列計算機專門設計的。不同的處理器有不同的匯編語言語法和編譯器,編譯的程序無法在不同的處理器上執行,缺乏可移植性;
難於從匯編語言代碼上理解程序設計意圖,可維護性差,即使是完成簡單的工作也需要大量的匯編語言代碼,很容易產生bug,難於調試;
使用匯編語言必須對某種處理器非常了解,而且只能針對特定的體系結構和處理器進行優化,開發效率很低,周期長且單調。

② 匯編程序執行問題

匯編程序都是順序執行,如果稿兄你想跳轉到一個其他位置,必須執行跳轉指令,否則就是按順序執行。匯編沒有返回指令,返回指令都是偽指令,編譯後都是跳轉指令。。。如果你想讓一個程序不按順序執行,在匯編里必須用到跳轉指令。。。。 C語言每個函數執行完後返回都是調用了跳轉指令。。。
在匯編里,CPU的操作時詳滲敬遲細到每一步,比如形參傳遞,必須將形參靠指令放入參數表,然後調用跳轉指令,完成函數調用,運算中自動變數出棧入棧都必須你親自考指令完成,而且必須要保存函數調用的返回地址,執行完後將函回值放到返回值位置,然後跳到這個地址,完成一次函數調用。。。。
當然上述過程是C語言叢李的規則,如果是匯編程序你隨意,沒必要按照C語言的方式。。。

③ TEC-2機匯編語言的程序設計方法以及注意問題

1,學一點關於DEBUG命令,http://cnbie.net/print_146048m134587.html
2,一定要學好計算機組成原理;
3,要樹立一個觀念:電腦是死的,它的運行都是梁清以非常簡單而且有限的東西(比如從人的方面看是微指令,微操作;而從計算機方面培和看,就是正負脈沖,高低電平)等為基礎的,那麼我們所做的,無非就是制定一些規則,想出一些方法,把這些東西一層一層的有機的組合,從而使計算機能夠做我們希望的事情。
4,順便問一下,閣下是不是武配渣盯大的計算機學院的學生啊

④ 如何編寫完整的匯編程序

看很多資料的話就應該懂得寫啊,先看那個王爽的書咯,到第四章差不多就會寫了。努力啊

⑤ 匯編語言與c語言混合編程需要注意什麼

認真閱讀一下使用的編譯器手冊

⑥ 匯編程序的運行方法

先寫代碼,你已經寫好了是吧,比如你保存的文件是helloworld.asm

然後匯編,我以masm宏匯編舉例,masm helloworld.asm

接著連接,link helloworld.obj

最後運行,helloworld

匯編和連接的過程中會有提示,像代碼錯誤啦,保存成什麼文件名啦之類的

⑦ 匯編程序如何調試

在DOS的提抄示符下,可鍵入命令:
C>DEBUG [X:]PATH][FILENAME[.EXE]]
其中:
[X:] 指定驅動器,任選項,例如,C:
[PATH] 為路徑,任選項,例如,\MASM
[FILENAME] 為被調試文件的名字,例如,SY
如用戶鍵入文件名,則DOS將指定的文件裝入存儲器中,用戶即可對其進行調試。如果未鍵入文件名,則用戶可以用當前存儲器的內容工作,或者用DEBUG命令N和L把需要的文件裝入存儲器後再進行調試。
在DEBUG程序調入後,將出現提示符『-』就可用DEBUG命令來調試程序。
注意:DEBUG顯示的數均以16進制數表示。

⑧ 51單片機匯編程序的幾個問題。。。。。

六個問題就是120分了,呵呵,開個玩笑
你知道在51中數據傳送指令有幾條?告訴你,是29條,裡面沒有mov
Rn,Rn這樣的指令,為什麼呢?因為單片機不允許同時有兩個訪存工作寄存器組的操作,p1呢,它不是工作寄存器,明白嗎?
你知道在51中工作寄存器組有幾組?上電復位後單片機用的是哪一組?為什麼只能有一組是可用的呢,其它幾組干什麼去了?工作寄存器組的存儲單元呢?單片機是怎麼識別當前用的是哪一組?為什麼要有好幾組工作寄存器呢?
告訴你,是4組,分別是0,、1、2、3;上電復位後單片機用的是第0組;因為匯編指令里只有一個R0、R1、R2、R3、R4、R5、R6、R7,你要是往R0中存數據,只能是一個單元,所以是一組,其它幾組呢,讓它們閑著,等需要用的時候切過去;4組工作寄存器,每組8個單元,共32個單元,從片內RAM00H開始到1FH,自己算算,32個單元;在SFR(特殊功能寄存器)中有個PSW(程序狀態字)的寄存器,它裡面有兩個位叫RS0、RS1,00、01、10、11組合,明白?上電復位後PSW要被清零的,就是00組合,他就是第0組工作寄存器的識別信號,明白?為什麼要有好幾組工作寄存器呢?那是為了程序調用的,發生子程序調用,保護主程序的工作狀態,你要給子程序重新設一組工作寄存器,當然,你要是用不到工作寄存器,不切換也行,怎麼切換呢?這你不會不知道了吧,給psw寄存器送個值把RS0、RS1的二進制數改了不就行了?
夠明白的了吧?再要是不知道就看書去,太丟人了

⑨ 一個avr單片機的匯編程序,注意幾個宏指

//晶振1MHz
//LED接PB0
//使用定時器1,1024分頻,0.5秒中斷一次,LED閃爍一次
程序如下:
.include"m8def.inc"
.equled=0
.equflash=$60
.org$0000//中斷向量表
rest:
rjmpSTART
INT0addre:;
reti
INT1addre:;
reti
OC2addre:;
reti
OVF2addre:;
reti
ICP1addre:;
reti
OC1Aaddre:;
reti
OC1Baddre:;Output運信
reti
OVF1addre:;
rjmpTimer1_ovf
OVF0addre:;
reti
SPIaddre:;SPIInterruptVectorAddress
reti
URXCaddre:;
reti
UDREaddre:;USARTData段純
reti
UTXCaddre:;
reti
ADCCaddre:;ADCInterruptVectorAddress
reti
ERDYaddre:;EEPROMInterruptVectorAddress
reti
ACIaddre:;
reti
TWIaddre:;Irq.vectoraddressforTwo-WireInterface
reti
SPMaddre:;
reti
SPMRaddre:;
reti
.org$20
START:
ldir16,low(ramend)//設置堆棧指針
outspl,r16
ldir16,high(ramend)
outsph,r16
clrr16
stsflash,r16
sbiddrb,led//PB0接led
rcallTimer1_ovf_init//調用初始化函數
MAIN:
ldsr16,flash
sbrsr16,0;iftheflagisset,jumponelow
rjmpmain
ldir16,0x01//LED取反
inr17,pinb
eorr17,r16
outportb,r17
clrr16
stsflash,r16
rjmp旁燃輪main
Timer1_ovf_init:
ldir16,0xfe
outtcnt1h,r16
ldir16,0x17
outtcnt1l,r16
inr16,timsk
sbrr16,1<<2//開溢出中斷
outtimsk,r16
ldir16,0x05
outtccr1b,r16//開定時器
sei//開中斷
ret
Timer1_ovf://定時器2定時0.5S
inr16,sreg
pushr16//保存SREG入棧
ldir16,0xfe
outtcnt1h,r16
ldir16,0x17
outtcnt1l,r16
clrr16
sbrr16,1<<0//設置標志
stsflash,r16
popr16
outsreg,r16
reti//中斷返回

閱讀全文

與匯編程序注意什麼相關的資料

熱點內容
java第一份工作影響 瀏覽:595
指示的文件系統找不到資料庫目錄 瀏覽:504
java3des和net對接 瀏覽:668
怎麼在家上網編程 瀏覽:909
訂閱已關為什麼還顯示app 瀏覽:169
大華詳細教程 瀏覽:901
學信網是一種什麼網站 瀏覽:378
wow插件文件夾 瀏覽:302
c源程序文件的預設擴展名為 瀏覽:952
java類類型 瀏覽:971
拼多多關鍵詞數據怎麼下載 瀏覽:867
哪個app可以買火影忍者號 瀏覽:524
2012r2添加資料庫引擎 瀏覽:549
貸款app如何注銷 瀏覽:966
懶人版本lol 瀏覽:195
ipad怎麼新建文件夾 瀏覽:697
wps文字密碼暴力破解軟體 瀏覽:68
51單片機ds1302程序 瀏覽:973
學編程方面需要哪些優勢 瀏覽:675
電腦太大的文件怎麼上傳微信 瀏覽:514

友情鏈接