日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第2天:汇编语言与Makefile

發布時間:2023/12/9 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第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指令:
  • ”MOV BYTE [678], 123“:移動8位二進制數到[678],[678]這個單元剛好能存下。
  • "MOV WORD [678], 123":移動16位二進制數,123被解釋成16位二進制數,高位填0,[678]這個單元存不下,只能存低位,高位存[679]單元。
  • "MOV DWORD [678], 123":移動32位二進制數,123被解釋成32位二進制數,高位填0,存不下像高位拓展存儲。
  • ?

    寄存器

    • 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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。