匯編實驗報告終_第1頁
匯編實驗報告終_第2頁
匯編實驗報告終_第3頁
匯編實驗報告終_第4頁
匯編實驗報告終_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、實 驗 一 匯 編 語 言 源 程 序 的 輸 入 一、實驗?zāi)康?. 通過實驗了解和熟悉微機系統(tǒng)的配置。2. 學(xué)習(xí)在DEBUG狀態(tài)下輸入?yún)R編源程序的方法。3. 初步掌握調(diào)試(在DEBUG狀態(tài)下)的過程。二、實驗原理1. 本實驗要求在DEBUG狀態(tài)下輸入?yún)R編源程序,并用DEBUG命令 進行調(diào)試。用單步跟蹤的方法驗證指令的功能。2. 以下是給定的參考程序 ,并在實驗時在每條指令的 “; ”符號右邊 按要求填寫指令的執(zhí)行結(jié)果。注: 微機進入DEBUG狀態(tài)下之后,一切立即數(shù)和地址數(shù)據(jù)均被默 認為十六進制數(shù) ,在輸入時數(shù)的后面不加后綴 “H”; 在DEBUG狀態(tài)下執(zhí)行程序時,“INT20H指令可使系統(tǒng)執(zhí)

2、行完該 指令前的程序時返回到 -”提示符狀態(tài),并且恢復(fù)CS和IP寄存器原來的 值。參考程序:MOVAX, 2000; AL= 00HMOVDS, AX; DS= 2000HNOTAX; AX= DFFFHXORAX, AX; AX= 0000HDECAX; AX= FFFFHINCAX; AX= 0000HMOVBX, 2030; BH= 20HMOVSI, BX; SI= 2030HMOVSI, BL; 2030H= 30HMOVWORD PTRSI, 10F; 2030H= 0FH2031H=01HMOVDI, SI; DI= 2030HMOVDI+50, BH; DI+50H= 20HM

3、OVBH, SI; BH= 0FHMOVBL, DI+50; BL= 20HMOVSP, 5000PUSHAX; AX= 0000H SS: 4FFEH=00HSS: 4FFFH二 OOHPUSH BX; BX= 0F20H SSSS: 4FFDH= OFH:4FFCH二 20HPOPAX;AX= 0F20HPOPF;F= 00000000NEGBX;BX= F0E0HXCHGBX, AX;BX= 0F20HSTD;F= 01010001STI;F= 01110001CLD;F= 00110001CLI;F= 00010001ADCDI, 2050;DI= 4081H執(zhí)行過程中考慮上一條指令的

4、進位標志2030【BI】條指令的進位標志)ADCSP, DI;SP= 9081HADCAX, 1500;AX= 05E0HSUBAX, BX;AX= F6C0HSHLAH, 1;AH= ECHRCLAX, 1;AX= D981HSHRBH, 1;BH= 07HRCRBL, 1;BL= 90HMOVCL, 4MOVDX, 80F0ROLDX, CL;DX= 0F08HINT20;CS=00A7HF= 00000010+2050+1 (上一F= 10010010F= 00000001BX= 0F20HCL= 04HIP= 1072H標志名標志為1標志為0OF溢出(是/否)OVNVDF方向(減量/增

5、量)DNUPIF中斷(允許/關(guān)閉)EIDISF符號(負/正)NGPLZF零(是/否)ZRNZAF輔助進位(是/否)ACNAPF奇偶(偶倚)PEPOCF進位(是/否)CYNC實驗二 數(shù)據(jù)的建立與傳送程序一、實驗?zāi)康?. 繼續(xù)學(xué)習(xí)DEBUG命令。2. 驗證指令的功能。二、實驗原理在DEBUG狀態(tài)下,分別輸入下面各程序段,每輸入完一個程序段,用 G命令進行連續(xù)方式執(zhí)行程序,在連續(xù)執(zhí)行時,要記錄程序的執(zhí)行結(jié)果。參考程序:1.在內(nèi)存10000H單元開始,建立00HOFH00H 31個數(shù),要求 00H0FH數(shù)據(jù)逐漸增大,0FHOOH逐漸減小。該程序從內(nèi)存 CS:0100H 地址開始輸入。MOVMOVMOV

6、MOVXORPPE1: MOVINCINCDECJNZMOVPPE2: MOVINCDECLOOPAX, 1000HDS, AXSI, 0CL, 0FHAX, AXSI, ALSIALCLPPE1CX, 10HSI, ALSIALPPE2 每執(zhí)行次LOO指令,CX減1,判斷CX是否為o ,不為o ,轉(zhuǎn)移到指疋的標號處繼續(xù)執(zhí)行, 否則,順序執(zhí)行INT 20H注:轉(zhuǎn)移指令的符號地址直接用絕對偏移地址,該地址在用 A命令匯 編輸入時,可以看到程序全部運行完之后,可用DEBUG的Dump命令查 看建立的數(shù)據(jù)塊內(nèi)容。例如:D1000: 00 1E (31 個數(shù))1000:00 00 01 02 03 0

7、4 05 06 07 08 09 0A 0B 0C 0D 0E1000:10 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00-hlx|-aB09:0100R09:0103BS9:0185Bfl9:810SB09:010AB09:010CB09:010EBB9:010FBQ9:0113D0?:0115B09:0118B09:011ABS9:011EBU9:011DBB9:0ilFB0?:0121 q=0100mov axl000 nou dsax mou sirB iddv cl.Bfxot*mou sia1inc inc dec jna mou moM

8、insacaliiinc si dec al loop 0118 int 20rngram ternuiated dl0Q0:00 le 000:0000 00 01 02 000:0010 0E 0D 0Cnorimally59004 fl003B000807-08 0907-06 05OB QD 0E04 03 02 012把上一個程序的執(zhí)行結(jié)果(建立的31個字節(jié)數(shù)據(jù)塊,其首地址在 10000H),分幾種方式傳送到以下指定的區(qū)域。(a)該程序從內(nèi)存CS:0150H開始輸入。把數(shù)據(jù)塊傳送到15050H開始的存貯區(qū)域中。參考程序:MOVAX, 1000HMOVDS, AXMOVSI, 0MOV

9、DI, 5050HMOVCX, 1FH;數(shù)據(jù)塊長度是31PPEA:MOVAL, SIMOVDI, ALINCSIINCDILOOPPPEAINT20H檢查內(nèi)存數(shù)據(jù)塊的傳送情況,可用“D命令。1000:5050 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F1000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 0009:0010ID000E e0007-00 09 0A QB 0C 0D 0E 0F07-0E 05 84 03 02 01 00-hlx|EU5E20Program terminate

10、d norma Uy-D1030:&0SQ 弓酩E0Q 01 02 03 04 眄 0G 07-08 9 QA 0B C QD BE F 1000:&0GQ 0E 0D 0C 0B QA 09 08 07-06 05 04 03 02 01 001&0B09:0150B0?;0153B09:0155BB9:01B8D09:015E B09:0160 R09:0162 BB9:0163 009:014 B39:01G B09:016O G=O150MOU MOU MOU MOU MOV MOU MOU INC INCLOOP IHTDS fiX SI .0DI.505S CX, IF AL.SI

11、 【DHL SIDI(b) 用串傳送指令MOVSB,把數(shù)據(jù)塊傳送到15150H開始的區(qū)域,該 程序從內(nèi)存CS:0200H開始輸入。檢查程序最后的執(zhí)行結(jié)果,可用 “ D命令,例如:D1000: 5150/MOV AX,1000MOV DS,AXMOV ES,AXMOV SI,0MOV DI,5150MOV CX,1FCLDMOVSBLOOP MOVSB/寫MOVS前面的偏移地址INT 201000:5150 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E OF1000:5160 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02

12、 01 00(c) 用重復(fù)串操作指令 “ REP MOVS”把數(shù)據(jù)塊傳送到15250H開 始的區(qū)域。該程序從CS: 250H地址開始輸入。檢查程序的最后執(zhí)行結(jié)果時,可用:D1000: 5250HMOV AX,1000MOV DS,AXMOV ES,AXMOV SI,0MOV DI,5250MOV CX,1FCLDREP MOVSBINT 201000:5250 00 01 02 03 04 05 06 07 08 09 0A OB 0C 0D 0E OF1000:5260 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00(d) 用串操作的減量工作方式,把

13、數(shù)據(jù)塊傳送到 25050H開始的區(qū)域 該程序從CS: 0300H開始輸入。檢查程序的最后執(zhí)行結(jié)果,用D命令:D2000: 5050/MOV AX,1000MOV DS,AXADD AX,AXMOV ES,AXMOV SI,1EMOV DI,506EMOV CX,1FSTDREP MOVSBINT 202000:5050 00 01 02 03 04 05 06 07 08 09 0A OB 0C 0D 0E OF2000:5060 0E 0D 0C 0B 0A 09 08 07 06 05 04 03 02 01 00PG=0250MOUSE20MOV MOU ADD MOU MOU MOU

14、MOU STD REP IHTPro gram teiMnin&ted. noimallD100S:5250 526E000:5258 0B 01 02 63 64 05 06 07-08 09 6A 0B 0C 0D 0E 0F AF AD AC HR HA A9 HRHE H4 朗甩血 fflflProgpan teiMninated not*mallvD200S:5050 506E2000:5050 06 01 92 03 64 85 06 07-08 0? 6A 0B 0C 0D 0E 0F 2000:50&0 0E 0D 0C 0B BA 09 0S 07-06 05 04 03 0

15、2 01 0079CF2357I0-00011110 3 3 33 3 3 3 3 3 3 3 0-M-09 9 999 孚197 9 9 0J- 0abbbb-bbbbbbbg060 X X X E 0 F1 R A ft 1 5 1實驗三分支程序設(shè)計一、實驗?zāi)康?練習(xí)分支程序的編寫方法。2.練習(xí)匯編語言程序的上機過程。二、實驗原理1. 通過分支程序設(shè)計調(diào)試和運行,進一步熟悉掌握匯編程序執(zhí)行的 軟件環(huán)境。2. 通過分支程序的執(zhí)行過程,熟悉 EDIT的使用,建立OBJ文件EXE 文件的方法。四、實驗內(nèi)容給出三個有符號數(shù),編寫一個比較相等關(guān)系的程序: 如果這三個數(shù)都不相等,則顯示0;如果這三個數(shù)

16、中有兩個數(shù)相等,則顯示1;如果這三個數(shù)都相等,則顯示 2; 該實驗的實驗代碼如下: ;text3.asm in DOS .model small .stack .datastring dbplease input three numbers:,13,10,$ var1 db ? var2 db ? var3 db ?var db 0 temp db ?.code .startup mov dx,offset string mov ah,9 int 21H call readsiw mov al,temp mov var1,al call dispcrlf call readsiw mov al

17、,temp mov var2,al call dispcrlf call readsiw mov al,temp mov var3,al call dispcrlf mov al,var1 cmp al,var2 jne next1add var,1 cmp al,var3 jne exit add var,1 jmp exit next1: cmp al,var3 je next2 mov al,var2 cmp al,var3 je next2 jmp exit next2: add var,1 exit: mov dl,var add dl,30H mov ah,2 int 21H mo

18、v ax,4c00H int 21H .exit readsiw proc push ax push bx push cx xor bx,bxxor cx,cx rsiw0: mov ah,1int 21h cmp al,+ jz rsiw1 cmp al,- jnz rsiw2 mov cx,-1rsiw1: mov ah,1 int 21hrsiw2: cmp al,0 jb rsiw3 cmp al,9 ja rsiw3 sub al,30h xor ah,ah shl bx,1 mov dx,bx shl bx,1 shl bx,1 add bx,dx add bx,ax jmp rs

19、iw1rsiw3: cmp cx,0 jz rsiw4 neg bxrsiw4:mov temp,bl pop cx pop bx pop ax retreadsiw endp dispcrlf proc push ax push dx mov dl,0dhmov ah,2 int 21h mov dl,0ah mov ah,2 int 21h pop dx pop ax ret dispcrlf endp end 該實驗執(zhí)行結(jié)果如下:rai實驗四 統(tǒng) 計 學(xué) 生 成 績 程 序一、實驗?zāi)康?進一步掌握分支程序和循環(huán)程序的編寫方法。二、實驗原理設(shè)有 10個學(xué)生的成績分別為 56、69、84、8

20、2、73、88、99、63、100 和80分。試編制程序分別統(tǒng)計低于 60分、6069分、7079分、8089 分、9099分及100分的人數(shù)存放到s5、s6、s7、s8、s9及s10單元中。這一題目的算法很簡單,成績分等部分采用分支結(jié)構(gòu),統(tǒng)計所有成 績則用循環(huán)結(jié)構(gòu)完成。程序框圖如下圖所示。四、實驗步驟 輸入編寫的源程序,進行調(diào)試 參考程序如下: datarea segmentgrade dw56,69,84,82,73,88,99,63,100,80s5dw0s6dw0s7dw0s8dw0s9dw0s10dw0datarea ends prognam segment main proc fa

21、r assume cs:prognam,ds:datarea start:push ds;建立棧作為返回,ds保存舊的數(shù)據(jù)sub ax,axpush ax;保護 axmov ax,datarea數(shù)據(jù)段地址給ax, ds保存臨時數(shù)據(jù) mov ds,axmov s5,0; 程序主要部分mov s6,0 mov s7,0 mov s8,0 mov s9,0 mov s10,0 mov cx,10 mov bx,offset grade compare:mov ax,bx cmp ax,60 jl five cmp ax,70 jl six cmp ax,80 jl seven cmp ax,90 jl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論