組合語言試卷

2023-01-19 06:42:03 字數 5399 閱讀 5998

2010-2011組合語言程式設計期末試卷a卷

一、填空題(每空1分,共計10分)

1.「mov ax,0」可暫存器ax清0。另外再寫出三條可使暫存器ax清0的指令。

(1(2(32.標號可以有兩種型別屬性。它們是___ ___和____ ___。

3.程式設計的三種基本結構是

4.分別用一條語句實現下述指明的功能

(1)雙字變數dwvar存放的位址指標送es和si

(2)位址表示式var[4]的偏移位址送字變數addr

二、判斷下列指令的正確性。如果錯誤,請指出錯誤的原因。(每題1分,共計10分)

(1)mov cx,dl

(2)xchg [si],3

(3)mov ax, bx+3

(4)pop cs

(5)shl ax, cx

(6)mul 16

(7)and 7fffh,ax

(8)mov cs,ax

(9)sub [si],[di]

(10)mov [si], 20h

三、簡答題(每題5分,共計20分)

1. 簡述指令and和test、not和neg之間的區別?

2. 簡述段內轉移和段間轉移的區別?

3. 儲存器定址方式可分為哪幾種?儲存單元的有效位址有什麼意義?

4. rep字首的作用是什麼?能否用指令rep lodsb讀取ds:si所指記憶體中的每個字元來進行處理?若不能,試說明原因。

四、指令分析題(每題10分,共計20分)

1. 下列程式段中,各指令執行後ax、cf、of、zf和sf的內容如何變化。

mov ax, 0

dec ax

not ax

and ax, 0ffffh

cmp ax, 0ffffh

sub ax, 1200h

mov cl , 5

sar ax, 1

sar ax, cl

add ax, 0ffffh

neg ax

2. 假設各暫存器及實體地址中的內容如下,(ds)=2000h,(bx)=0100h,(si)=0002h,(20100h)=12h,(20101h)=34h,(20102h)=56h,(20103h)=78h,(21200h)=2ah,(21201h)=4ch,(21202h)=b7h,(21203h)=65h,指出各條指令源運算元的定址方式,以及完成後ax暫存器中的內容

(1mov ax,1200h

(2mov ax,bx

(3mov ax,[1200h]

(4mov ax,[bx]

(5) mov ax,1100h[bx]

(6mov ax,[bx][si]

(7mov ax,1100h[bx][si]

五、程式分析題(每題5分,共計20分)

1.下列程式段執行後,y單元開始的儲存區存放的資料是什麼?

x db 78h

y db 3 dup(?)

…lea si, y

mov cx, 3

mov al, x

lp: sar al, 1

mov [si], al

inc si

loop lp

2.分析下列程式段的功能

or dx, dx

jns l1

not dx

not ax

add ax, 1

adc dx, 0

l1:3.下列程式片段完成什麼功能,試採用堆疊的操作實現同樣的功能。

xchg ax,[si]

xchg ax,[di]

xchg ax,[si]

4. 下列程式段執行後,dat2的前5個單元的內容是什麼?

dat1 db 『123456789』

dat2 db 10 dup(?)

…lea si, dat1

lea di, dat2

mov cx, dat2-dat1

add si, cx

dec si

lp: mov al, [si]

mov [di], al

dec si

inc di

loop lp

hlt六、程式設計題(每題10分,共計20分)

1.把下列c語言的語句改寫成等價的組合語言程式段(不考慮運算過程中的溢位)

if(a<1 || b/4>10 && c%8==5)

else

其中:變數a、b和c都是有符號的16位整形(int)變數

2. 編寫程式完成求 1+2+3+…+n的累加和,直到累加和超過1000為止。統計被累加的自然數個數從cn字單元,累加和送sum字單元。

2010-2011組合語言程式設計期末試卷a卷參***

一、填空題(每空1分,共計10分)

1.(1) xor ax, ax

(2) and ax, 0

(3) sub ax, ax

2.near, far

3.順序結構、分支(條件選擇)結構、迴圈結構

4.(1)les si,dwvar

(2)mov addr, offset var[4]

二、判斷下列指令的正確性。如果錯誤,請指出錯誤所在(每題1分,共計10分)

(1)錯誤!暫存器大小不一致

(2)錯誤!不能與立即數進行交換

(3)錯誤!表示式錯誤

(4)錯誤!pop指令的物件不能是cs,push可以

(5)錯誤!第二個運算元,表示移動次數。可以使用cl,但不能是cx

(6)錯誤!乘法指令運算元不可以使用立即數

(7)錯誤!立即數不能是目的運算元

(8)錯誤!**段暫存器cs不能為目的運算元

(9)錯誤!如果指令的運算元有兩個,只能有乙個是儲存器運算元

(10)錯誤!必須說明目的運算元資料儲存型別

三、簡答題(每題5分,共計20分)

1. 簡述指令and和test、not和neg之間的區別?

答:test檢測位指令把兩個運算元進行邏輯「與」(and)運算,並根據運算結果設定相應的標誌位。test指令並不儲存該運算結果,不會改變指令中的運算元。

與and在運算結果的處理上有不同。

neg求補指令,功能相當於「運算元=0-運算元」,即改變運算元的正、負號。not是邏輯非運算,作用是將運算元按位求反。

2. 簡述段內轉移和段間轉移的區別?

答:段間轉移和段內轉移的本質區別是有沒有對cs進行設定,如果設定了新的cs**暫存器,程式將轉移到另乙個段中,即實現了段間轉移;否則cs和原來一致,則在同一**段中。

3. 儲存器定址方式可分為哪幾種?儲存單元的有效位址有什麼意義?

答:儲存器定址方式可分為7種:

(1)立即定址;

(2)直接定址;

(3)暫存器定址;

(4)暫存器間接定址;

(5)暫存器相對定址;

(6)基址加變址定址;

(7)相對基址加變址定址;

儲存器的有效位址是乙個16位的無符號數;用來表示儲存單元的位址與所在段的起始位址的差值,又稱稱偏移位址(offset)。

4. rep字首的作用是什麼?能否用指令rep lodsb讀取ds:si所指記憶體中的每個字元來進行處理?若不能,試說明原因。

答:rep是重複字首指令,其作用是重複其後字串操作指令,重複次數由cx決定。

採用rep lodsb雖然可以讀取ds:si所指記憶體中的一連串字元,但是由於其他指令無法處理取出的所有資料。指令結束後留在al中的僅為最後乙個取出的字元的ascii碼。

四、指令分析題(每題10分,共計20分)

1. 下列程式段中,各指令執行後ax、cf、zf和sf的內容如何變化。

mov ax, 0

1)(ax) =0, cf、zf、sf無影響

dec ax

2)(ax)=0ffffh, cf無影響, zf=0, sf=1

not ax

3)(ax)=0, cf無影響, zf=0, sf=1

and ax, 0ffffh

4)(ax)=0, cf=0, zf=1,sf=0

cmp ax, 0ffffh

5)(ax)=0, cf=1, zf=0, sf=0

sub ax, 1200h

6)(ax)=0ee00h, cf=1, zf=0, sf=1

mov cl , 5

sar ax, 1

7)(ax)=0f700h, cf=0, zf=0, sf=1

sar ax, cl

8)(ax)=0ffb8h, cf=0, zf=0, sf=1

add ax, 0ffffh

9)(ax)=0ffb7h, cf=1, zf=0, sf=1

neg ax

10)(ax)=0049h, cf=1, zf=0, sf=0

2. (1)立即定址方式 (ax)=1200h

(2)暫存器定址,(ax)=0100h

(3)直接定址,(ax)=4c2ah

(4)暫存器間接定址,(ax)=3412h

(5)暫存器相對定址,(ax)=4c2ah

(6) 基址加變址定址,(ax)=7856h

(7) 相對基址加變址定址,(ax)=65b7h

五、程式分析題(每題5分,共計20分)

1. 3ch ,1eh,0fh

2. 對32位數(高位在dx,低位在ax)求補(絕對值)

3. 程式實現[si]和[di]中的內容交換;ax中內容不變;

堆疊操作指令完成同樣功能,如下所示:

push [si]

push [di]

pop [si]

pop [di]

4. 39h,38h,37h,36h,35h。 (數字『98765』對應的ascii碼)

六、程式設計題(每題10分,共計20分)

1. 參考程式

a dw ?

b dw ?

c dw ?

…mov bx, b

mov cl, 2

sar bx, cl計算b/4,結果存在bx中

mov cx, c

and cx, 0007h計算c%8,結果存在cx中

cmp bx, 10

jbe next1

cmp cx, 5

jne next1

next2a<1||b/4>10&&c%8==5)計算為真

mov bx, b

mov ax, 20

add ax, bx

mov a, ax

inc bx

mov b, bx

mov cx, c

sal, cx, 1

sal, cx, 1

mov c, cx

jmp next3

組合語言B試卷答案

一 單項選擇題 每小題1分,共30分 1 c二 填空 每空1分,共10分 1 運算元 2 59 3 有符號數 有溢位 運算結果超出機器能表示的範圍 4 dd 56789a0bh 5 10111111 6 07 128 8 實體地址 9 and al,3f 10 1 三 判斷題 每小題1分,共10分 ...

組合語言 第3章巨集組合語言

第三章巨集組合語言 一 巨集組合語言格式 3.1.1 指令語句格式 指令語句的一般格式如下 標號 指令助記符運算元 注釋 1 標號 標號是機器指令語句存放位址的符號表示,代表該指令目標 的第乙個位元組位址,後面必須緊跟冒號 2 指令助記符 指令助記符為語句的核心成分,表示了該語句的操作型別。3 運算...

成教《組合語言》試卷B答案

佛山科學技術學院2007 2008學年第二學期 組合語言程式設計 課程期末考試b卷試題解答及評分標準 專業 班級任課教師 雷曉平 一 單項選擇題 每小題1分,共15分 1 b 2 b 3 c 4 a 5 b 6 c 7 a 8 d 9 b 10 c 二 填空題 每空1分,共10分 1 0 1 2 3...