<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      川山甲

      追求內心的非常平靜!瞬間清空所有的雜念,達到物我兩忘!

        博客園  :: 首頁  ::  :: 聯系 :: 訂閱 訂閱  :: 管理
       
      介紹
       
        這幾天滿腦子都是寄存器,存儲器——主要是卡在匯編語言上了,所以博文進度比較緩慢。
       
        今天就先講講如何定義數據元素吧?因為匯編語言程序最重要的任務之一就是處理對象。
       
       

      三個最常用的段:
       1、數據段:數據段聲明帶有初始值的數據元素。這些數據元素用作匯編語言程序中的變量。
       2、bbs段:bbs段聲明使用零(或者null)值初始化的數據元素。這些數據元素常用做匯編語言程序中的緩沖區。
       3、文本段:在可執行程序內聲明指令碼的地方。
       
      1、定義段
        
        GNU匯編器使用.section命令語句聲明段。
        語法:.section 類型(.data,.bss,.text)
        以下是匯編語言程序的布局。
        

      2、定義起始點
       
        1)當匯編語言程序被轉換為可執行文件時,鏈接器必須知道指令中的起始點是什么
        GNU匯編器聲明一個默認標簽,或者說標識符,它應該用作應用程序的入口點。_start便簽用于標明程序應該從這條指令開始運行。
       
        2)除了應用程序中聲明起始標簽之外,還需要為外部應用程序提供入口點。這是使用.globl命令完成的。
       
      了解上述信息就可以為所有匯編語言程序創建基礎模板。如下:

       

      有了這樣的模板,就準備好了開始編寫匯編語言程序。

      3、創建簡單程序
       
        我們來演示上面那些組件如何組合在一起使用。
        先寫個簡單的"hello,world“,很多語言不都這么搞嗎?我也不免俗?!渌糠治視诤笃诘奈恼轮姓f明。
       1  .section .data
       2  output:
       3     .ascii "hello,world\n"
       4  
       5  .section .text
       6  .globl _start
       7  _start:
       8     movl $4, %eax
       9     movl $1, %ebx
      10     movl $output, %ecx
      11     movl $13, %edx
      12     int $0x80
      13 
      14 #success exit
      15     movl $1, %eax
      16     movl $0, %ebx
      17     int $0x80

                                        匯編并且鏈接這個過程

       

       

      數據段
       
        1)數據段定義的數據元素都保留在內存中。
      NOTE
        用.data數據段定義的任何數據元素可以按照讀取和寫入模式訪問。
        用.rodata數據段定義的任何數據元素只能按照只讀(read-only)模式訪問?!虼耸褂胷o前綴。
         2)數據段定義數據元素需要用到兩個語句:
          一個標簽:像C語言中變量名稱,用作引用數據元素所使用的標記?!獦撕瀸μ幚砥魇菦]有意義的,它只是匯編器試圖訪問內存位置時用作引用指針的一個位置。(機器碼中使用bit表示這個標記)
          一個命令:定義數據元素保留多少個字節。

        3)下表介紹為特定數據元素類型保留內存的不同命令。
        
       
        4)我們來觀察一下在內存中分布情況,為了表達更清楚,我再寫一個例子。

       

       

       

       

       

       

       

                                       內存分布圖

      觀察

        按照數據段中定義數據元素的順序,每個數據元素被存放到內存中。帶有多個值的元素按照命令中列出的順序存放(如msg和length)。

       

      靜態符號
       
        .equ命令用于把常量(呵呵,這個不用說,常量嗎?在程序中是不能改動的,這也是它最大的特色)設置為可以在文本段(我們可以理解為指令段)中使用的符號。設置方法如下
        

      NOTE
        .equ命令可以出現在數據段的任何位置,但是為了方便閱讀,最好集中定義在最前或最后。

       

       以上兩種都是定義在數據段中,這也是在匯編中經常使用的方法。下面介紹另外一種段聲明——bbs段。

      bss段
       
        bbs段只聲明原始內存部分。
       
        GNU匯編器使用兩個命令聲明緩沖區。

       

       

       

       
      總結
       
        我一直在想從哪個角度能輸入剖析C語言,很多資料顯示從匯編和機器語言角度去理解C語言,方能真正明白。我也看了很多資料,覺得應該從最最基礎的方面進行。所以今天先談到這里?!笫氯绾?,下回分解。
       
        這兩天參考的資料
          《匯編語言》——這書主要是針對windows 平臺,語法使用的是intel語法。而我的平臺,也是我的工作平臺,習慣平臺是linux,而linux采用的是“AT&T語法“。所以我也就看了前幾章有關硬件方面的內容(但是也沒看懂多少東西,呵呵)。
          《匯編語言程序設計》——這書是我側重點看的,直接跳到第二部分基礎語言部分進行研究。
          《Linux C編程一站式學習》——這書我著重看了幾遍“x86匯編程序基礎”。收益匪淺。
          《深入理解計算機系統》——這書我也是輕微的看了一下,很多地方還是沒有怎么弄懂。我還得多看幾遍。
       
      題外話
       
      機器指令展開來講,就是機器可以正確執行的命令。
        電子計算機的機器指令是一列二進制的數字,計算機將指令轉變為一列高低電平,以使計算機的電子器件受到驅動,進行運算。
        CPU是計算機的核心部件,控制整個計算機的運作并進行運算。
        1、地址總線的寬度決定了CPU的尋址能力;
        2、數據總線的寬度決定了CPU與其他器件進行數據傳送時的一次數據傳送量。
        3、控制總線的寬度決定了CPU對系統中其他器件的控制能力。
       
      單元換算:
        1B = 8b  1KB = 1024B  1MB = 1024KB  1GB = 1024MB
       
      推薦
       
       
       
       
      posted on 2012-06-28 00:04  川山甲  閱讀(3300)  評論(10)    收藏  舉報
      主站蜘蛛池模板: 国产亚洲精品综合一区二区| 国产综合有码无码中文字幕| 亚洲伊人情人综合网站| 国精偷拍一区二区三区| 99久久国产一区二区三区| 亚洲色av天天天天天天| 国产成人人综合亚洲欧美丁香花| 在线看免费无码的av天堂| 国产资源精品中文字幕| 午夜激情小视频一区二区| 欧美国产成人精品二区芒果视频| 男女啪啪免费观看网站| 国产一区二区在线激情往| 中文字幕人妻不卡精品| 久久久无码一区二区三区| 国产一级区二级区三级区| 午夜夜福利一区二区三区| 午夜免费福利小电影| 徐州市| AV无码不卡一区二区三区| 精精国产xxx在线观看| 吉川爱美一区二区三区视频| 国产在线线精品宅男网址| 国产一级av在线播放| 少妇做爰免费视看片| 乱人伦人妻系列| 国产精品制服丝袜白丝| 免费无码又爽又刺激成人| 亚洲国产精品久久久天堂麻豆宅男| 欧美不卡无线在线一二三区观| 中文字幕国产精品日韩| 午夜综合网| 国产午夜成人久久无码一区二区| 日本在线 | 中文| 免费无码肉片在线观看| 慈利县| 日韩人妻精品中文字幕专区| 成年女人片免费视频播放A| 丰满爆乳一区二区三区| 91精品国产综合久蜜臀| 国产精品久久久久影院色|