組合語言之第五章至第八章知識彙總 組合語言之第五章【BX】和loop指令 組合語言之第六章包含多個段的程式 組合語言之第七章更靈活的定位記憶體地址的方法 彙編實驗之第八章資料處理的兩個基本問題
組合語言之第五章【BX】和loop指令
一:【bx】
【bx】和之前用過的【0】有些類似,都是表示記憶體單元,而它的偏移地址在bx中。段地址預設在ds中
描述一個記憶體單元 需要知道,1記憶體單元的地址,2記憶體單元的長度(型別)。
二:loop
inc bx的含義是bx中的內容加1
loop指令的格式是: loop 標號
cx是用來控制迴圈執行次數的
CPU執行loop指令時,要操作1 (cx)=(cx)-1 2 判斷cx中的值,不為零則轉至標號處執行程式,如果為零則向下執行
三:我們使用一個描述性的符號“()”來表示一個暫存器或一個記憶體單元中的內容。
“( )”中的元素可以有3種類型:1暫存器名 2段暫存器名 3記憶體單元的實體地址(一個20位資料)
“(X)”所表示的資料有兩種型別: 1位元組 2字。 是哪種型別由暫存器名或具體的運算決定
四:約定idata表示常量
五:在彙編源程式中,資料不能以字母開頭。在執行命令時,如果想一次將迴圈執行完,可以使用p命令
六:段字首用於顯式地指明記憶體單元的段地址,如“ds:”,"cs:"
組合語言之第六章包含多個段的程式
一:dw=define word 即使用dw定義字型資料(資料之間以逗號分隔),dw 既可定義資料,也可以說用它開闢記憶體空間
db定義位元組型別變數,一個位元組資料佔1個位元組單元,讀完一個,偏移量加1
dw定義字型別變數,一個字資料佔2個位元組單元,讀完一個,偏移量加2
dd定義雙字型別變數,一個雙字資料佔4個位元組單元,讀完一個,偏移量加4
二:程式取得所需空間的方法有兩種,1是在載入程式的時候為程式分配,2是程式在執行的過程中向系統申請。
三:資料和指令在本質上無區別,為了讓程式的入口處是我們所希望執行的指令。我們可以加標號。在程式入口前加標號,在程式結束後加上相同的標號。
標號 start 與 end start——end 除了通知編譯器程式結束外,還可以通知編譯器程式的入口在什麼地方,
此處用 end 指令表明了程式的入口在標號 start 處,被轉化為一個入口地址
四:將資料、程式碼、棧放在不同的段中,可以使程式結構清晰易懂,對於8086而言,可以使用多個棧,解決長度超64kb的限制問題
訪問段中的資料,通過地址(段地址和偏移地址),段名即代表一個標號,代表段地址。
用偽指令 assume 將 cs、ds、ss 分別和 code、data、stack 段相連之後,CPU 也沒並沒有將對應的段和段暫存器相連線,因為 assume 只是偽指令
組合語言之第七章更靈活的定位記憶體地址的方法
一:and和or指令。
and指令:邏輯與指令,按位進行與運算。通過該指令可將操作物件的相應位設為0,其他位不變。
or指令:邏輯或指令,按位進行或運算。通過該指令可將作業系統的相應位設為1.
二:ASCII碼。一種編碼方案,是在計算機系統中通常被採用的的,所謂編碼方案,就是一套規則,它約定了用什麼樣的資訊來表示現實物件。
一個文字編輯過程中,就包含著按照ASCII編碼規則進行的編碼和解碼。
三:以字元形式給出的資料,用‘......’的方式知名資料是以字元的形式給出的。編譯器將它們轉化為相應的ASCII碼。
四:大小寫轉換。小寫字母的ASCII碼值比大寫字母的ASCII碼值大20H。
五:【bx+idata】表示一個記憶體單元,它的偏移地址為(bx)+idata(bx中的數值加上idata)
六:si和di是8086CPU中和bx功能相近的暫存器,si和di不能分成兩個8位暫存器來使用。
【bx+si】和【bx+di】的含義相似,表示一個記憶體單元,它的編譯地址為(bx)+(si)即bx中的數值加上si中的數值。
彙編實驗之第八章資料處理的兩個基本問題
一:reg來表示一個暫存器,用sreg來表示一個段暫存器。
reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di
serg集合包括:ds,ss,cs,es
二:(1)在8086CPU中,只有bx,si,di,bp這四個暫存器可以用在“【....】”來進行記憶體單元的定址。
(2)在【....】中,這四個暫存器可以單個出現,或只能以四種組合出現:bx和si,bx和di,bp和si,bp和di.
(3只要在【....】中使用暫存器bp,而指令中沒有顯性地給出段地址,段地址就預設在ss中。
三:
四:定址方式。
五。指令要處理的資料有多長?組合語言中用以下方法處理。
(1)通過暫存器名指明要處理的資料的尺寸。
(2)在沒有暫存器名存在的情況下,
用操作符X ptr指明記憶體單元的長度,
X在彙編指令中可以為word或byte。
(3)其他方法。
在沒有暫存器參與的記憶體單元訪問指令中,
用word ptr或byte ptr顯性地指明所要訪問的記憶體單元的長度是很必要的。
否則,CPU無法得知所要訪問的單元是字單元,還是位元組單元
六:div指令
div是除法指令,使用div作除法的時候:
除數:8位或16位,在暫存器或記憶體單元中
被除數:(預設)放在AX 或 DX和AX中
結果:運算 8位 16位
商 AL AX
餘數 AH DX
div指令格式:
div reg
div 記憶體單元
七:
用db和dw定義位元組型資料和字型資料。
dd是用來定義dword (double word雙字)型資料的。
八:
dup是一個操作符,在組合語言中同db、dw、dd 等一樣,
也是由編譯器識別處理的符號。
它是和db、dw、dd 等資料定義偽指令配合使用的,用來進行資料的重複
一:【bx】
【bx】和之前用過的【0】有些類似,都是表示記憶體單元,而它的偏移地址在bx中。段地址預設在ds中
描述一個記憶體單元 需要知道,1記憶體單元的地址,2記憶體單元的長度(型別)。
二:loop
inc bx的含義是bx中的內容加1
loop指令的格式是: loop 標號
cx是用來控制迴圈執行次數的
CPU執行loop指令時,要操作1 (cx)=(cx)-1 2 判斷cx中的值,不為零則轉至標號處執行程式,如果為零則向下執行
三:我們使用一個描述性的符號“()”來表示一個暫存器或一個記憶體單元中的內容。
“( )”中的元素可以有3種類型:1暫存器名 2段暫存器名 3記憶體單元的實體地址(一個20位資料)
“(X)”所表示的資料有兩種型別: 1位元組 2字。 是哪種型別由暫存器名或具體的運算決定
四:約定idata表示常量
五:在彙編源程式中,資料不能以字母開頭。在執行命令時,如果想一次將迴圈執行完,可以使用p命令
六:段字首用於顯式地指明記憶體單元的段地址,如“ds:”,"cs:"
一:dw=define word 即使用dw定義字型資料(資料之間以逗號分隔),dw 既可定義資料,也可以說用它開闢記憶體空間
db定義位元組型別變數,一個位元組資料佔1個位元組單元,讀完一個,偏移量加1
dw定義字型別變數,一個字資料佔2個位元組單元,讀完一個,偏移量加2
dd定義雙字型別變數,一個雙字資料佔4個位元組單元,讀完一個,偏移量加4
二:程式取得所需空間的方法有兩種,1是在載入程式的時候為程式分配,2是程式在執行的過程中向系統申請。
三:資料和指令在本質上無區別,為了讓程式的入口處是我們所希望執行的指令。我們可以加標號。在程式入口前加標號,在程式結束後加上相同的標號。
標號 start 與 end start——end 除了通知編譯器程式結束外,還可以通知編譯器程式的入口在什麼地方,
此處用 end 指令表明了程式的入口在標號 start 處,被轉化為一個入口地址
四:將資料、程式碼、棧放在不同的段中,可以使程式結構清晰易懂,對於8086而言,可以使用多個棧,解決長度超64kb的限制問題
訪問段中的資料,通過地址(段地址和偏移地址),段名即代表一個標號,代表段地址。
用偽指令 assume 將 cs、ds、ss 分別和 code、data、stack 段相連之後,CPU 也沒並沒有將對應的段和段暫存器相連線,因為 assume 只是偽指令
組合語言之第七章更靈活的定位記憶體地址的方法
一:and和or指令。
and指令:邏輯與指令,按位進行與運算。通過該指令可將操作物件的相應位設為0,其他位不變。
or指令:邏輯或指令,按位進行或運算。通過該指令可將作業系統的相應位設為1.
二:ASCII碼。一種編碼方案,是在計算機系統中通常被採用的的,所謂編碼方案,就是一套規則,它約定了用什麼樣的資訊來表示現實物件。
一個文字編輯過程中,就包含著按照ASCII編碼規則進行的編碼和解碼。
三:以字元形式給出的資料,用‘......’的方式知名資料是以字元的形式給出的。編譯器將它們轉化為相應的ASCII碼。
四:大小寫轉換。小寫字母的ASCII碼值比大寫字母的ASCII碼值大20H。
五:【bx+idata】表示一個記憶體單元,它的偏移地址為(bx)+idata(bx中的數值加上idata)
六:si和di是8086CPU中和bx功能相近的暫存器,si和di不能分成兩個8位暫存器來使用。
【bx+si】和【bx+di】的含義相似,表示一個記憶體單元,它的編譯地址為(bx)+(si)即bx中的數值加上si中的數值。
彙編實驗之第八章資料處理的兩個基本問題
一:reg來表示一個暫存器,用sreg來表示一個段暫存器。
reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di
serg集合包括:ds,ss,cs,es
二:(1)在8086CPU中,只有bx,si,di,bp這四個暫存器可以用在“【....】”來進行記憶體單元的定址。
(2)在【....】中,這四個暫存器可以單個出現,或只能以四種組合出現:bx和si,bx和di,bp和si,bp和di.
(3只要在【....】中使用暫存器bp,而指令中沒有顯性地給出段地址,段地址就預設在ss中。
三:
四:定址方式。
五。指令要處理的資料有多長?組合語言中用以下方法處理。
(1)通過暫存器名指明要處理的資料的尺寸。
(2)在沒有暫存器名存在的情況下,
用操作符X ptr指明記憶體單元的長度,
X在彙編指令中可以為word或byte。
(3)其他方法。
在沒有暫存器參與的記憶體單元訪問指令中,
用word ptr或byte ptr顯性地指明所要訪問的記憶體單元的長度是很必要的。
否則,CPU無法得知所要訪問的單元是字單元,還是位元組單元
六:div指令
div是除法指令,使用div作除法的時候:
除數:8位或16位,在暫存器或記憶體單元中
被除數:(預設)放在AX 或 DX和AX中
結果:運算 8位 16位
商 AL AX
餘數 AH DX
div指令格式:
div reg
div 記憶體單元
七:
用db和dw定義位元組型資料和字型資料。
dd是用來定義dword (double word雙字)型資料的。
八:
dup是一個操作符,在組合語言中同db、dw、dd 等一樣,
也是由編譯器識別處理的符號。
它是和db、dw、dd 等資料定義偽指令配合使用的,用來進行資料的重複
一:and和or指令。
and指令:邏輯與指令,按位進行與運算。通過該指令可將操作物件的相應位設為0,其他位不變。
or指令:邏輯或指令,按位進行或運算。通過該指令可將作業系統的相應位設為1.
二:ASCII碼。一種編碼方案,是在計算機系統中通常被採用的的,所謂編碼方案,就是一套規則,它約定了用什麼樣的資訊來表示現實物件。
一個文字編輯過程中,就包含著按照ASCII編碼規則進行的編碼和解碼。
三:以字元形式給出的資料,用‘......’的方式知名資料是以字元的形式給出的。編譯器將它們轉化為相應的ASCII碼。
四:大小寫轉換。小寫字母的ASCII碼值比大寫字母的ASCII碼值大20H。
五:【bx+idata】表示一個記憶體單元,它的偏移地址為(bx)+idata(bx中的數值加上idata)
六:si和di是8086CPU中和bx功能相近的暫存器,si和di不能分成兩個8位暫存器來使用。
【bx+si】和【bx+di】的含義相似,表示一個記憶體單元,它的編譯地址為(bx)+(si)即bx中的數值加上si中的數值。
一:reg來表示一個暫存器,用sreg來表示一個段暫存器。
reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di
serg集合包括:ds,ss,cs,es
二:(1)在8086CPU中,只有bx,si,di,bp這四個暫存器可以用在“【....】”來進行記憶體單元的定址。
(2)在【....】中,這四個暫存器可以單個出現,或只能以四種組合出現:bx和si,bx和di,bp和si,bp和di.
(3只要在【....】中使用暫存器bp,而指令中沒有顯性地給出段地址,段地址就預設在ss中。
三:
四:定址方式。
五。指令要處理的資料有多長?組合語言中用以下方法處理。
(1)通過暫存器名指明要處理的資料的尺寸。
(2)在沒有暫存器名存在的情況下,
用操作符X ptr指明記憶體單元的長度,
X在彙編指令中可以為word或byte。
(3)其他方法。
在沒有暫存器參與的記憶體單元訪問指令中,
用word ptr或byte ptr顯性地指明所要訪問的記憶體單元的長度是很必要的。
否則,CPU無法得知所要訪問的單元是字單元,還是位元組單元
六:div指令
div是除法指令,使用div作除法的時候:
除數:8位或16位,在暫存器或記憶體單元中
被除數:(預設)放在AX 或 DX和AX中
結果:運算 8位 16位
商 AL AX
餘數 AH DX
div指令格式:
div reg
div 記憶體單元
七:
用db和dw定義位元組型資料和字型資料。
dd是用來定義dword (double word雙字)型資料的。
八:
dup是一個操作符,在組合語言中同db、dw、dd 等一樣,
也是由編譯器識別處理的符號。
它是和db、dw、dd 等資料定義偽指令配合使用的,用來進行資料的重複