組合語言程式設計學習筆記01

2021-10-07 05:50:39 字數 2902 閱讀 2305

第一章 組合語言基礎知識

1.1 暫存器

暫存器是cpu內部高速儲存單元,它們提供資料和位址。

16位intel 8086/80826 cpu中的暫存器為:

ax bx cx dx

si di bp sp

儲存器位址

儲存器位址是儲存器中儲存單元的編號

每個儲存單元存放乙個位元組量的資料 乙個位元組b(byte)=8個二進位制位b(bit)

採用十六進製制數來表達位址 intel 8086具有1兆位元組(1mb)儲存器容量

埠io埠是介面電路中暫存器的編號

採用十六進製制數來表達埠

intel 8086支援64k個8位埠

1.2 資料表示

(進製轉換部分略)

bcd碼

0001 1

0010 2

0011 3

0100 4

0101 5

0110 6

0111 7

1000 8

1001 9

真值:現實中真實的數值

機器數:計算機中用0和1數碼組合表達的數值

無符號數:只表達0和正整數的定點整數

有符號數:表達負整數、0和正整數的定點整數 符號位需要占用乙個位 常用機器數的最高位 0表示正數、1表示負數

定點數:固定小數點的位置表達數值的機器數

定點整數:將小數點固定在機器數的最右側表達的整數

定點小數:將小數點固定在機器數的最左側表達的小數

浮點數:小數點浮動表達的實數

補碼有符號整數在計算機中預設採用補碼

最高位表示符號:正數用0,負數用1

正數補碼:直接表示數值大小(同無符號數)

負數補碼:將對應正數補碼取反加1     

[105]補碼=01101001b     

[-105]補碼=[01101001b]取反+1     =10010110b+1=10010111b

8位二進位制補碼表示的數值範圍:-128~+127

16位二進位制補碼表示的數值範圍:-2^15~+2^15-1

32位二進位制補碼表示的數值範圍:-2^31~+2^31-1

負數真值「取反加1」得機器數補碼

負數補碼「取反加1」得到負數真值

補碼:11100000b 真值:-([11100000]求反+1)=-(00011111+1)         =-00100000=-2^5=-32

1.3 主存空間的分配

匯流排介面單元biu:負責讀取指令和運算元  

執行單元eu :負責指令解碼和執行

8086暫存器

8086微處理器

匯流排介面單元biu:負責讀取指令和運算元  

執行單元eu :負責指令解碼和執行

資料暫存器

ax——累加器,算術邏輯運算。

bx——基址暫存器,存放儲存器位址。

cx——計數器,迴圈等。

dx——資料暫存器,常用來儲存雙字資料的高16位。

變址暫存器用於儲存器定址提供位址

si——源變址暫存器

di——目的變址暫存器

指標暫存器用於定址記憶體堆疊的資料

sp——堆疊指標暫存器,指示棧頂

bp——基址指標暫存器,指示棧底

標誌暫存器

指令指標ip

段暫存器

ds:資料段

es:附加段

計算機中資訊的單位

二進位制位bit:一位二進位制數0/1

位元組byte:8個二進位制位d7-d0

字word:16位,2個位元組,d15-d0

雙字dword:32位,4個位元組,d31-d0

乙個儲存單元除了具備唯一的實體地址外還有多個邏輯位址。

利用ss:sp操作堆疊頂的資料

資料段:ds:ea

邏輯段的分配:

指令序列:**段

堆疊:堆疊段

資料預設在資料段,也有在附加段,串操作的目的區必須在附加段

沒有指明時,一般的資料訪問在ds段;使用bp訪問主存,則在ss段

cs:    ;**段超越,使用**段的資料

ss:     ;堆疊段超越,使用堆疊段的資料

ds:     ;資料段超越,使用資料段的資料

es:     ;附加段超越,使用附加段的資料

立即數定址(imm)

imm——8/16位 00~ff/0000~ffff

暫存器定址

mov bx,ax

儲存器選址

直接定址

mov ax,[2000h]

ax間接定址

mov ax,[si]

ax相對定址

有效位址=bx/bp/si/di+8/16位位移量

mov ax,[di+06h]       ;ax←ds:[di+06h]

mov ax,[bp+06h]     ;ax←ss:[bp+06h]

基址變址定址

有效位址=bx/bp+si/di

bp預設是ss

相對基址變址定址

有效位址=bx/bp+si/di+8/16

組合語言程式設計 01 獲取cpuid

今天開始學習x86彙編 硬平台 intel,軟平台 linux 組合語言程式設計 原始碼 root ubuntu core home cpuid vim cpuid.s 1 cpuid.s sample program to extract the processor vendor id 2 3 s...

組合語言 學習筆記2 彙編程式設計環境

3.段暫存器 4.指令指標暫存器 二 實位址下的儲存器定址方式 三 堆疊儲存技術 四 程式彙編連線與除錯方法 在微機原理與接 術課程中,我學的是16位的彙編,現在總結一下32位的彙編。不過這兩者是一脈相承的,因此會有很多相同的地方。算術邏輯運算後的結果特徵 16位 附加段暫存器es fs和gs 存放...

組合語言程式設計

1.彙編語句的三種基本型別 2.標號相關 3.變數相關 4.運算元定址方式 buffer dw 500 x 17 rept 500 這是乙個重複巨集,以下重複彙編500遍 x x 979 mod 65535 這句話我也不懂 dw x endm 巨集在這裡結束transto10 proc near 函...