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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

汇编语言程序设计-钱晓捷(第五版)第一章-汇编语言基础知识

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编语言程序设计-钱晓捷(第五版)第一章-汇编语言基础知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.1 8086的寄存器

處理器內部需要高速存儲單元,用于暫時存放程序執行過程中的代碼和數據,這些存儲單元被稱為寄存器(Register)
通用寄存器:在處理器中數量較多、使用頻率較高,具有多種用途。例如,它們可用來存放指令需要的操作數據,可用來存放地址以便在主存或I/O接口中指定操作數據的位置。
專用寄存器:只用于特定目的。例如,8086的指令指針寄存器IP只用于記錄將要執行指令的主存地址,標志寄存器保存指令執行的輔助信息。

8086的寄存器組分成8個通用寄存器(AX累加器、BX基址寄存器、CX計數器、DX數據寄存器、SI源地址寄存器、DI目的地址寄存器、BP基址指針、SP堆棧指針)、4個段寄存器(CS代碼段寄存器、SS堆棧段寄存器、DS數據段寄存器、ES附加段寄存器)、1個標志寄存器(FLAGS)和1個指令指針寄存器(IP),它們均為16位。

1.2 8086的尋址方式

(1)立即數尋址方式
在立即數尋址方式下,指令中的操作數直接存放在機器碼中,緊跟在操作碼之后。立即數尋址方式常用來給寄存器或存儲單元賦值。

MOV AL, 05H //功能:AL ← 05H,機器代碼為B0 05 MOV AX, 0102H //功能:AX ← 0102H,機器代碼為B8 02 01

(2)寄存器尋址方式
寄存器尋址方式的操作數存放在CPU的內部寄存器REG中,可以是8位寄存器R8(AH、AL、BH、BL、CH、CL、DH、DL)或者16位寄存器R16(AX、BX、CX、DX、SI、DI、BP、SP)。另外,操作數可以存放在4個段寄存器SEG(CS、DS、SS、ES)中。

MOV AX, 1234H //目的操作數采用寄存器尋址,源操作數為立即數尋址AX ← 1234H MOV BX, AX //兩個操作數均為寄存器尋址,BX ← AX

執行上述兩條指令之后,結果是BX = 1234H。
(3)直接尋址方式
在直接尋址方式下,指令中直接包含了有效地址。

MOV AX, [2000H] //AX ← DS:[2000H]

該指令中給定了有效地址2000H,它不是存儲器的物理地址。在默認情況下,有效地址要與數據段寄存器DS一起構成操作數所在存儲單元的物理地址。在匯編語言中,用[]表示存儲單元的內容。
該例指令的執行結果是將DS:[2000H]單元的內容傳送至AX寄存器。
數據不僅可以存放于數據段中,也可以根據需要存放于附加段、代碼段或堆棧段中,這時指令中應指明段超越前綴,例如:

MOV AX, ES:[2000H] //AX ← ES:[2000H]

(4)寄存器間接尋址方式
在這種尋址方式中,有效地址存放在寄存器中,8086中寄存器只能是基址寄存器BX或變址寄存器SI、DI中。其默認的段地址在DS段寄存器中,但可使用段超越前綴改變。例如:

MOV AX, [SI] //AX ← DS:[SI]

該指令中有效地址存放于SI寄存器中,操作數則存放在數據段主存單元中。假設SI內容設置為2000H,則該指令等同于MOV AX, [2000H]。
(5)寄存器相對尋址方式
在寄存器相對尋址方式下,有效地址是寄存器內容與有符號8位或16位位移量之和,寄存器可以是BX、BP或SI、DI。操作數的EA = BX/BP/SI/DI + 8/16位位移量。其中,BX、SI、DI寄存器默認數據段DS,BP寄存器默認堆棧段SS。當使用非默認段時,可用段超越前綴。

MOV AX, [DI + 06H] //AX ← DS:[DI + 06H] MOV AX, [BP + 06H] //AX ← SS:[BP + 06H] MOV AX, [BP] //等同于MOV AX, [BP + 0H] MOV AX, [SI + i] //i是事先定義的變量或常量 MOV AX, i[SI] //等同于MOV AX, [SI + i]

(6)基址變址尋址方式
基址變址尋址方式是把一個基址寄存器(BX或BP)的內容加上變址寄存器(SI或DI)的內容構成有效地址EA。這樣,操作數的EA = BX/BP + SI/DI。若基址寄存器使用BX,其默認段為數據段DS,若基址寄存器使用BP,其默認段為堆棧段SS。

MOV AX, [BX + SI] //AX ← DS:[BX + SI] MOV AX, [BP + DI] //AX ← SS:[BP + DI] MOV AX, DS:[BP + DI] //AX ← DS:[BP + DI] MOV AX, [BX][SI] //等同于MOV AX, [BX + SI]

(7)相對基址變址尋址方式
相對基址變址尋址方式也使用基址寄存器(BX/BP)和變址寄存器(SI/DI),還在指令中指定一個8位或16位的位移量,這三者之和構成操作數的有效地址EA,即EA = BX/BP + SI/DI + 8/16位位移量。

MOV AX, [BX + SI + 06H] //AX ← DS:[BX + SI + 06H] MOV AX, [BX + SI + i] //i是事先定義的變量或常量 MOV AX, i[BX][SI] //等同于MOV AX, [BX + SI + i]和MOV AX, i[BX + SI]

總結

以上是生活随笔為你收集整理的汇编语言程序设计-钱晓捷(第五版)第一章-汇编语言基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。

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