首頁  >  文章  >  組合語言有哪些組成

組合語言有哪些組成

WBOY
WBOY原創
2022-08-15 15:44:397858瀏覽

組合語言的組成:1、傳送指令,包括通用資料傳送指令、條件傳送指令等;2、邏輯運算,此部分指令用於執行算術和邏輯運算;3、移位指令,用於將暫存器或記憶體運算元移動指定的次數;4、位元操作,包括測試指令BT、位元測試並置位指令BTS等;5、控制轉移,包括無條件轉移指令JMP、條件轉移指令“JCC/JCXZ”等等;6、串操作,用於對資料串進行操作;7、輸入輸出,用於同周邊設備交換資料。

組合語言有哪些組成

本教學操作環境:windows10系統、DELL G3電腦。

組合語言有哪些組成

由於彙編指令系統龐大,因而需建構指令系統體系,其指令數量龐大,格式複雜,可記憶性差等。指令中最難的是指令所支持的尋址方式,其實質就是指令中操作數如何取得。對處理器而言,就是如何找到他所需的資料。但對於電腦底層的組合語言而言,這種尋址方式將涉及大量的運算儲存格式,與 複雜的儲存管理方式緊密相關,因而難以理解。最後,彙編指令也關係到如何影響標誌位,但處理器標誌位非常複雜,因而對其機制掌握比較困難。

  • 傳送指令

#包括通用資料傳送指令MOV、條件傳送指令CMOVcc、堆疊操作指令PUSH/PUSHA/PUSHAD/POP/POPA/POPAD、交換指令XCHG/XLAT/BSWAP、位址或段描述子選擇子傳送指令LEA/LDS/LES/LFS/LGS/LSS等。

  • 邏輯運算

#這部分指令用來執行算術和邏輯運算,包括加法指令ADD/ADC、減法指令SUB/SBB、加一指令INC、減一指令DEC、比較操作指令CMP、乘法指令MUL/IMUL、除法指令DIV/IDIV、符號擴展指令CBW/CWDE/CDQE、十進制調整指令DAA/DAS/AAA/AAS、邏輯運算指令NOT/AND/OR/XOR/TEST等。

  • 移位指令

#這部分指令用於將暫存器或記憶體運算元移動指定的次數。包括邏輯左移指令SHL、邏輯右移指令SHR、算術左移指令SAL、算術右移指令SAR、循環左移指令ROL、循環右移指令ROR等。

  • 位元操作

#這部分指令包含位元測試指令BT、位元測試並置位指令BTS、位元測試並重設指令BTR、位元測試並取反指令BTC、位元向前掃描指令BSF、位元向後掃描指令BSR等。

  • 控制轉移

#這部分包含無條件轉移指令JMP、條件轉移指令JCC /JCXZ、循環指令LOOP/LOOPE/LOOPNE、過程呼叫指令CALL、子過程回傳指令RET、中斷指令INTn、INT3、INTO、IRET等。

  • 字串運算

#這部分指令用來對資料串進行操作,包括串傳指令MOVS、串連比較指令CMPS、串列掃描指令SCANS、串加載指令LODS、串存指令STOS,這些指令可以選擇性地使用REP/REPE/REPZ/REPNE和REPNZ的前綴以連續操作。

  • 輸入輸出

#這部分指令用於同外圍設備交換數據,包括埠輸入指令IN/INS、埠輸出指令OUT/OUTS。

彙編語言的特點

彙編語言是電腦提供給使用者的最快最有效的語言,也是能夠利用電腦的所有硬體特性並且能夠直接控制硬件的唯一語言。但是由於編寫和調試彙編語言程式要比高級語言複雜,因此目前其應用不如高階語言廣泛。

組合語言比機器語言的可讀性好,但跟高階語言比較而言,可讀性還是較差。不過採用它所寫的程式具有儲存空間佔用量少、執行速度快的特點,這些是高階語言所無法取代的。在實際應用中,是否使用彙編語言,取決於特定應用要求、開發時間和品質等方面進行權衡。

優點

組合語言作為機器語言之上的第二代程式語言,它也有很多優點:

可以輕鬆的讀取記憶體狀態以及硬體I/O介面情況

寫的程式碼因為少了很多編譯的環節,可以能夠準確的被執行

作為低階語言,可擴展性很高 

缺點

因為程式碼非常單調,特殊指令字元很少,所以造成了程式碼的冗長以及編寫的困難

因為彙編仍然需要自己去調用記憶體儲存數據,很容易出現BUG,而且調試起來也不容易

就算完成了一個程序,後期維護時候也需要耗費大量的時間。

因為機器的特殊性造成了程式碼相容性差的缺陷。

更多相關知識,請造訪常見問題欄位!

以上是組合語言有哪些組成的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn