16位匯編第一講簡介


 

                 匯編第一講 匯編簡介

一.什么是匯編

  匯編語言他是計算機語言,計算機語言通俗點說就是人類和計算機(也就是CPU)溝通的橋梁,計算機不認識人類的語言,只認得二進制(0和1)但是我們想讓你算計完成我們的工作,每次都是0,和1,那樣會崩潰的,(老一輩的是這樣的)所以后面匯編語言出現了,用一些簡單的助記符來替代機器語言(二進制)通用的語言,比如 + - * / 這種助記符,

add....匯編語言是和機器語言一一對應的.

二.匯編語言有什么用處好處

    1.學好匯編了,你可以理解計算機更為透徹

    2.學好匯編,可以增加自己的調試能力

    3.學好匯編,你可以反匯編,做一些反病毒,等等一系列的工作.

三丶語言發展史

機器語言 ->匯編語言 -> C語言 -> C++語言等等

四丶匯編語言主要操作什么

匯編語言主要操作的是寄存器

在CPU中,有八個通用寄存器

ax (add,代表相加,累加的意思)累加寄存器

bx (base,代表基地址,存放地址的寄存器) 基址寄存器

cx (count,個數,代表統計的意思)計數寄存器

dx (data,數據) 數據寄存器

SI (source) 源寄存器,存放源地址的內容的寄存器

DI (Dest) 目標寄存器,從源寄存器中memcpy到目標寄存器中

BP (base Point) 堆棧,理解為棧底指針,每次在棧中移動數據,出棧進棧,都會更新.記錄的是當前的棧底

SP () 堆棧棧頂指針.

指令寄存器,以及四個段寄存器

指令寄存器,標志寄存器,以及四個段寄存器.

 IP ,和段寄存器CS一起使用,記錄的是偏移(至於怎么使用,會在下一講講清楚) 指明了CPU要執行的那條指令

IP是和CS一起使用,用來確定銷一條指令的物理地址

Flag 標志寄存器, 存放各種標志的.

五丶WindowsXp下的簡單Debug調試工具的簡單使用

 我們編寫匯編程序,一般用debug

使用方法,

1. win + R 打開運行窗口輸入cmd,在cmd中輸入Debug命令

2. 直接開始菜單中 選擇右邊的運行窗口,輸入cmd,然后在cmd輸入debug命令

一丶debug中常見的指令

 a 匯編,代表我們可以開始匯編了. (把匯編代碼轉換為機器碼)

 u 反匯編,(把機器代碼變為匯編代碼)

  如果你有一個寫到文件的機器碼文件,可以當做debug的參數傳入,然后u,就可以顯示文件中匯編代碼了,把機器代碼反匯編成了匯編代碼了

t 單步不如(在vc++6.0中,相當於F11鍵)

r 寄存器 (相當於vc++6.0中的F10鍵,)可以修改寄存器的內容,比如 r cx 然后回車,輸入值,然后輸入p往下執行即可查看.

g 斷點執行(也就是vc中的F5執行)

D 部分數據顯示 (可以顯示一段內存中的數據)

n 文件名 (本地創建一個文件, 例如n hello ,不用加雙引號包裹)

e 指定地址寫入,可以指定地址寫入一段數據

w 把匯編代碼寫入到文件(文件是由n指令創建的)

 等等這些是常用的,具體的debug指令會放到雲盤中大家下載:

 鏈接:http://pan.baidu.com/s/1kVDWzHl 密碼:adew

 二丶使用debug截圖分享

1.運行CMD,輸入debug命令

2.輸入a,開始匯編

mov ax,1 的意思是把 1賦值給ax

ret 的指令就是(return 返回的意思)你寫的匯編程序也要返回否則就出錯

3.輸入p指令調試查看一下

4.利用r指令,修改寄存器的值,寫入到文件,注意寫入到文件必須寫入字節大小,字節大大小就是cx寄存器中存儲(cx 計數寄存器)

5.查看是否更改,p指令查看

6.n指令,在本地目錄創建一個文件

7.w指令,將我們的代碼寫入到文件

8.利用winhex查看本地文件

其中B8 代表指令MOV

01 00 代表16位寄存器AX里面的值

C3 代表ret返回

9.將文件,反匯編為匯編代碼,當做debug的參數

 

 六丶使用debug調試工具(也可以調試,亦可以當做編輯器)顯示helloword指令

1.如果顯示helloworld,咱們需要一個指令字典,在上面的下載鏈接中提供了.

指令字典的看法

1.主頁面

 

2.點擊匯編語言,選擇8086

 

3.選擇下面的功能號

上面說了,ah是高把位,我們要顯示字符串,需要給這個ah賦值為09 (具體系統調用(也就是API調用顯示hello下一講詳細講解))

然后dx寄存器我們需要給定一個字符串, (e 指令指定地址 e 108 "hello$" 即可)

調用的時候,用int 21 指令調用(內部會查表,具體怎么樣,下一講細講)

 

 4.使用debug顯示一個helloworld

第一個指令  -e 140 mov "helloworld$" 代表我們給140地址寫入一個字符串, 可以用d指令查看  d 140 回車就會顯示

第二個指令 a,表示我們開始匯編

按照上面的指令字典,我們知道,dx寄存器需要是字符串的首地址, 所以利用mov 指令,把140給dx了

然后因為調用函數(也就是系統調用) ah 我們需要給9,代表調用那一項

然后int 21 代表系統調用的意思,也就是說(調用函數,開始調用函數)

然后顯示了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM