8086組合語言程式格式答案

2021-03-04 09:39:16 字數 3563 閱讀 3678

一.單項選擇題

1.c 2.d 3.a 4.b 5. c 6.d 7.d 8.c

9.a 10.b 11.b 12.d 13.b 14.c 15.a 16.c

17.b 18.b 19.a 20.a

二.多項選擇題

1.ab 2.abd 3.abc 4.cd 5.ab

6.abc 7.ac 8.ad 9.bc 10.bcd

三.填空題

1.指示性語句(偽指令),指令語句

2.偏移位址

3.偏移位址

4.近程(near)、遠端(far)

5.位元組(byte)、字(word)、雙字(dword)

6.可以

7.不分配

8.lea bx,a

9.34h

10.64

11.42h

12.定義,報錯

13.「段名 segment」,「段名 ends」

14.「過程名 proc」,「過程名 endp」,閱讀,理解

15.「end [表示式]」

16.不予考慮,用空格

17.ma**(彙編),不能,link(連線)

18.引號,db

19.組合語言源程式,a**

20.多

四.簡答題

1.(1)a db 12h,34h,56h,78h

(2)b dw 12,1638h,0e52h

(3)c db 『***puter』

(4)d db 100 dup(0)

(5)e dw d

2.(1)116

(2)0008h

(3)108

(4)43h

(5)0302h

3.(1)18

(2)11

(3)10

(4)0006h

(5)46h

4.(1)0336h

(2)0007h

(3)90

(4)43h

(5)13h

5.(1)lea bx,a2 或 mov bx,offset a2

(2)mov a1+5,byte ptr 41h

(3)mov al,byte ptr a2+2

(4)mov ax,a2+2

(5)c equ a3-a1 或 c = a3-a1

6.(1)mov al,byte ptr c+1

(2)100

(3)4

(4)1

(5)1

(6)104

(7)0004

(8)03h

7.(1)mov al,b+4

(2)mov ax,word ptr d+1

(3)mov al,byte ptr a+2

(4)4142h

(5)16h

8.data segment

tab db 『0123456789』

str db 『***puter』

buf db 100 dup(『 』)

count = $-buf

ad dw tab

d dw 15h,2,3

data ends

9.dseg segment

str db 『abcde』

d dw 372h,2673h,6852h

buf db 10 dup( 0)

e dd buf

f = 5

dseg ends

10.匯程式設計序處理巨集指令時,是把巨集定義的巨集體插入到巨集呼叫處,有多少次呼叫就插入多少次。所以巨集指令並沒有簡化目標程式,它相對於程式呼叫而言,比子程式呼叫占用的記憶體單元多。

匯程式設計序處理子程式時,每次呼叫並不需要把子程式的**插入到主程式中,大大地節省了記憶體空間,但每次呼叫子程式時都要轉子程式、保護現場、呼叫結束後還要恢復現場並返回。顯然,它花費的時間比巨集呼叫花費的時間多。

如果替代的程式段不長,呼叫的次數不多,以速度為主要因素考慮時,通常採用巨集指令。如果替代的程式段較長,以節省記憶體空間為主要考慮因素時,通常採用子程式。

11.(1)列表檔案(擴充套件名為 .lst)和交叉引用檔案(擴充套件名為 .crf)

(2)列表檔案給出了源程式中的每條語句及其對應的目標**,以及每條語句在段內的偏移位址,以便使用者檢查和閱讀。交叉引用檔案給出了源程式中定義的符號值和程式中引用這些符號的基本情況。

12.巨集展開就是用巨集定義的巨集體取代源程式中的巨集指令,同時用巨集呼叫中的實元來取代定義中的變元。在取代時,實元與變元一一對應時,就將第乙個實元取代第乙個變元,第二個實元取代第二個變元,其它依此類推。當實元個數多於變元個數時,則多餘的實元不予考慮,當實元的個數少於變元個數時,則多餘的變元作空處理。

五.判斷改錯題

1.(1)段定義語句的開始正確,而結束語句「data end」錯,應改為「data ends」。

(2)a變數的定義錯,因為123h超出乙個位元組,應改為dw。

(3)b變數的定義錯,因為45678h超出乙個字,應改為dd。

(4)c變數的定義錯,因為多字元的字串應用db。

(5)d變數的定義正確。

(6)e變數的定義正確。

2.(1)錯, mov ax,word ptr buf1

(2)對

(3)對

(4)錯, lea bx,buf2

(5)錯, mov ax,word ptr buf3

(6)錯, mov byte ptr[bx],type buf3

(7)對

(8)對

(9)錯, mov ax,buf2

mov buf6,ax

(10)對

3.(1)錯, data segment

data ends

(2)錯, code segment

code ends

(3)錯, ma proc

endm

(4)錯,stack segment stack 『stack』

(5)錯,將c db 123h 改為 c dw 123h

(6)對

六.程式分析題

1.從表a中查詢b變數中的兩個數的對應值送c變數中儲存。

2.將str中的十進位制數經過查表轉換成ascii碼並送buf儲存。

3.將a中的4個位元組數與b中的4個位元組數(多精度)相加,並將結果存放在c中。

4.計算16位無符號數(a+b+c)/d的表示式,結果的商放在e中,餘數放在e+2中。

5.將a位元組變數的數轉換成2位十六進製制的ascii碼送c中儲存,並在顯示器上顯示

字串「num=36h」。

6.c前面的5個位元組單元中的內容依次為01h,23h,04h,56h,07h

7.(1)統計a緩衝區中小於100的無符號數,b中存放統計的個數。

(2)2

8.(1)比較a和b中的兩個有符號數,將較大數存放在a和c中,較小數存放在b中。

(2)(a)=67h,(b)=23h,(c)=67h

9.+ mov dx,buf1

+ mov ah,9

+ int 21h

+ mov dx,buf2

+ mov ah,9

+ int 21h

10.將buf中的100個位元組的內容相加,並將相加的結果存放在c中。

組合語言小程式例子

1.編寫統計ax中1 0個數的源程式。1的個數存入ch,0的個數存入cl。code segment assume cs code start mov cx,0 mov dx,17 aa1 sub dx,1 jz aa3 shl ax,1 jnc aa2 inc ch jmp aa1 aa2 inc ...

8086組合語言沈美明溫冬娟版複習附答案

組合語言複習資料 第1 2章微處理器的結構和儲存器組成 1 程式語言分哪三類?機器語言 組合語言和高階語言 2 二進位制數轉十進位制 十六制數 十進位制數轉二進位制數 十六制數轉十進數。3 十進位制數的壓縮和非壓縮bcd碼表示方法。4 計算機顯示 列印字元的編碼一般採用什麼碼 asc 碼 5 808...

組合語言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分 ...