筆記 組合語言 第8章 資料處理的兩個基本問題

2022-03-06 17:06:57 字數 1737 閱讀 5451

8.0 概述

資料處理的兩個基本問題:

(1) 處理的資料在什麼地方?

(2) 要處理的資料有多長?

為了描述上的簡潔,後面使用reg表示乙個暫存器,sreg表示乙個段暫存器。

reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di

sreg的集合包括:ds,ss,cs,es

8.1 bx,bp,si,di

(1) 8086cpu中,只有這四個暫存器可以用在「[...]」中來進行記憶體單元的定址

(2) 這四個暫存器在「[...]」中只能單獨出現,或以下面四種組合出現:bx+si,bx+di,bp+si,bp+di

(3) 只要在「[...]」中使用了bp而沒有顯式地給出段位址,段位址預設就在ss中

8.2 機器指令處理的資料在什麼地方

指令在執行前,所要處理的資料可以在3個地方:cpu內部,記憶體,埠

8.3 組合語言中資料位置的表達

組合語言中用三個概念來表達資料的位置:

(1) 立即數(idata)

對於直接包含在機器指令中的資料(執行前在cpu的指令緩衝器中),在組合語言中稱為立即數,在彙編指令中直接給出。

(2) 暫存器

指令要處理的資料在暫存器中,在彙編指令中給出相應的暫存器名。

(3) 段位址(sa)和偏移位址(ea)

指令要處理的資料在記憶體中,在彙編指令中可以用[x]的格式給出ea,sa在某個段暫存器中。

8.4 定址方式(定位記憶體的方法)

直接定址:[idata]

暫存器間接定址:[bx],[bp],[si],[di]

暫存器相對定址:[bx+idata],[bp+idata],[si+idata],[di+idata]

基址變址定址:[bx+si],[bx+di],[bp+si],[bp+di]

相對基址變址定址:[bx+si+idata],[bx+di+idata],[bp+si+idata],[bp+di+idata]

8.5 要處理的資料有多長

8086cpu的指令,可以處理兩種尺寸的資料,byte和word。所以在機器指令中要指明,指令進行的是字操作還是位元組操作。

(1) 通過暫存器名指明要處理的資料的尺寸。

(2) 在沒有暫存器名的情況下,用操作符「x ptr」指明記憶體單元的長度,「x」在彙編指令中可以為word或byte。

例:move word ptr ds:[0],1

move byte ptr ds:[0],1

(3) 其他方法:push或pop指令只進行位元組操作。

8.6 定址方式的綜合運用

8.7 div指令

div是除法指令,使用時應注意:

1) 除數:有8位和16位兩種,在乙個reg或記憶體單元中

2) 被除數:預設放在ax或dx和ax中。如果除數為8位,被除數則為16位,預設放在ax中;如果除數為16位,則被除數為32位,高位存放在dx中,低位存放在ax中。

3) 如果除數為8位,al存放商,ah存放餘數;如果除數為16位,ax存放商,dx存放餘數。

8.8 偽指令dd

用於字義雙字型資料(32位)

8.9 操作符dup

與db,dw,dd配合使用,由編譯器識別處理,用於進行資料的重複。語法:

db/dw/dd 3 dup (0,1,2)

注:表示定義位元組、字、雙字型資料,並將(0,1,2)三個資料重複3次

實驗7 定址方式在結構化資料訪問中的應用

組合語言之資料處理

機器指令資料處理的位置 彙編 指令前資料的位置 mov bx,0 記憶體單元 ds 0 mov bx,ax cpu內部,ax暫存器 mov bx,1 cpu內部,指令緩衝器 先來介紹下等下需要用到的名詞 sa 表示段位址 ea表示偏移量 段字首指令mov ax,0 中,記憶體單元的段位址預設為ds,...

組合語言學習第8章

1.資料處理的兩個基本問題 這已經是老生常談啦,資料處理有兩個關鍵的問題 第一,需要處理的資料在 什麼地方?第二呢,是需要處理的資料 有多長?這兩個問題 是我們 程式設計的基礎,如果不知道資料從何而來,其規模大小 再優秀的計算機也是會無能為力啦 在這裡先定義兩個符號 reg 和 sreg reg 表...

組合語言第10章筆記

call 和 ret 指令都是轉移指令,它們修改ip,或同時修改cs和ip。ret指令用棧中的資料,修改ip的內容,實現近轉移 retf指令用棧中的資料,修改cs和ip的內容,實現遠轉移。ret指令相當於 pop ip retf 指令相當於 pop ip pop cs call指令 1 將當前的ip...