第2天:汇编语言与Makefile
生活随笔
收集整理的這篇文章主要介紹了
第2天:汇编语言与Makefile
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
匯編語言指令
- ORG:origin,指定程序從某個地址開始,即把程序裝載到內存的某個地址。 如:ORG 0x7c00,0x7c00作為是英特爾指定的。
- JMP:jump,跳轉指令。
- entry, msg, loop:自定義標簽,隨便是什么都可以,代表了某個地址,僅僅代表單純的數字,通過ORG計算出來的,用于指定JMP指令跳轉目的地。
- MOV:move,賦值。如:MOV AX, 0,表示“AX = 0”。 值得注意的是,例如MOV SS, AX,SS被賦值后,AX原來的值還在,并沒有變空。而且,MOV源數據和目的數據的位數必須相同。
- []:表示內存地址,但只有BX、BP、SI、DI可以,其他寄存器不行,因為CPU沒有處理這種指令的電路,也就是沒有表示這種處理的機器語言,又是英特爾的“杰作”。
- CMP:常與JE、JNE連用,變成if語句。
- INT:中斷指令,目前可看作函數調用。如:INT 0x10,調用16號函數。
- HLT:halt,讓CPU進入狀態,只要按下鍵盤、移動鼠標等,CPU就會醒過來。
- 匯編語言出現的數字,有0x前綴的就是十六進制,無前綴就是十進制。
- 關于MOV指令:
?
寄存器
- AX,CX,DX,BX,SP,BP,SI,DI都是CPU的8個16位寄存器(各寄存器意義可參考P31),因此可以存儲16位二進制數。它們不管使用哪個都可以進行同樣的運算,只是如果用AX進行運算的話,程序可以變得簡潔。例如:“ADD CX,0x1234”是一個4字節命令,而“ADD AX,0x1234”是一個3字節的命令。
- AX,CX等寄存器的X是extend的意思,因為原來CPU的寄存器都是8位的。用齊這8個寄存器,總共只可以存儲16個字節。
- 當然,AX,CX,DX,BX分為AL,AH、CH,CL等。但是SP,BP,SI,DI沒有這樣分哦! 所以你想使用這4個寄存器分開高位和低位處理的時候,只能“MOV AX, SI”,使用AH、AL來取值。沒辦法,這又是英特爾規定的。
- 現在的CPU大多數都是32位的,因此在這些寄存器前面加上E就成為32位寄存器了,也是extend的意思哈。如:EAX,EBX.....。32位CPU也只能存儲32個字節。
- 段寄存器:16位寄存器,明天講解。
?
內存
就是因為CPU只能存儲這么少信息,才需要內存的輔助。
轉載于:https://www.cnblogs.com/comeonjiji/p/3568111.html
總結
以上是生活随笔為你收集整理的第2天:汇编语言与Makefile的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SharePoint 2010 mast
- 下一篇: android中的ContentProv