組合語言程式設計知識點

2021-09-18 21:28:48 字數 5067 閱讀 3342

(1)與資料有關的定址方式(立即定址方式,暫存器定址方式,直接定址方式,暫存器間接定址方式,暫存器相對定址方式,基址變址定址方式,相對基址變址定址方式)和與轉移位址有關的定址方式(段內直接定址,段內間接定址,段間直接定址,段間間接定址). 資料傳送指令(通用資料傳送指令、累加器專用傳送指令、輸入輸出指令)、算術指令(加法指令、減法指令(*加減指令對4個標誌位的影響[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的運算元必須是累加器)、除法指令(*被除數在累加器中,除法指令執行完以後,商和餘數在?

))、邏輯指令(邏輯運算指令(*xor,and,or,test指令及指令執行後對標誌位的影響)、移位指令)、串處理指令(與rep相配合工作的movs、stos、lods指令,與repe/repz和repne/repnz聯合工作的cmps、scas指令)、控制轉移指令(無條件轉移指令、條件轉移指令、迴圈指令、子程式呼叫指令、中斷)。

1、假定(ds)=2000h,(es)=2100h,(ss)=1500h,(si)=00a0h,(bx)=0100h,(bp)=0010h,資料段中變數名val的偏移位址為0050h,試指出下列源運算元欄位的定址方式是什麼?其實體地址值是多少?

(1) mov ax, 0abh立即定址運算元在指令中

(2) mov ax, bx暫存器定址運算元為(bx)=0100h

(3) mov ax, [100h] 直接定址 20100h

(4) mov ax, val直接定址 20050h

(5) mov ax, [bx] 暫存器間接定址 20100h

(6) mov ax, es:[bx] 暫存器間接定址 21100h

(7) mov ax, [bp] 暫存器間接定址 15010h(bp預設段為ss)

(8) mov ax, [si] 暫存器間接定址 200a0h

(9) mov ax, [bx+10] 暫存器相對定址 20110h

(10) mov ax, val[bx] 暫存器相對定址 20150h

(11) mov ax, [bx][si] 基址變址定址 201a0h

(12) mov ax, val[bx][si] 相對基址變址定址 201f0h

2、假定 (ds)= 1000h, (ss)= 2000h,(si)= 3000h,(bx)= 0100h,(bp)= 0200h,資料段中變數名為ovar的偏移位址值為0050h,請指出下列源運算元的定址方式是什麼?其實體地址值是多少?

1. mov dx, [1000h] 直接定址 11000h

2. mob dx, [bx暫存器間接定址 10100h

3. mov dx, ovar[bp] 暫存器相對定址 10250h

4. mov dx, [bx+si] 暫存器相對定址 13100h

5. mov dx, ovar[bx][si] 相對基址變址定址 13150h

(2)資料傳送指令(通用資料傳送指令、累加器專用傳送指令)

算術指令(加法指令、減法指令(*加減指令對4個標誌位的影響[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的運算元必須是累加器)

除法指令(*被除數在累加器中,除法指令執行完以後,商和餘數?)

邏輯指令(邏輯運算指令(*xor,and,or,test指令及指令執行後對標誌位的影響)、移位指令)

串處理指令(與rep相配合工作的movs、stos、lods指令,與repe/repz和repne/repnz聯合工作的cmps、scas指令)

控制轉移指令(無條件轉移指令、條件轉移指令、迴圈指令、子程式、中斷)

1、將首位址為string的位元組陣列的第7個元素(編號從0開始)送到累加器al中,用si暫存器相對定址的指令為: mov si 6h 和 mov al string[si] 。

2、下列ascii碼串(包括空格符)依次儲存在起始位址為cstring的位元組單元中:

cstring db 『based addressing』

請編寫指令將字串中的第1個和第7個字元傳送給dx暫存器。

mov dh csrting

mov dl csrting+7-1

3、如果jmp指令採用段間間接定址,那麼轉移位址存放在4個相鄰位元組單元中,其中前兩個位元組存放的是偏移位址 ,而後兩個位元組存放的是段位址 。

4、重複字首指令rep的重複次數由計數暫存器count reg 決定。

5、在串操作指令前使用重複字首指令repe,終止串的重複操作條件是 count reg=0 或 zf=0

6、當標誌位 cf =1時表示無符號數運算產生溢位,而當標誌位 of =1是表示帶符號數運算產生溢位。

7、al和var位元組單元中分別存放乙個帶符號數,執行cmp al,var時,如果al>var,那麼溢位位和符號位的關係是。(of=sf,還有發生溢位的情況,al-val儘管為負,但of=1,說明是由於結果太大(負的太大)超出了帶符號數的表示範圍使得符號位為負的,正確的結果應該為正。)

8、迴圈控制指令loopnz/loopne控制迴圈繼續執行的條件是zf=0且countreg≠0。

9.設sp=4ah,執行段內返回指令ret 4後,sp的值是  50h  。

10.條件轉移指令的轉移範圍?(只能做段內的短轉移)

11.轉移指令jmp near ptr proca的轉移範圍是 8000h~7fffh    。

12.計算機系統通過主機系統和外部裝置通訊。

dos系統功能呼叫方式為:(1)設定入口引數;(2)中斷程式編號送 ah 暫存器後執行int 21h。(教材page320,page335)

13.閱讀下面的程式片段,並分析執行結果。

mov ax,723ah

mov bx,0c86bh

sub al,bl

sbb ah,bh

xor al,01h

adc ax,0

執行該程式片段後:

(ax)= 0a9ceh ,cf = 0 ,of = 0 。(xor使cf/of為0)

(1)偽操作:資料定義及儲存器分配偽操作,表示式賦值偽操作equ,段定義偽操作、程式開始和結束偽操作、對準偽操作、基數控制偽操作。

(2)組合語言程式格式:組合語言源程式中的每個語句的組成格式:名字項、操作項(包括?)、運算元項和注釋項

1、在某資料段內定義變數

buffer db 30 dup (20)

表示式 type buffer的值為 1 。

2.bufl db 3 dup(0,2 dup(1,2),3)

count equ $-bufl

變數count的值是 18 。

3.data segment

db 2eh dup(0

var1 db 12h,34h

var2 db 10h dup(o)

adr1 dw var1,var2

data ends

為使adr1+2字儲存單元中內容為0030h,橫線上應選用的語句是_org$+30h_______。

4.buf dw 4,6,$+2,若彙編時buf分配的偏移位址是0042h,則彙編後buf陣列中第三個字的值是 0048h 。

5、設某資料段:

data segment

org 20h

num1=8

num2=num1+10h

da1 db 『computer』

db 0ah,0dh

count equ $-da1

da2 dw 『co』,』mp』,』ut ,』er』

data ends

請回答:(1)da1的偏移位址是: 20h 。

(2)count的值是0ah。

(3)da2+5位元組單元的內容是 『u』的ascii碼。(dw/db儲存字串的方式不同)

6、執行下列指令序列後,ax暫存器中的內容是什麼?

table dw 10,20,30,40,50

entry dw 3

……mov bx, offset table

add bx, entry

mov ax, [bx]

1e00h

7. 下面指令執行後,變數dab中的內容是__0f5h______。

daw dw 2a05h

dab db 0fah

:mov al,byte prt daw

sub dab,al

(1)迴圈程式結構,分支程式結構

eg. beg為起始位址的儲存區域中存放有100個位元組資料,現將其首、尾顛倒過來,重新排放這100個位元組資料。請在空行處各填上一條指令完善該程式。

mov cx,31h

lea si,beg

mov di,si

add di,99

don:mov al,[si]

xchg al,[di

mov [si],al

inc si

dec di

loop don

1、閱讀如下程式段:

adrr db xxh,xxh,……,xxh

num equ $-adrrnum為adrr陣列空間大小

rett db ?

…mov cx,numcx中存放adrr陣列空間大小

mov bx,-1

don:

inc bxbx值增一

cmp adrr[bx],0 ;訪問adrr陣列中偏移位址為bx的值並與0比較

loopz don若大於0則繼續don迴圈

jnz next否則轉至next

mov bl,offh若迴圈完未轉至next,則bl中為offh

next:

mov rett,bl將bl中址送rett

hlt請回答(1)該程式完成的功能是什麼?

在以adrr為起始位址的陣列中查詢第乙個非0資料

(2)程式執行後rett位元組單元中的內容是什麼?

若找到非0資料,則將第乙個非0資料在陣列中的偏移量送入rett單元中,若未找到,則將0ffh送入rett單元中。

組合語言程式設計

實驗報告 軟體學院 一 實驗目的與意義 理解並熟練掌握組合語言程式設計過程中的編輯 彙編 鏈結和除錯等各個步驟,提高對彙編課程內容的理解和組合語言的掌握,通過上機練習加深對課程內容的理解和掌握。通過組合語言編制的程式上機除錯 執行檢驗程式設計是否正確。熟悉和掌握編輯 彙編 連線和除錯四個實用程式的使...

三組合語言程式設計

軟體要求 win98或win2000 masm5.0或masm6.0 含masm link debug等程式 硬體要求 ibm pc及相容機 實驗一非壓縮bcd碼乘法 一 實驗目的 學習程式設計的基本方法和技能,熟練掌握用組合語言設計 編寫 除錯和執行程式的方法。為後續課程打下堅實的基礎。同時熟練掌...

組合語言程式設計A卷

2011級組合語言程式設計課程試題 a卷 合分人複查人 1 用組合語言書寫的程式叫做masm要求該檔案的副檔名是編寫32位windows應用程式應選擇儲存模型。2 組合語言語句有兩種,分別是和3 除外設資料外的資料定址方式有3類,分別稱為 和定址。4 進行windows應用程式開發時,需要庫檔案,執...