1.檔使用bp做程式設計位址時,此時使用的是ss段。關於ss可以看一下這位的部落格
2.命令add ax,bx 之中,源操作的物件是bx,目的操作的物件是ax,所以當求操作的物理址時,就是該物件的段位址*16+偏移位址
3.關於暫存器的部分詳解
四個通用暫存器
ax累加暫存器,常用於運算,
cx 計數暫存器,常用於計數,例如loop中的迴圈次數保留值
dx 資料暫存器,常用於資料傳遞
以上四類的特點是分為高低各八位,可以分別定址,單獨使用
四個指標暫存器和變址暫存器,包括:
sp 堆疊指標 與ss配合使用,可指向目前的堆疊位置
bp 基址指標暫存器 可作為ss的乙個相對基址位置
si 源變址暫存器 可用來存放相對於ds段之源變址指標
di 目的變址暫存器,可用來尋訪相對於es段之目的變址指標
這四個只能按16位進行訪問操作
四個段暫存器:
cs:**段暫存器
es:堆疊段暫存器
ss:附加段暫存器
fs:附加段暫存器
gs:附加段暫存器
乙個標誌暫存器
flag:標誌位
指令指標暫存器
ip:擴充套件指標
實體地址=段位址(段暫存器位址)+偏移位址(通用暫存器位址)
七種定址方式:
1、立即定址方式:
將乙個運算元直接賦值給暫存器
例如:指令:mov ax,1234h
則:ax=1234h
2、暫存器定址方式:
運算元在cpu內部的暫存器中,指令指定暫存器號。
對於16位運算元,暫存器可以是:ax、bx、cx、dx、si、di、sp和bp等。
對於8位運算元,暫存器可以是al、ah、bl、bh、cl、ch、dl、dh。
這種定址方式由於運算元就在暫存器中,不需要訪問儲存器來取得運算元
因而可以取得較高的運算數度。
3、直接定址方式:
暫存器將記憶體單元直接賦值給暫存器
例如:mov ax,[8054]
如(ds)=2000h,
則執行完的ax指的實體地址仍不變,但是該位址內的記憶體單元的數值已經變為20854h處的數值
4、暫存器間接定址方式:
運算元在暫存器中,運算元有效位址在si、di、bx、bp這四個暫存器之一中。在一般情況下,
如果有效位址在si、di和bx中,則以ds段暫存器中的內容為段值。如果有效位址在bp中,
則以ss段暫存器中的內容為段值即調動儲存在暫存器裡的偏移位址
例如:mov ax,[si]
如果(ds)=5000h(si)=1234h
則實體地址=50000+1234=51234h
51234h位址中的內容為:6789h
執行該指令後,(ax)=6789h
5、暫存器相對定址方式:
運算元在儲存器中,運算元的有效位址是乙個基址暫存器(bx、bp)
或變址暫存器(si、di)的內容加上指令中給定的8位或16位位移量之和
bx8位位移量
ea(有效位址)=bp+
si16位位移量
di 在一般情況下,如果si、di、或bx中的內容作為有效位址的一部分,那麼
引用的段暫存器是ds;如果bp中的內容作為有效位址的一部分,那麼引用的
段暫存器是ss。
實體地址=16d×(ds)+(bx)+8
或(si)或16位位移量
或(di)
實體地址=16d×(ss)+(bp)+8位位移量
或16位位移量
在指令中給定的8位或16位位移量採用補碼形式表示。在計算有效位址時,如
位移量是8位,則被帶符號擴充套件成16位。
例如:movax,[di+1223h]
假設,(ds)=5000h,(di)=3678h
則實體地址=50000+3678+1233=5489bh
5489bh位址中的內容:55aah
執行該指令後ax=55aah
下面指令中,源運算元採用暫存器相對定址,引用的段暫存器是ss:movbx,[bp-4]
下面指令中,目的運算元採用暫存器相對定址,引用的段暫存器是es:moves:[bx+5],al
指令:movax,[si+3]與movax,3[si]是等價的
6、基址加變址定址方式:
運算元在暫存器中,運算元的有效位址由:
基址暫存器之一的內容與變址暫存器之一的內容相加
bxsi
即:ea=+
bpdi
在一般情況下,如果bp之內容作為有效位址的一部分,則以ss之內容為段值,否則已ds
為段值。
例如:movax,[bx][di]
如:(ds)=2100h,
(bx)=0158h,
(di)=10a5h
則ea=0158+10a5=11fd
實體地址=21000+11fd=221fdh
221fdh位址中的內容:1234h
執行該指令後ax=1234h
下面指令中,目的運算元採用基址加變址定址,
引用的段暫存器是ds:movds:[bp+si],al
下面指令中,源運算元採用基址加變址定址,
引用的段暫存器es:movax,es:[bx+si]
這種定址方式使用與陣列或**處理。用基址暫存器存放陣列首位址,而用變地暫存器
來定位陣列中的各元素,或反之。由於兩個暫存器都可改變,所以能更加靈活地訪問數
組或**中的元素。
下面的兩種表示方法是等價的:
movax,[bx+di]
movax,[di][bx]
7、相對基址加變址定址方式:
運算元在儲存器中,運算元的有效位址由於基址暫存器之一的內容與變址暫存器之一的
內容及指令中給定的8位或16位位移量相加得到。
bxsi8位
即:ea=++位移量
bpdi16位
在一般情況下,如果bp中的內容作為有效位址的一部分,則以ss段暫存器中的內容為段
值,否則以ds段暫存器中的內容為段值。
在指令中給定的8位或16位位移量採用補碼形式表示。
在計算有效位址時,如果位移量是8位,那麼被帶符號擴充套件成16位。
當所得的有效位址操作ffffh時,就取其64k的模
例如:movax,[bx+di-2]
假設,(ds)=5000h,(bx)=1223h,di=54h,(51275)=54h,(51276)=76h
實體地址=50000+1223+0054+fffe(-2各位取反末位加一)=51275h
執行該指令後(ax)=7654h
相對基址加變址這種定址方式的表示方法多種多樣,以下四種方法均是等價的:
movax,[bx+di+1234h],movax,1234h[bx][di]
movax1234h[bx+di],movax,1234h[di][bx]
參考書籍《組合語言第四版》王爽著,任課老師 胡海芝
關於彙編的期末考試複習1
彙編期末考試備考 1.組合語言屬於機器語言。2.處理器是由運算器,控制器和暫存器組構成的 3.儲存器的乙個位元組表示8位 bit 例如 暫存器ax分為高八位ah和低八位al兩個位元組,4.mov操作指令的使用方式 1.mov 暫存器,資料 例如 mov ax,8 2.mov 暫存器,暫存器 例如 m...
組合語言 暫存器
乙個典型的cpu由運算器 控制器 暫存器等器件組成,這些器件靠內部匯流排相連。通用暫存器 ax bx cx dx 段位址暫存器 cs ds es ss 專用暫存器 bp sp si di 指令指標暫存器 ip 標誌暫存器 psw ah al ax accumulator 累加暫存器 bh bl bx...
組合語言 暫存器
乙個cpu由暫存器,運算器,控制器組成,暫存器負責儲存資料。通用暫存器 ax,bx,cx,dx。8086cpu的暫存器都是16位的,能存放兩個位元組。乙個暫存器又能分為兩個部分,乙個高位位元組如ah,還有乙個地位位元組如al。這兩個部分可以單獨看成乙個八位暫存器來用。當暫存器當整體來看時,它可以進行...