王爽組合語言第五章學習筆記和實驗四答案

2021-06-11 20:28:17 字數 2348 閱讀 7728

1.ds+偏移位址表示記憶體單元;

2.描述乙個記憶體單元需要兩種資訊:(1)記憶體單元的位址;(2)記憶體單元的長度(資料型別);

3.定義描述性符號「()」來表示乙個暫存器或乙個記憶體單元中的內容,「()」中的元素可以有3種型別:a.暫存器名,b.段暫存器名,c.記憶體單元的實體地址(乙個20位的資料),一般「()」內的資料型別有兩種,具體是哪一種型別由暫存器或具體的運算決定;

4.一般情況下,常量必須解除安裝「」中;

5.loop指令執行的兩個基本步驟:先對cx的值減去1,然後判定cx的值是不是為0,如果為0則向下繼續執行,不為0則跳轉至標號處;

6.在本書的組合語言之中,一般乙個標號代表乙個位址;

7.cx和loop指令相互配合實現迴圈功能的3個要點:

(1)在cx中存放迴圈次數;

(2)loop指令中的標號所標識的位址要在前面;

(3)要迴圈執行的程式段,要寫在標號和loop指令的中間。

8.關於乘法的一點小學階段的理解:123*236,相當於12

3連續相加236次,所以程式設計的時候用的是add ax,123;

9.組合語言之中,資料不能以字母開頭,通常在字幕前面加0;

10.存放累加資料的時候一般考慮兩個問題:是否溢位和資料長度是否匹配,如果不匹配需要哪一種暫存器來中轉;

11.關於debug中p指令和g指令的說明,p指令通常一次性執行loop中的內容,而g指令可以看作類似於goto的跳轉指令;

12.由於彙編的源程式和debug對於""的數字的處理不同,因此為了統一,通常先將資料放入乙個暫存器中,例如bx中,然後利用[bx]來訪問記憶體單元;

例如:mov al,[0] 與mov al,0相同

mov al,ds:[0] 將(al)=((ds)*16+0)的資料送人記憶體中

mov al,[bx] 將(al)=((ds)*16+bx)的資料送入al中

mov al,ds:[bx] 與mov al,[bx]相同。

13.關於段字首的說明,例如下面內容:

mov ax,ds:[bx]

mov ax,cs:[bx]

mov ax,ss:[bx]

mov ax,es:[bx]

mov ax,ss:[0]

mov ax,cs:[0]

例如""前面的"ds","es","ss","cs"就是段字首,一般用來明確的指向乙個記憶體單元。

14.寫指令的時候盡量用一段安全的記憶體空間,具體做法是使用前可以用d命令檢視該段記憶體空間是否為0,否則有可能引起除錯出錯;

實驗41.程式設計,向記憶體0:200-0:23f依次傳送資料0~63(3fh)。

assume cs:code

code segment

mov ax,0

mov ds,ax

mov bx,200h

mov cx,64

mov al,0

s:mov [bx],al

inc bx

inc al

loop s

mov ax,4c00h

int 21h

code ends

end2.程式設計,向記憶體0:200-0:23f依次傳送資料0~63(3fh),只能使用9條指令。

assume cs:code

code segment

mov ax,20h//換一種方法寫段的起位址,為的是[bx]直接可以拿來用,而不用再次

賦值或者清零

mov ds,a

xmov bx,0

mov cx,64

s:mov [bx],bl//用bl給bx賦值,可以看做是值的傳遞

inc bx//換成bl也可以

loop s

mov ax,4c00h

int 21h

code ends

end3.補全下面的程式,其功能是將

「mov ax,4c00」之前的指令複製到記憶體

0:200處。

assume cs:code

code segment

mov ax,cs//由於複製的是記憶體中的資料,而cs:ip

指示了記憶體中的

位址,所以將cs的值傳遞給ax。

mov ds,ax

mov ax,0020h

mov es,ax

mov bx,0

mov cx,17h//前面的源程式在記憶體中總共佔了23位元組,這個是將源程式

編譯連線之

後用debug裡面的u命令檢視即可

s:mov al,[bx]

mov es:[bx],al

inc bx

loop s

mov ax,4c00h

int 21h

code ends

end

王爽 彙編第五章

記憶體單元資料 1記憶體單元位址,2記憶體單元的長度 型別 bx 模擬 0 loop 表示迴圈的意思 的解釋 20000h 表示記憶體20000h單元的內容,中的記憶體單元的位址為實體地址 ds 16 20000h對應的實體地址中的內容 的三種型別 1.暫存器名,2 段暫存器名,3 記憶體單元的實體...

組合語言 王爽 學習筆記

1 mov a,b a b不能同時為一記憶體位址!2 bx bp si di 在 中,這4個暫存器可以單個出現,或只能以4種組合出現 bx和si bx和di bp和si bp和di。如組合 bx si idata 就是合法的。另外,順便說明一點,si di不能分成兩個8位暫存器使用。3 div指令 ...

組合語言 王爽 筆記

關於pop的知識 1.出棧後,ss sp指向新的棧頂,pop操作前的棧頂元素中的資料仍然存在,但是,它已不再棧中 2.ss和sp只記錄了棧頂的位址,依靠ss和sp可以保證在入棧和出棧時找到棧頂 3.當棧滿的時候再次使用push指令入棧,棧空的時候再次使用pop指令出棧,都將發生棧頂越界問題,它是非常...