




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄實 驗 須 知.2實 驗 一 DEBUG調試程序的使用 .3實驗二 用 DEBUG程序調試程序功能段.12實驗三 數據串傳送和查表程序 .19實驗四 匯編語言上機過程及屏幕字符顯示程序 .22實驗五 條件轉移指令 .27實驗六 循環程序是設計 .30實驗七 子程序設計 .33附錄:匯編語言試卷一 .342004 年 10月匯編語言試題 .39浙江省 2004年 1 月匯編語言程序設計試題.45全國 2005年 10月匯編語言程序設計試題 .50匯編語言試卷一答案 .571實 驗 須 知一、 預習要求1實驗前認真閱讀實驗教程中有關內容,明確實驗目的和實驗任務。2每次實驗前應有預習報告,未預習
2、者不允許參加實驗。預習報告中:對程序設計實驗,要求畫出程序流程圖,編好上機程序;二、 實驗要求1實驗是學習“匯編語言程序設計”這門課程的重要環節,實驗課請勿遲到,缺席。2上機時要遵守實驗室的規章制度,愛護實驗設備。要熟悉與實驗相關的系統軟件(如編輯程序、匯編程序、連接程序和調試程序等)的使用方法。在程序的調試過程中,有意識地學習及掌握 DEBUG程序的各種操作命令,以便掌握程序的調試方法及技巧。3程序調試完后,須由實驗輔導教師在機器上檢查運行結果。4每個實驗完成后,結果寫入預習報告,完成分析,上交實驗教師。三、 報告要求每次實驗后,應遞交一份實驗報告,報告中應包括下列內容:1實驗名稱、實驗人姓
3、名、學號、班級、所用的設備號。2實驗目的、任務。34記錄和分析實驗結果。5據實驗目的認真做小結。2實 驗 一 DEBUG調試程序的使用一、 實驗目的1學習使用 DEBUG程序的各種命令。2利用 DEBUG學習了解計算機取指令、執行指令的工作過程。3掌握用 DEBUG調試自編程序的方法。二、 實驗準備預備知識:DEBUG的使用.在以后的所有實驗中,都將用到 DEBUG程序,首先學習一下他的主要用法。(一)什么是 debug?Debug 是 DOSWINDOWS都提供的實模式(8086方式)程序的調試工具。使用它,可以調試 CPU 各種寄存器中的內容、內存的情況和在機器碼級跟蹤程序運行。(二) 我
4、們用到的 DEBUG功能 用 DEBUG的 R 命令查看、改變 CPU中寄存器的內容; 用 DEBUG的 D 命令查看內存的內容; 用 DEBUG的 E 命令改寫內存的內容; 用 DEBUG的 U命令將內存中的機器指令翻譯成匯編指令; 用 DEBUG的 T 命令執行一條機器指令; 用 DEBUG的 A命令以匯編指令的格式在內存中寫入一條機器指令;DEBUG的命令比較多,有 20 多個,這是常用的 6 個。(三) 進入 DEBUGDEBUG 是在 DOS 方式下使用的程序。我們在進入 DEBUG 前,應先進入3到 DOS 方式。在 WINDOWS下進入 DOS方式的方法:在【開始】菜單選擇運行命
5、令,如圖 1.1,打開【運行】框如圖 1.2 輸入COMMAND,點擊確定按鈕圖1.2在文本框中輸入COMMAND命令圖 1.1 選擇【運行】命令進入 DOS后運行 DEBUG程序如圖 1-3圖 1.3運行 DEBUG程序圖 1.4 DEBUG編輯界面啟動成功,顯示連接符“-”4(四) 關于使用 DEBUG命令的幾點說明(1)在提示符“-”下才能輸入命令,在按“回車”后該命令才開始執行;(2) 命令是單個字母,命令和參數的大小寫可混合輸入;(3) 可用 F1 F2 、F3 、INS、DEL、等編輯鍵,編輯本行命令(4) 當命令出現語法錯誤時,將在出錯位置顯示“ ERROR”(5) 可用ctrl
6、+c 或ctrl+break ctrl+s 來暫停屏幕顯示(當連續不斷地顯示信息時)(6)DEBUG使用的數以十六進制來表示;(7)DEBUG中的命令不區分大小寫;(五)幾個常用命令1、R 命令(Register)格式1:R功能1:顯示所有寄存器中的內容.圖1.5 用命令顯示寄存器的內容格式2:R 寄存器名顯示修改寄存器的內容功能2:例如打入:-R AX系統將響應如下:AX 0000:表示 AX當前內容為 0000,此時若不對其作修改,可按ENTER鍵,否則,打入修改后內容。如圖 1-6:5圖1.6用R命令修改寄存器的內容2、 D 命令用 DEBUG的 D命令查看內存的內容;功能: 顯示內存單
7、元內容輸入D命令,執行結果如圖1.7圖1.7 命令執行結果說明:(1) XXXX:YYYY-前者是內存單元的段地址,后者是內存單元的偏移量;(2) 中間顯示區域時內存單元內容(十六進制形式),每行顯示16個字節的內容;(3) 右邊以“字符”形式顯示內存單元值。格式一:D起始位置DEBUG從起始位置顯示128個字節的內容。輸入命令D 0C0B:100執行結果如圖:1.8圖1.8 D :100命令的執行結果格式二:D 起始位置結束位置DEBUG 從起始位置一直顯示到結束位置。輸入命令D :100 11F,執行結果如圖1.9 所示6圖命令D DS:100 11F 執行結果格式三; D 起始位置 L
8、長度DEBUG 從起始位置開始顯示指定長度的內容。輸入命令D 100 L10執行結果如圖1.10圖1.10命令 D :100 L1命令執行結果3E 命令用 DEBUG的 E 命令改寫內存的內容;格式一:E 起始地址 字節值表功能:用字節值表中的值替換從“起始地址”開始的內存單元內容或E 起始地址輸入命令:E1AF5010012345678(回車);在輸入命令D1AF5:0100 ,執行結果如下圖1.11:7圖1.11命令D 1AF5:0100 ,執行結果格式二:E 起始地址功能:采用提問的方式一個一個地改寫內存單元的內容圖1.12 命令 E 1AF5:0100執行結果(4)A命令功能: 輸入匯
9、編指令。格式:A 起始地址首先用A命令以匯編語言的形式輸入程序,以D命令顯示內存,從下圖可以看到我們輸入的是匯編指令,DEBUG 把它們翻譯成機器指令,以機器碼寫入內存。圖1.13 用A命令寫入程序圖1.14 從一個預設的地址開始輸入指令()U 命令功能:反匯編,顯示機器碼所對應的匯編指令格式地址功能1:從指定地址開始反匯編8格式2:U 地址范圍功能2:對指定的地址范圍進行反匯編.圖1.16 U100 108 命令執行結果()T命令格式:T=地址功能:從指定地址起執行一條語句后停下來,顯示所有寄存器的內容及標志位的值與下一條將要執行的指令9圖1.17 命令執行結果格式:T=地址x功能:從指定的
10、地址開始跟蹤x 條指令圖1.18 命令T=100 2 執行結果()Q 命令功能:退出DEBUG程序,返回DOS圖1.19 Q命令執行結果三、實驗任務1、 DEBUG程序的各種命令,重點是命令 D ,T,E 命令的使用2、 按照以下步驟輸入一系列的命令和指令,編寫出簡單的匯編語言指令,并完成指定任務。debug-e200XXXX:0200 XX.10 XX.20 XX.30 XX. 40 (將 203H 內容改為10H40H )10-e150XXXX:0150 XX.00 XX.01-a100XXXX:0100XXXX:0102XXXX:0104XXXX:0107XXXX:010AXXXX:01
11、0CXXXX:010EMOV AX,CS(01)(02)(03)(04)(05)(06)(07)(08)(09)(10)(11)(12)(13)MOV DS,AXMOV BX,100MOV AX,150ADD BX,AXMOV AL,BXADD AL,BX+1XXXX:0111 MOV SI,2XXXX:0114MOV AL,BX+SIXXXX:0116 MOV AH,0XXXX:0118MOV CH,0XXXX:011A MOV CL,BX+SI+1XXXX:011DXXXX:011FADD AX,CXINT 20(1) 用 D命令顯示 XXXX:0200 -XXXX:0203單元內容(2)
12、 指出以上匯編語言指令中源操作數使用的是什么尋址方式?(3) 用 T命令單步跟蹤,觀察指令的執行結果,并記錄3、 查看內存單元內容,pc機主板上的 ROM中寫有一個生產日期,在內存FFF00H-FFFFFH 的某幾個單元中,請找到這個生產日期并試圖改變它4、 向內存從 B8100H開始的單元中填寫數據,如:-e b810:0000 01 01 02 02 03 03 04 04四、 實驗報告要求把實驗任務中要求的各項記錄到預習報告上,完成預習報告,作為實驗報告上交五、 實驗小結實驗報告的最后一項,寫出本次實驗小結11實驗二 用 DEBUG程序調試程序功能段一 、實驗目的1繼續學習使用 DEBU
13、G程序的各種命令。2利用 DEBUG學習了解計算機取指令、執行指令的工作過程。3掌握 8086/8088 基本指令的使用方法和功能。二 、實驗準備1DEBUG命令學習1 G 命令格式:G=起始地址 斷點地址功能:從起始地址開始執行到斷點地址,如不設斷點地址,則程序一直執行到終止指令才停止。圖 2.1 命令 G=100執行結果2 P命令功能:執行匯編程序,單步跟蹤。與 T 命令不同的是:P 命令不會跟蹤進入子程序或軟中斷。其使用方式與T相同12圖 2.2P命令執行結果從結果中可以看出 P命令不會進入 INT 21 H 軟中斷3N命令功能:指定文件名。為讀/寫文件做準備D200 20FU100 1
14、0CN :R CX:110第一、二條命令的作用是檢查一下剛才編寫的匯編指令,第三條命令的作用是設置存盤文件名為 FIRST。,第四條命令的作用是設置存盤文件大小為 110H個字節,最后一條命令是將文件存盤。執行結果如圖圖 2.3 N : 執行結果文件存盤后,在 DOS 環境下執行FIRST。觀看運行結果,如圖 2.413圖 2.4 文件 FIRST。COM文件執行結果4W命令功能:向磁盤寫內容見“N 命令”5L命令功能:從磁盤將文件或扇區內容讀入內存注意:使用該命令前,必須用 N命令設定文件名N :L U100 命令查看調入程序的匯編代碼,執行結果如圖 2.5圖 2.5 用 L命令跳入程序三、
15、 實驗任務1按照下列給定步驟完成求累加和程序:程序:MOVMOVBX,1000;CX,10AL,0AL,BXBXMOVLOP: ADDINCJ:LOOPNT3LOP步驟:1)用A命令將程序鍵入到100H開始的內存中,在鍵入時記下標號LOP和J的實際地址,在鍵入 LOOP指令時LOP用實際地址值代替。142)用命令 N AA將此程序命名為文件 AA(文件名可任取)。3)用 R命令將 BX:CX改為程序長度值(即最后一條指令后面的地址減去開始地址) ,用 R命令把 BX設為:0000H,CX 設為文件長度。4)用命令 W 100將此程序存到 AA命名的磁盤文件中。5)用命令 Q退出 DEBUG。6
16、)用命令DEBUGAA再次調入DEBUG和文件AA,可用U命令檢查調入程序。若調入 DEBUG時忘了加 AA文件名,可用N命令和L命令將文件調入。7)用 E命令在內存地址 1000H處鍵入 16個數字8)用命令 G=100 J(J用實際地址代替),使程序運行并停在斷點J上,檢查AX,BX的值是否符合你的預計值。9)用T命令運行一步,觀察程序方向(IP值)和CX值是否與你的估計一樣,若不一樣,檢查程序是否有錯。10)重復 G J與 T,再檢查AX是否正確。 J為斷點地址)11)用 G命令使程序運行到結束,檢查 AX值是否正確。2用命令 A 匯編下列指令,判斷指令正誤并說明原因。(1) LEADI
17、,AX(2) MOV DS,2010(3) PUSH AL(4) OUT 900,AL(5) MOV ,03利用 ,G命令,執行下列指令段,注意它們的不同之處。(6) MOV DI,300MOV ,400MOV CX,3CLDREP MOVSBINT 3(7) MOV AH,2MOV ,41INT 21INT 34程序:MOV DI,1000MOV CX,815MOV SI,2000CLCLOP:MOVAL,SIADC DI,ALINC SIINC DILOOPLOPINT 20步驟:1)用 A命令鍵入此程序2)用 E命令在 1000H開始處鍵入一個8字節被加數,在 2000H開始處鍵入一個
18、8字節加數,均為低字節在前面。3)用 G命令運行此程序,并用D命令檢查其結果(存放在哪里?),是否正確?4)將 INT 20H指令改為 INT 3,有何區別?若這條指令不加,行不行?試試。5)請說明這個程序完成的功能是什么?四、 實驗說明1. 初學者在使用 DEBUG命令修改內存或執行程序時,由于多種原因,出現死機是較經常的現象,可按 RESET復位按鈕,重新啟動系統。2. 用連續執行命令 G前 CS和 IP值是否為要執行程序段的首地址,并注意查看執行的指令流程中有無返回 DEBUG INT20T或斷點設置 INT3,否則發出命令后,很容易出現死機,原因是如無程序段使系統返回命令接受狀態,CP
19、U將不斷到內存取指令、執行指令,使作戶失去對系統的控制,出現死機。為避免這種情況,可在用戶程序段的最后加上一條 INT20H指令,或用斷點方式執行。避免出現死機。3. 關于任務 2,在命令 A下匯編各條指令,對于錯誤的指令,DEBUG指令出其錯誤位置,對于正確的指令,將其匯編到相應內存,據此可判斷指令正誤,而具體原因需自己分析。4. 關于任務 3,用A命令匯編好后,用TPG命令分別執行,記錄指令執行前后各寄存器(包括標志寄存器各標志位值)、堆棧指針及堆棧內容變化情況,以及與指令有關內存單元的內容,總結 T和 P執行某些指令的不同之處及適用場合。5. DEBUG 1中的標號LOP和 J 16An
20、extLOOP,JNZ等),在其后直接輸入要跳轉的目的地址。6. 對向前跳轉的指令,輸入程序的過程如下:A MOV CX,10 MOV AL,0 MOV BX,1000 ADD AL,BX INC BX 1270:01001270:01031270:01051270:01081270:010A1270:010B1270:010C1270:101E1270:01101270:0112DEC CXJNZ 0108 MOV BX,AL INT 3用目的地址 0108代替標號 LOP在 LOOP ADDAL,BX這條指令時,不輸入標號 LOP.若是條件轉移指令,注意跳轉范圍應在128127之間,待程序
21、輸入完畢,目的地址明確后,再用命令 A修改跳轉指令。如下程序段,功能是比較 AX和 CX中的兩符號數,將較大的數放在AX和 BX中,較小的數放在CX中。CMPJXAX,CXcontinueXCHG AX,CXcontinue: MOVBX,AX用命令 A輸入程序的過程如下:A CMP AX,CX JG0102 1270:010012700102輸入本條指令的地址0102代替標號 continue1270:0104XCHG AX,CX MOV BX,AX 1270:01061270:0108A 102址修改跳轉指令的目的地JG 0106 1270:01021270:0104輸入目的地址01061
22、7U 1270:0100 L 0 A用命令U查看程序,跳轉正確CMPJGAX,CX01061270:0100 39C81270:0102 7F021270:0104 87C11270:0106 89C3XCHG AX,CXMOV BX,AX五、 問題思考1假設某內存單元的內容為CCH,試問該內容如看作一條指令、看作無符號數、看作帶符號數,那將分別表示什么?不查看教材中DEBUGCCH表示一條什么指令?INT3 204D下知道2在指令 MOVBX,AX 中,操作數BX的尋址方式是什么?在DEBUG下執行完該指令后,如何查看執行結果? 直接 D BX的值3可否隨意在 DEBUG提示符“”后不帶參數
23、發出命令G?什么情G況下使用命令時,可不用“=”給出執行的首地址? 當 cs或ip的值為當前要執行的代碼的首地址時4分析出現死機的幾種情況。如何理解死機現象?試從計算機的工作原理進行解釋。六、 實驗報告1分析任務 2中各條指令錯誤原因。2T P說明命令 和 的差別。3回答問題思考。4針對實驗目的認真做小結。18實驗三 數據串傳送和查表程序一、實驗目的1、堆棧。堆棧指示器 SP和堆棧操作指令 PUSH。POP。2、段寄存器和物理地址計算。3、查表法和查表指令 XLAT。4、數據串傳送程序和數據串傳送指令 MOVS。STOS及重復前輟 REP。5、循環指令 ROL。邏輯與指令 AND和清方向位指令
24、CLD。6、偽操作指令 DB。二、實驗準備1編寫實驗任務要求的程序2學習一下調試方法利用查表方法把 DX的內容(16進制數)轉換成 ASCII碼:1)、用 A命令鍵入下列程序:MOV BX,1000MOV DI,2000MOV CX,4LOP: PUSHCXMOV CL,4ROL DX,CLPOP CXMOV AL,DLAND AL,OFXLAT19CLDSTOSBLOOP LOPINT 202)用 A命令在 1000H處鍵入下列 ASCII碼并用D命令檢查之:DB 0 1 2 3 4 5 6 7 8 9 A B C D E F用 D命令檢查時注意左邊的 ASCII碼值和右邊的字符。3)用 R
25、命令給 DX送一個四位的 16進制數(例 7F8E)。4 T命令逐條運行這程序到 LOOP指令處,觀察并記錄每次運行結果,特別是 SP和堆棧內容(用D命令檢查)5 G命令將此程序運行到結束,并用D命令檢查 2000H處所轉換的結果??勺⒁馄聊挥疫叺?ASCII字符與 DX是否一致。3驗證:數據串搬家程序:1)用 A命令鍵入下列程序:MOV SI,1000MOV DI,1500MOV CX,0FLOP: MOV AL,SIMOV DI,ALINC SIINC DILOOP LOPINT 202)用 A命令 DB偽指令在 1000H鍵入下列字符串:IBM_PC COMPUTER3 G命令運行此程序
26、,并用D命令檢查目的地址處的字符與源串是否一致。4段寄存器概念及字符串傳送指令練習:1)用 A命令鍵入下列程序:MOV SI,020MOV DI,0MOV AX,1000MOV DS,AXMOV AX,1500MOV ES,AXMOV CX,0FCLDREP MOVSBINT 202)用 A命令 DB偽指令在 1000:0000處鍵入字符串IBM_PCCOMPUTER,并用 D命檢查之3)用 D命令檢查 0F00:1000處內容,看是否一樣。為什么?4)用 G命令運行此程序,檢查目的地址 1500:0000處內容。并記下 DS與 ES值。三、實驗任務1 1002H,再運行此程序,看能不能把 1
27、000H開始的 字符串搬到 1002H開始的地方去?2、修改實驗準備(二)程序以做到把 1000H開始的字符串搬到 1002H開始的地方去3、編一程序段,求雙字(DX,AX)的絕對值4、將雙字()左移 4 位。四、實驗報告要求1、各項實驗記錄和思考題。2、要求給出任務 2中要求編寫的程序的清單(修改后)和調試記錄。3、給出任務3,4的程序清單和調試記錄21實驗四 匯編語言上機過程及屏幕字符顯示程序一、實驗目的:1、熟練掌握匯編語言的程序格式,程序設計方法;學會使用 masm6.11對源程序進行編譯、鏈接、調試和運行2、利用 DOS 功能調用 INT21H的2 號和9 號功能進行屏幕顯示的方法。
28、3、利用Break 退出程序的方法及局限性。4、匯編程序的編寫二、實驗準備:1編寫實驗任務要求的兩個程序,畫出流程圖,給出程序清單2學習匯編語言程序的上機過程(1)建立匯編語言程序源文件??墒褂萌魏我粋€文本編輯器(如EDIT.com,源文件,源文件的擴展名通常取為.asm。圖 4.1 用 EDIT 編輯源文件22圖 4.2 EDIT環境下建立的文件(2)匯編文件,形成目標模塊。MASM LT301A。ASM若文件有語法錯誤,據錯誤提示,返回(1圖 4.3 MASM LT301a.asm 執行結果可以看出文件有錯,返回(1 11行,重新編譯圖 4.4 MASM 編譯成功編譯成功。則形成.OBJ
29、目標文件圖 4.5在目錄下看到的目標文件(3)連接目標模塊,形成可執行文件。LINKLT301A。OBJ23圖 4.6 LINK LT301a.obj 命令執行結果若有錯,據錯誤提示,返回(1若無錯,則形成.EXE可執行文件和.MAPDOS映像文件。(4)下直接鍵入可執行文件名,即可執行該程序。LT301A.EXE圖 4.7 運行結果(5) 如果運行結果不對,需調試程序,查找原因。返回步驟(1)查看源文件,查找錯誤,修改文件。若無法通過查看源文件DEBUG下調試.EXE找出錯誤,可在文件,找出錯誤之處,再返回步驟(1)。3. 利用 INT 21 09H號功能調用顯示字符串。驗證以下程序1) 用
30、 A命令在 100H處鍵入下列程序:MOV AH, 9MOV DX,110INT 21INT 202) 用 A命令在 110H處鍵入下列字符串的 ASCII碼:DBThis is a sample!$3) 用 N命令和W命令將此程序(包括數據區)存入文件名為 AA.COM的磁盤文件中。(存入前 BX:CX必須置為文件長度值)。4) 用 Q命令退出 DEBUG。5) 在 DOS命令下打 AA,運行此程序,即在屏幕上顯示This is asample!字符串,若不出現,用 DEBUG檢查程序有無錯誤。244、利用 INT 21H 2號功能顯示字符:1)用 A命令在 100H處鍵入下列程序:XOR
31、DL,DLMOVCX,100AH,2LOP: MOVINT 21INC DLPUSH CXMOV CX,8DELY: PUSH CXMOV CX,256J:LOOP JPOP CXLOOP DELYPOP CXLOOP LOPINT 202)用 G命令運行程序,即在屏幕上依次緩慢的顯示 256個 ASCII字符。仔細觀察每個字符,和 IBM-PC ASCII碼表對照,看 07H-0DH處控制字符顯示結果與表上有何不同?3)按 CTRL+BREAK退出此程序,若一次不行可多做幾次。三、實驗任務12編寫一個簡化的段定義結構程序:Input number:0-9”,然后在下一行顯示輸入 0-9 ER
32、ROR繼續等待輸入數字。編寫一個完整的段定義結構程序:25從鍵盤輸入一個字符串(不超過255 個),將其中的小寫字母轉換成大寫字母,然后按原來的順序在屏幕上顯示。要求對以上兩個程序,進行編譯,鏈接,調試,運行,給出具體步驟四、實驗報告要求:1自編程序清單及調試結果。26實驗五 條件轉移指令一、實驗目的:18088指令:JZ,JNZ,JC,JNC,CMP,SHR。2程序:用字符搜索法確定字符串長度。3程序:16進制數化為 ASCII碼的一般方法。二、實驗準備1(1)編寫實驗任務要求的兩個程序。(2)(3)寫出調試以上程序,即修改程序參數,檢查結果的操作方法。熟悉源程序匯編、連接命令的使用方法即要
33、回答的內容。2驗證以下程序16進制數化 ASCII碼的一般方法(顯示內存內容)1)用 A命令在 100H處鍵入下列程序:MOVSI,0MOVLOP: MOVMOVBL,10DL,SICL,4SHRDL,CLDL,0AJ1CMPJCADD DL,7J1: ADD DL,30MOV AH,2INT 2127MOV DL,SIAND DL,0FCMP DL,0AJCJ2ADD DL,7J2: ADD DL,30MOV AH,2INT 21MOV DL,20MOV AH,2INT 21INC SIDEC BLJNZ LOPINT 202)用 N,W命令將此程序用 CC.COM文件名存入磁盤。3)用 Q
34、命令退出 DEBUG。4)在 DOS命令狀態下直接運行 CC.COM命令文件,應在屏幕上顯示出內存從 0000H開始的 16個字節的內容,若有錯誤,用 DEBUG檢查之。三、實驗任務1自編程序:修改實驗準備程序(二),使除了以 16進制數形式顯示內存內容外,還能在其右邊顯示該16進制碼所對應的ASCII字符,07-0D的控制字符用.代替。2 BUFX、BUFY和 BUFZ是 3個有符號的十六進制數,編寫一個比較相等關系的程序:1)如果這 3個數都不相等,則顯示 02)如果這 3個數中有兩個數相等,則顯示 13)如果這 3個數都相等,則顯示 228四、實驗步驟1)2)3)用 EDIT或其它編輯軟
35、件,編寫.ASM 源程序,對其進行匯編及連接,產生.EXE 文件。對.EXE 文件進行調試運行。用 DEBUG 調試運行。a.b.鍵入不同的字符,分別進行調試。c.在 MS-DOS 下運行這兩個.EXE文件。五、實驗報告要求:1先完成準備實驗2務 2 要求畫出流程圖,給出程序清單,給出調試結果,并存盤3實驗體會。29實驗六 循環程序是設計一、實驗目的:1靈活運用各類許循環指令,掌握循環程序的設計方法2 學會針對不同的問題,選用不同的組織循環的方法。3偽指令 EQU 及操作符 $的使用。4 COM文件的要求和生成過程。二、實驗準備1編寫任務要求的程序2學習 COM文件的生成過程codesegme
36、ntorg 100hassume cs:code,ds:codejmp startmain:arraydwdw1234h,5673h,7fffh,8000h,0dffh0ab5h,0369h,005fh,5634h,9069hcountequ $-arraystart: mov cx,countshr cx,1dec cxmov bl,-1again: mov dx,cxand bl,bljeexit30 xor bl,blxor si,siagain1: mov ax,arraysicmp ax,arraysi+2jle nchgxchg arraysi+2,axmov arraysi,ax
37、mov bl,-1nchg:inc siinc sidec dxjnz again1loop againint 20hendsexit:codeend main1)輸入,匯編并連接此程序。忽略連接時的無堆棧告警。2)用 EXE2BIN將 .exe文件轉換為 。COM文件,命令格式:EXE2BIN? ?.EXE ?.COM3)在 DEBUG下運行此程序,記錄運行結果。4)思考:將轉移指令 JLE改為 JBE,JGE和 JAE,分別運行并記錄排序結果。三、實驗任務1編寫程序:將一個包含有20個有符號數據的數組 arrayM分成兩個數組,正數數組 arrayP 和負數數組 arrayN,并分別把兩個
38、數組中的數據個數顯示出來2編程實現把鍵入的一個字符,用二進制形式( 0/1)形式顯示出它的 ASCII碼31四、 實驗步驟12用 EDIT或其它編輯軟件,編寫.ASM 源程序,對其進行匯編及連接,產生.EXE 文件。3 對.EXE文件進行調試運行。4 在 MS-DOS 下運行這兩個.EXE文件。五、實驗報告要求1 畫出任務 1,2 兩個程序的流程圖,列出相應的程序清單。2 說明本實驗是如何利用 DEBUG進行調試的32實驗七 子程序設計一、實驗目的:1掌握子程序設計方法。2掌握調用程序與子程序間參數傳遞的幾種方法。二、 實驗準備(1)(2)預習子程序設計的基本方法,根據實驗任務要求,畫出子程序
39、及主程序的流程圖。熟悉鍵盤鍵入字符串及用堆棧傳送參數的程序段編制方法。三、實驗任務1編制一個子程序把一個十六位二進制數用十六進制形式在屏幕上顯示出來,采用堆棧方法傳遞這個二進制數,并用一個主程序驗證它。20100 059分,6069分, 7079分, 8089分,90100分的人數,并分別存放到 scoreE, scoreD, scoreC, scoreB, scoreA單元中,編寫一個主程序與之配合使用。四、 實驗步驟1用 EDIT或其它編輯軟件,編寫.ASM源程序,23對其進行匯編及連接,產生.EXE文件。對.EXE文件進行調試運行。4 在 MS-DOS下運行這兩個.EXE文件。五、實驗報
40、告要求1 畫出任務 1,2 兩個程序的流程圖,列出相應的程序清單。2說明本實驗是如何利用 DEBUG進行調試的3說明用堆棧傳送參數的過程及其具體方法。4分析實驗結果及所遇到問題,并說明解決的方法。33附錄:匯編語言試卷一一、單項選擇題(本大題共 20小題,每小題 1 分,共20 分)1CPU要訪問的某一存儲單元的實際地址稱(段地址 偏移地址 物理地址2某存儲單元的物理地址是 ,可以作為它的段地址有()D邏輯地址)2345H12345H12340HD1234H3執行后使 BX=0的同時也使 CF=0,OF=0 的指令是()XOR BX,BXAND BX,BXOR ,BXDCMP ,BX4循環控制
41、指令 LoopNZ/LoopNE控制循環繼續執行的條件是()CX0 且 ZF=1CX0 或 ZF=1CX0 且 ZF=0DCX0 或 ZF=05在執行DAA指令,當高四位 BCD碼校正時產生進位,如要把此進位值送入 AH中,對這進位值的操作應是()DAA 校正指令的功能已自動加在 AH中進位值在 AF中,校正后根據 AF內容再加在 AH中進位值在 CF 中,校正后根據 CF 內容再加在AH中D進位值在 AL最高位上,校正后根據 AL最高位內容再加在 AH中6AND,OR,XOR,NOT 為四條邏輯運算指令,下面的解釋正確的是()指令 XOR AX,AX執行后,AX內容不變,但設置了標志位指令
42、OR DX,1000H 執行后,將 DX 最高位置 1,其余各位置 0指令 AND AX,OFH執行后,分離出 AL低四位DNOT ,執行后,將 AX清 07在執行下列指令時,需要使用段寄存器 DS 的指令是(STOSW ADD CL NEG BX)DINC DABX8無論 BH中原有的數是奇數或偶數,若要使 BH中的數一定為奇數,應執行的指令是(ADD BH,01HXOR ,01H)OR BH,01HDTEST BH,01H349完成對 CL寄存器的內容乘以 4 的正確操作是()ROL CL,1ROL CL,1MUL 4SHL ,1DMOV CL,2SHL CL,CL)SHL ,110下面各
43、傳送指令中,正確的是(MOV DI,SIMOV WORD PTR BX,0100HMOVDX+DI,ALDMOV ,BX11匯編語言語句格式中對名字項的規定如下,請找出其中錯誤的說法()名字的第一個字符可以是大寫英文字母及小寫英文字母名字的第一個字符可以是字母、數字及、_名字的有效長度31 個字符D在名字中不允許出現$12要實現使 BETA的值為 56,應采用語句為()BETA DB 56BETA EQU 56BETA DB 56HDBETA EQU 56H13REPZ CMPSW 指令,重復執行的終止條件是()CX=0 或 ZF=0CX=0 或 ZF=1CX=0 且 ZF=0DCX=0 且
44、ZF=114下面程序段執行后,AL中的內容是()MOV AX,8833HADD ,AHDAA2115 A=BZF=1 ZF=0 SF=1 DSF=016檢查二個無符號數的關系,若要實現 ALBL時分支去 LOP1 處,那么在“CMP ,BL”指令后應跟的分支指令是(JNC LOP1 JA LOP1 JC LOP117在下列串操作指令中,同時使用源串和目的串地址指針的指令是( )STOSW LODSW SCASW DCMPSW18設 AL=0AH,下列指令執行后能使 AL=05H的是(21H0C1HD0DDH)DJGE LOP1)NOT ALAND AL,0FHDOR ,0FHXOR ,0FH1
45、9DA1 D,CD,EF,GH()35MOV AX,DA1+3指令執行后AX中的內容是EF20使用 DOS 系統功能調用時,使用的軟中斷指令是(INT 21 INT 10H INT 16H二、填空題(本大題共 12空,每空 0.5 分,共6 分)CDBCDFC)DINT 21H21 0FFF8H 表示的十進制正數為_,表示的十進制負數為_。22 DS=0F3EHSI=2000HCOUNT=0A8H MOV AXSI+COUNT)中,源操作數的有效地址 EA為_,其物理地址為_。23CPU的標志寄存器中標志位,可以分為兩大類,其中一類稱為_標志位,另一類稱為_標志位。24當標志位_=1 時表示無
46、符號數運算產生溢出,而當標志位_=1 是表示帶符號數運算產生溢出。25如 JMP 指令采用段間間接尋址,那么由4 個相鄰字節單元中存放有轉移地址,其中前兩個字節存放的是_,而后兩個字節存放的是_。26在串操作程序中,通常在重復前綴指令 REPZ或 REPNZ后,選用的串操作指令是_或_才有實際意義。三、簡答題(本大題共4 小題,每小題2 分,共8 分)27已知:BX=1357H,DI=2000H,DS=2000H,CS=4000H,分別指出下面各指令中存儲器操作數的物理地址。(1)MOV ,BX(2)MOV CS:BX+DI,AH280P1 DB 1,20P2 DW 3412H,5678HMO
47、V ,OP1+1;字單元(OP1+1) AXMOV ,OP2+1;字節單元(OP2+1) BL上述二條傳送語句有語法錯誤,請根據注釋字段的說明,將其改正。29下列語句在存儲器中分別為變量分配多少字節?(1)AD2 DW 10 DUP(?),10(2)AD3 DD 100 (?)3630簡述下面兩條指令分別是什么語法錯誤?MOV BX,SIMOV ,DL四、程序分析題(本大題共6 小題,每小題 6 分,共36 分)31 MOV DL,ALNOT DLTEST ,04HJE NEXTNEXT:若上述程序段執行時產生分支,說明AL中的數第幾位一定為 1?程序段執行后 CF 是多少?32DA1 DBA
48、BCDEFGHIDA2 DB 9 DUP(0)LEA SI,DA1LEA DI,DA2MOV CX,9CLDLOP: LODSBSUB AL,10HSTOSBLOOP LOP. . .試問:寫出程序執行后 DA2各字節中的數據。保持程序功能情況下,程序中 可否改寫為33已知:BX=4567HNEG BXINC BXNEG BXDEC BX程序段執行后,BX=_,CF=_。34 MOV BL,64HMOV CL,03HXOR AX,AXAGAIN:ADD AL,BL37ADC AH,0DEC CLJNZ AGAIN問:(1)該程序段完成的功能是:(2)AX=_。35已知數據段中定義DAT1 DB
49、 12H,34H,56H,78HMOV CX,0MOV AX,WORD PTR DAT1MOV CL,DAT1+3當程序段執行完后 AX=_,CX=_。36DA1 DB ,72H,61H,94H,5AHMOV CX,WORD PTR DA1AND CX,0FHMOV AL,DA1+3SHL AL,CL上述指令序列執行后,CL=_。五、程序填空題(本大題共2 小題,每小題 6 分,共12 分)37在 NUMW單元存放有一個 0-65535 范圍內的整數,將該數除以 500,商和余數分別存入 QU1和 REM單元,請在空行處各填上一條指令完善該程序。MOV AX,NUMW_XOR DX,DXDIV
50、 BXMOV QUI,AX_38某程序欲用單個字符顯示的 2 號功能調用去顯示STRING 中的字符串COMPUTER(不顯示字符$?。?試在空白處填上適當的一條指令。STRING DBCOMPUTER,$MOV BX,0FFSET STRINGLOP:MOV ,BX38MOV AH,02HINT 21H_JNE LOP六、編程序題(本大題共2 小題,第39 小題6 分,第40小題 12分,共18分)39 DA_BY為首址的 20H個字節單元中存放相同字符Y (設 DA_BY存儲區已有 ES 指向)。40試編制一源程序,統計 DA1字單元中含 0的個數,如統計的個數為奇數,則將進位位置 1,否
51、則進位位清 0。DATA SEGMENTDA1 DW XXXXDATA ENDS2004年 10 月匯編語言試題一、單項選擇題(本大題共 20 小題,每小題1 分,共 20分)1.假設存儲器中從 7462H單元開始的四個相鄰字節單元中的內容依次是32H,46H,52H,OFEH,則存放字數據 OFE52H 的字地址是(A.7462H B.7463H C.7464H D.7465H2.下列寄存器組中,在訪問存儲器操作數地址時,可以提供偏移地址的是)()、BX、SI、DIC.SP、IP、BX、DX、SI、DI、DS3. SS=0805HSP=40HA.08090H B.08089H C.0808E
52、H D.08450H4.執行 POP BP指令時,源操作數的物理地址表達式是(A.16*SS+SP B.16*SS+BP C.16*DS+BP D.16*CS+BP5.設 ADRT=100H,不符合語法規則的語句是()A.MOV AX,ADRTC.MOV ADRT,AXB.MOV AX,ADRT+SID.MOV ADRTSI,AX6.下面 XCHG指令語句中,語法正確的是()39A.XCHG AX,DSC.XCHG AL,OFHB.XCHG BL,BXD.XCHGSI,DI7.設(AL)=63H(BL)=29H執行下面指令后()SUB AL,BLDASAX的內容是A.(AX)=0304HB.(
53、AX)=0034 C.(AX)=0034HD.(AX)=03048.設 BX=1234H,DS=2000H,(21234H)=5678H,則指令“LEA SI,BX行后的結果是()A.SI=5678H9.設DF=0,SI=20H,CX=10,執行REP LODSW指令后,SI A.20H B.30H C.34H D.40H10.設AL=0A8H,CL=23H,執行乘法指令MUL CL 后,標志位OF,CF 的值分別B.SI=1234HC.SI=2000HD.SI=3234H) ) A.OF=1,CF=111.MOV BX,OFFFEHNEG BXB.OF=1,CF=0 C.OF=0,CF=1D
54、.OF=0,CF=0NOT BX上述三條指令執行后,BX中的內容是( ) A.-112.設數據段有:DA1 DB XX ;是任一數據B.-2 C.-3D.-4DA2 DB OFEH下列兩條指令:MOV DL,DA1OR DL,DA2執行后,DL中的內容可能是()A.0FFH或 0FEHB.只能是 0FEHC.只能是 0FFH 只能是 01H13.NUM1=200NUM2=0C8HMOV AL,NUM1 XOR NUM2上述語句執行后 AL中的值是()A.20014. ORG 100HNUM EQU 8042HDA1 DB 56HB.0C8HC.0D.0FFHMOV BX,0FFSET DA1上
55、述程序段執行后 BX中的值是()40A.56HB.100HC.101HD.102H15.設數據段中定義語句DA1 DB 12H,34HDA2 DW 12H,34H下面有語法錯誤的語句是()A.BUF1 DW DA1B.MOV DA1+1,AXC.MOV BYTE PTR DA2+1,ALD.MOV WORD PTR DA1,AX16.在同一程序段中,定義下面偽指令,錯誤的是()A.PORT1 EQU ALB.PORT2=ALC.PORT2=2A50H AND OFFHPORT3 EQU 2A50H AND OFFH17.X DB 20H DUP(0)Y DW 7A,8BD.PORT3 EQU
56、2A50HMOV CH,LENGTH YMOV CL,LENGTH X執行上述指令后,CX 中的內容是 ()A.0120HB.2010H C.207AHD.7A20H18.執行 SUB AXBPDI指令,取源操作數時,使用的物理地址表達式是()A.16*SS+BP+DIC.16*DS+BP+DIB.16*ES+BP+DID.16*CS+BP+DI19.BUFF 單元開始,連續存放了十個字節數據,欲找出與 AL中內容不同的 ADR)A.REPZ CMPSBJZ K1B.KEPNZ CMPSBJZ K1MOV ADR,DIK1:MOV ADR,DI, K1:D.REPNZ SCASBJNZ K1C
57、.REPZ SCASBJZ K1DEC DIDEC DIMOV ADR,DIK1:MOV ADR,DIK1:20. TEST VAR,55HJE ZER0ZER0:上述程序段執行 JE ZER0指令后能夠產生分支的條件是()41A.VAR=0B.VAR=55HC.VAR中第 1,3,5,7 位均為 0D.VAR中第 0,2,4,6 位均為 0二、填空題(本大題共 5 小題,每小題1 分,共5 分)21.邏輯地址由_組成。22.假設執行指令前 BX=5678H,CL=8,指令 ROL BX,CL執行后BX=_。23.每次進行串掃描指令 SCAS時,要進行遞增或遞減修改的變址寄存器是_。24.在指
58、令語句操作數項上,引用一個段名,就是獲取段地址的_數據。25.VAR1 DD 10H DUP(?)語句實現留空_個字節單元。三、簡答題(本大題共 3 小題,每小題2 分,共6 分)26.下面指令是錯誤嗎,哪條有錯?什么錯誤MOV 34H,BLXCHG DS,AX27.完成下列操作選用什么指令或指令序列將 2BC0H減去 1A05H將變量 DAB1的段地址送 AX。28.設執行前 SI=1000H,DS=2000H,存儲單元(21000H)=1245H,下面二條指令分別執行后 BX中的值各是多少?MOV BX,SILEA BX,SI四、程序分析題(本大題共 7 小題,每小題5 分,共 35分)2
59、9.MOV ,7452HADD AL,AHDAAXCHG AH,ALSUB AL,AHDAS程序段運行后,AX=_,CF=_。30.已知 AX=7865H,BX=89AAHCLCADD AX,BXOR BX,AXRCR AX,1RCL BX,142程序執行后,AX=_BX=_CF=_31.AND AL,0FAHXOR AL,0FFHXOR AL,0AFHOR AL,50H閱讀上述指令,分別回答各指令序列完成什么功能?32.DA1 DB 1AH,2BH,3CH,4DH,5EH,6FHDA2 DB 6 DUP(0)LEA SI,DA1+5MOV BX,0FFSET DA2MOV CX,604HST
60、DLOP:LODSBROL AL,CLMOV BX,ALINC BXDEC CHJNZ LOP程序執行后 DA2中各字節內容是什么?程序中 ROL AL,CL是否用 ROR AL,CL指令替代,其功能不變。33. DA1 DBABCDE $ FGHIDA2 DB $ -DA1 DUP(?)CALL SUB1SUB1 PROCMOV BX,0LOP:CMP BYTE PTR DA1BX,$JZ ARMOV AL,DA1BXMOV DA2 BX,ALINC BXJMP LOPAR:RETSUB1 ENDP上述子程序的功能是什么?返回主程序時,BX=_。4334.AR1 DB ABCDEFGHAR2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目管理價值鏈分析題目及答案
- 理解項目管理質量標準的考試試題及答案
- 2025年會計報表編制技巧試題及答案
- 理財師的自我提升方法試題及答案
- 鶴壁玻璃平開門施工方案
- 2024年項目管理師專用試題及答案
- 探討證券從業資格證考試的知識要求試題及答案
- 理解特許金融分析師考試的語言技巧試題及答案
- 2024年項目管理專業人士考試知識圖譜試題及答案
- 綠化內井蓋施工方案設計
- 電梯結構及原理圖解
- 英語口譯基礎教程UnitIntroduction課件
- 不孕癥診療流程課件
- 初中生物人教七年級上冊生物體的結構層次第一節 細胞通過分裂產生新細胞 導學案
- 甘肅省煙花爆竹經營許可實施標準細則
- 【精品課件】藥用高分子材料學
- 要素式起訴狀(離婚糾紛)
- 急性腎盂腎炎護理查房
- DB22T 5118-2022 建筑工程資料管理標準
- 登臨詩鑒賞(課堂PPT)
- 蒸壓加氣混凝土砌塊薄層砌筑
評論
0/150
提交評論