(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應用程式開發時,需要庫檔案,執...