1. 程式人生 > >07 編程語言介紹(二)機器語言&匯編語言

07 編程語言介紹(二)機器語言&匯編語言

存儲 字符串 asm 語言編程 編程 暫存 出錯 二進制 專業知識

機器語言:
由於計算機內部職能接受二進制代碼,因此,用二進制代碼0和1描述的指令稱為機器指令,全部機器指令的集合構成計算機的機器語言。
機器語言屬於低級語言。
編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯。除了計算機生產廠家的專業人員外,絕大多數的程序員已經不再去學習機器語言了。

機器語言是微處理器理解和使用的,盡管機器語言好像是很復雜的,然而它是有規律的。

存在這多至100000種機器語言的指令。這意味著不能把這些種類全部列出來。
指令部份的示例:
0000 代表 加載(LOAD)

0001 代表 存儲(STORE)

...

暫存器部份的示例

0000 代表暫存器 A

0001 代表暫存器 B

...

存儲器部份的示例

000000000000 代表地址為 0 的存儲器 000000000001 代表地址為 1 的存儲器 000000010000 代表地址為 16 的存儲器 100000000000 代表地址為 2^11 的存儲器 集成示例 0000,0000,000000010000 代表 LOAD A, 16 0000,0001,000000000001 代表 LOAD B, 1 0001,0001,000000010000 代表 STORE B, 16 0001,0001,000000000001 代表 STORE B, 1[1]

匯編語言:
匯編語言的實質和機器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標識符,更容易識別和記憶。
它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作。例如移動、
自增,因此匯編源程序一般比較冗長、復雜、容易出錯、而且使用匯編語言編程需要有更多的計算機專業知識。

但匯編語言的優點也是顯而意見的,用匯編語言所能完成的操作不是一般高級語言所能夠實現,
而且源程序匯編生成的可執行文件不僅比較小,而且執行速度很快。


 1 hello.asm                 ;
 2 section .data            ; 數據段聲明
 3         msg db "Hello, world!", 0xA     ; 要輸出的字符串
 4         len equ $ - msg                 ; 字串長度
 5
section .text ; 代碼段聲明 6 global _start ; 指定入口函數 7 _start: ; 在屏幕上顯示一個字符串 8 mov edx, len ; 參數三:字符串長度 9 mov ecx, msg ; 參數二:要顯示的字符串 10 mov ebx, 1 ; 參數一:文件描述符(stdout) 11 mov eax, 4 ; 系統調用號(sys_write) 12 int 0x80 ; 調用內核功能 13 ; 退出程序 14 mov ebx, 0 ; 參數一:退出代碼 15 mov eax, 1 ; 系統調用號(sys_exit) 16 int 0x80 ; 調用內核功能

 

07 編程語言介紹(二)機器語言&匯編語言