匯編實(shí)驗(yàn)指導(dǎo)書09級_第1頁
匯編實(shí)驗(yàn)指導(dǎo)書09級_第2頁
匯編實(shí)驗(yàn)指導(dǎo)書09級_第3頁
匯編實(shí)驗(yàn)指導(dǎo)書09級_第4頁
匯編實(shí)驗(yàn)指導(dǎo)書09級_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 匯編語言程序設(shè)計(jì)實(shí) 驗(yàn) 指 導(dǎo) 書 東北林業(yè)大學(xué)機(jī)電工程學(xué)院2011年6月哈爾濱實(shí)驗(yàn)一:指令系統(tǒng)一、實(shí)驗(yàn)?zāi)康?1. 熟悉匯編語言中基本語句。 2.了解指令不同的尋址方式,注意規(guī)定或限制使用的寄存器。如:雙操作數(shù)指令中,源操作數(shù)和目的操作數(shù)的地址不能同時(shí)為存儲器地址,段跨越前綴不能使用CS,操作對象是地址還是地址中的內(nèi)容,指令隱含使用的寄存器等。3.學(xué)會如何將數(shù)值轉(zhuǎn)換成對應(yīng)字符的ASCII碼。 4.掌握DOS的字符串輸出、單字符輸入輸出功能的使用。 二、實(shí)驗(yàn)儀器設(shè)備、材料 1. pc機(jī)三、預(yù)習(xí)內(nèi)容 1. 認(rèn)真閱讀本實(shí)驗(yàn)指導(dǎo)。2. 按實(shí)驗(yàn)內(nèi)容要求,理解相關(guān)指令,編寫程序。3. 預(yù)習(xí)查看教材附錄的

2、DOS系統(tǒng)功能調(diào)用。四、實(shí)驗(yàn)內(nèi)容與步驟 實(shí)驗(yàn)內(nèi)容編寫一個(gè)完整的程序。具體要求如下:要求下系統(tǒng)提示下從鍵盤輸入兩個(gè)數(shù)3和5,分別存入字節(jié)變量A和B中;求兩個(gè)數(shù)的和,結(jié)果存放在數(shù)據(jù)段中的字節(jié)變量SUM中;將結(jié)果顯示在屏幕上。實(shí)驗(yàn)步驟 提示的實(shí)現(xiàn):在數(shù)據(jù)段中定義兩個(gè)字符串,利用DOS的字符串輸出功能顯示。例如:數(shù)據(jù)段定義為:string1 db the first is:,0dh,0ah,$string2 db 0dh,0ah,the second is:,0dh,0ah,$代碼段中:mov dx,offset string1mov ah,09hint 21h顯示字符串string1,其它字符串顯示

3、相同。利用DOS的單字符輸入功能,即可獲得輸入數(shù)字的ASCII碼。字符的ASCII碼為一個(gè)8位二進(jìn)制數(shù),計(jì)算時(shí)需要將ASCII轉(zhuǎn)換為實(shí)際參加計(jì)算的數(shù)值。如數(shù)字3從鍵盤鍵入后,獲得了字符3的ASCII碼33H,需要在計(jì)算前求其真實(shí)數(shù)值,即33H-30H=3。部分代碼如下:數(shù)據(jù)段:a db ?b db ?代碼段:mov ah,01hint 21h ;鍵盤輸入并回顯sub al,30h ; 將ASCII轉(zhuǎn)換為實(shí)際參加計(jì)算的數(shù)值mov a,al 顯示時(shí)需將這8位二進(jìn)制數(shù)值分別轉(zhuǎn)換為其對應(yīng)的ASCII碼,顯示調(diào)用DOS單字符輸出功能。mov dl,sum ;將要顯示的內(nèi)容存放到dl中 add dl,30

4、h ;將8位二進(jìn)制數(shù)值轉(zhuǎn)換為其對應(yīng)的ASCII碼 mov ah,02h ;單字符顯示輸出 int 21h 完整程序如下,將空白處填上正確代碼,并上機(jī)驗(yàn)證:data segment string1 db the first is:,0dh,0ah,$ string2 db 0dh,0ah,the second is:,0dh,0ah,$ string3 db 0dh,0ah,the sum is:,0dh,0ah,$ a db ? b db ? sum db ?data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds

5、,ax mov dx,offset string1 mov ah,09h int 21h mov ah,01h int 21hsub al,30h mov a,al mov dx,offset string2 mov ah,09h int 21h mov ah,01h int 21h sub al,30h mov b,al add al,a mov sum,al mov dx,offset string3 mov ah,09h int 21h mov dl,sum mov dl,30h mov ah,02h int 21h mov ax,4c00h int 21hcode endsend st

6、art五、實(shí)驗(yàn)報(bào)告(1) 列出完整的程序清單。(2) 針對實(shí)驗(yàn)內(nèi)容作小結(jié)。實(shí)驗(yàn)二:匯編語言程序格式一、實(shí)驗(yàn)?zāi)康?1. 熟悉匯編語言中的移位指令、轉(zhuǎn)移指令、控制循環(huán)指令。 2. 熟悉移位指令對CF位的影響,轉(zhuǎn)移指令如何根據(jù)標(biāo)志位進(jìn)行轉(zhuǎn)移。3. 學(xué)會定義和引用數(shù)組。4. 按照要求書寫實(shí)驗(yàn)報(bào)告。二、實(shí)驗(yàn)儀器設(shè)備、材料 1. pc機(jī)三、預(yù)習(xí)內(nèi)容 1. 認(rèn)真閱讀本實(shí)驗(yàn)指導(dǎo)。 2. 按實(shí)驗(yàn)內(nèi)容要求,理解相關(guān)指令,編寫程序。四、實(shí)驗(yàn)內(nèi)容與步驟實(shí)驗(yàn)內(nèi)容編寫一個(gè)完整的程序,要求如下:要求向把AL存放二進(jìn)制數(shù);把AL中的每一位數(shù)保存到VALUE開始的字節(jié)單元中;將VALUE中存放的AL的每一位數(shù)顯示出來。 實(shí)驗(yàn)步

7、驟 在數(shù)據(jù)段定義VALUE字節(jié)變量將用來存放程序運(yùn)行時(shí)AL中8位二進(jìn)制數(shù),低字節(jié)放高位數(shù),高字節(jié)放低位數(shù),具體如圖3-1所示。AL的D5AL的D4AL的D3AL的D2AL的D1AL的D0 AL的D7AL的D6VALUE7VALUE6VALUE5VALUE4VALUE3VALUE2VALUE1VALUE0 在數(shù)據(jù)段中可以定義為: VALUE DB 8 DUP(?) 對AL邏輯/算術(shù)左移,每次左移一位,即移出AL的當(dāng)前最高位到CF標(biāo)志中,判斷CF,如果CF為1,則對相應(yīng)的內(nèi)存單元中寫“1”,否則寫“0”。 代碼段中部分代碼為: mov cx,8 mov si,0lop: shl/sal al,1

8、jc input1 mov valuesi,0 jmp nextinput1: mov valuesi,1next: inc si loop lop VALUE開始的連續(xù)8個(gè)字節(jié)單元,相當(dāng)高級語言中長度為8的數(shù)組,對數(shù)組的引用可以使用寄存器相對尋址,其中寄存器存放各個(gè)單元相對VALUE的偏移量。代碼參見。 完整程序如下,將空白處填上正確代碼,并上機(jī)驗(yàn)證: data segment value db 8 dup(?)data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax mov al,10011100b mo

9、v si,0 mov cx,8lop: sal/shl al,1 jc inpat1 mov valuesi,0 jump next input1: mov valuesi,1 next: inc si loop lop mov cx,8 mov si,0lop1: mov dl,valuesi add dl,30h mov ah,02h int 21h inc si loop lop1 mov ax,4c00h int 21hcode endsend start五、實(shí)驗(yàn)報(bào)告(1)列出完整的程序清單。(2)針對實(shí)驗(yàn)內(nèi)容作小結(jié)。實(shí)驗(yàn)三:匯編語言程序格式一、實(shí)驗(yàn)?zāi)康?1. 熟悉匯編語言中指令,靈活

10、使用各指令解決實(shí)際問題。 2. 學(xué)會如何將二進(jìn)制數(shù)轉(zhuǎn)換ASCII碼的程序設(shè)計(jì)方法。3. 學(xué)會將二進(jìn)制數(shù)以十進(jìn)制數(shù)顯示。4. 按照要求書寫實(shí)驗(yàn)報(bào)告。二、實(shí)驗(yàn)儀器設(shè)備、材料 1. pc機(jī)三、預(yù)習(xí)內(nèi)容 1. 認(rèn)真閱讀本實(shí)驗(yàn)指導(dǎo)。 2. 按實(shí)驗(yàn)內(nèi)容要求,理解相關(guān)指令,編寫程序。四、實(shí)驗(yàn)內(nèi)容與步驟 實(shí)驗(yàn)內(nèi)容編寫一個(gè)完整的程序 要求將一個(gè)百位的十進(jìn)制數(shù)存放到AX中,如352。 將AX中各位數(shù)存放到NUM開始的字節(jié)變量中,即NUM0存放個(gè)位數(shù)2,NUM1存放十位數(shù)5,NUM2存放百位數(shù)3。讀取NUM中各個(gè)數(shù)字以十進(jìn)制的形式顯示在屏幕上。 實(shí)驗(yàn)步驟 將NUM中的二進(jìn)制數(shù)除以10,所得余數(shù)為個(gè)位上的數(shù),加上30

11、H變?yōu)橄鄳?yīng)ASCII碼。 所得的商再作為被除數(shù)除以10,得到的余數(shù)為十位上的數(shù),加上30H變?yōu)橄鄳?yīng)的ASCII碼。 所得的商再作為被除數(shù)除以10,得到的余數(shù)為百位上的數(shù),直到所得的商為0時(shí),結(jié)束。 參考程序,將空白處填上正確代碼,并上機(jī)驗(yàn)證: data segmentnum db 5 dup(?)data endscode segmentassume cs:code,ds:datastart: mov ax,data mov ds,ax mov ax,352 mov bl,10 ;bl存放除數(shù) mov si,-1 ;si存放數(shù)組下標(biāo)continue: div bl inc si ;修改數(shù)組下標(biāo)

12、 add ah,30h ;得到的余數(shù)加上30H變?yōu)橄鄳?yīng)ASCII mov numsi,ah ;將得到的某位數(shù)存放到內(nèi)存中 xor ah,ah ;ah清0,參加下次除法 test al,0fh ;判斷商是否為0 jnz continue ;商是0順序執(zhí)行,不為零繼續(xù)除 mov cx,si inc cx ;開始從高位到低位顯示各位數(shù)dislop: mov dl,numsi mov ah,02h int 21h dec si loop dislop mov ax,4c00h int 21hcode endsend start五、實(shí)驗(yàn)報(bào)告 列出任務(wù)中完整的程序清單。 在匯編語言程序中,如何對數(shù)組變量進(jìn)

13、行各分量的引用?(3) 針對實(shí)驗(yàn)內(nèi)容作小結(jié)。實(shí)驗(yàn)四:偽操作功能驗(yàn)證一、實(shí)驗(yàn)?zāi)康?1. 熟悉匯編語言中變量定義偽操作。 2. 學(xué)會如何讀取數(shù)組變量及如何對變量中的值進(jìn)行條件判斷。3. 了解小寫字母在計(jì)算機(jī)內(nèi)的表示方法,并了解其轉(zhuǎn)換方法。4. 按照要求書寫實(shí)驗(yàn)報(bào)告。二、實(shí)驗(yàn)儀器設(shè)備、材料 1. pc機(jī)三、預(yù)習(xí)內(nèi)容 1. 認(rèn)真閱讀本實(shí)驗(yàn)指導(dǎo)。 2. 按實(shí)驗(yàn)內(nèi)容要求,理解相關(guān)指令,編寫程序。四、實(shí)驗(yàn)內(nèi)容與步驟實(shí)驗(yàn)內(nèi)容編寫一個(gè)完整的程序放在代碼段中,要求接受鍵盤輸入的字符判斷如果是小寫字母就轉(zhuǎn)換為大寫字母,并進(jìn)行顯示,否則提示“error”錯(cuò)誤信息。 實(shí)驗(yàn)步驟 對于任務(wù)1,在匯編該文件時(shí),會有錯(cuò)誤提示,

14、據(jù)提示說明出錯(cuò)語句的錯(cuò)誤原因,修改程序中的錯(cuò)誤。 對于任務(wù)2 字符在計(jì)算機(jī)內(nèi)以ASCII碼值來表示,大小寫字母也不例外,其中大寫字母、小寫字母在ASCII碼字符集中連續(xù)存放,其值的范圍分別為6590,97122。這樣我們根據(jù)字符的ASCII碼值,自然能判斷字符是否是小寫字符,同時(shí)對小寫字符用減32的方法轉(zhuǎn)化為其對應(yīng)的大寫字母。 鍵盤輸入和字符顯示用DOS調(diào)用實(shí)現(xiàn)。 參考程序,將空白處填上正確代碼,并上機(jī)驗(yàn)證:data segment error db 0dh,0ah,error,$data endscode segmentassume cs:code,ds:datastart: mov ax,

15、data mov ds,ax mov ah,01h int 21h cmp al,a jb err cmp al,z ja err sub al,32h mov dl,al mov ah,02h int 21h jmp exiterr: mov dx,offset error mov ah,09h int 21hexit: mov ax,4c00h int 21hcode endsend start五、實(shí)驗(yàn)報(bào)告 列出任務(wù)中完整的程序清單。 指出那段程序是對字符判斷是否是小寫字母?(3) 針對實(shí)驗(yàn)內(nèi)容作小結(jié)。實(shí)驗(yàn)五:匯編語言分支程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?1. 掌握基本分支程序設(shè)計(jì)方法。2. 學(xué)習(xí)多重

16、分支程序的設(shè)計(jì)方法。3. 掌握判斷字母、數(shù)字的方法。4. 按照要求書寫實(shí)驗(yàn)報(bào)告。二、實(shí)驗(yàn)儀器設(shè)備、材料 1. pc機(jī)三、預(yù)習(xí)內(nèi)容 1. 認(rèn)真閱讀本實(shí)驗(yàn)指導(dǎo)。 2. 按實(shí)驗(yàn)內(nèi)容要求編寫程序。四、實(shí)驗(yàn)內(nèi)容與步驟1.實(shí)驗(yàn)內(nèi)容 接受鍵盤輸入字符,判別該字符是否為字母、數(shù)字或非字母也非數(shù)字類字符。2.實(shí)驗(yàn)步驟 數(shù)字09與字母一樣,在計(jì)算機(jī)內(nèi)也是以ASCII碼值來表示,其值范圍為30H39H(4857),本題目字符分為三類:字母;數(shù)字;非字母也非數(shù)字。對于鍵盤鍵入的任一字符,我們可以按其字符ASCII碼值的情況自然區(qū)分。參考程序,將空白處填上正確代碼,并上機(jī)驗(yàn)證:data segment msg1 db

17、digit,0dh,0ah,$ msg2 db letter,0dh,0ah,$ msg3 db other,0dh,0ah,$data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ah,1 int 21h ;讀取一字符送入al cmp al,0 jb other cmp al,9 jbe digit ;轉(zhuǎn)數(shù)字顯示 cmp al,A jb other ;轉(zhuǎn)非字母、數(shù)字顯示 cmp al,Z jbe letter ;轉(zhuǎn)字母顯示 cmp al,a jb other cmp al,z jbe lett

18、er jmp otherdigit: mov dx,offset msg1 mov ah,09h int 21h ;顯示“digit” jmp exitletter: mov dx,offset msg2 mov ah,09h int 21h ;顯示“l(fā)etter” jmp exitother: mov dx,offset msg3 mov ah,09h int 21h ;顯示“other”exit: mov ax,4c00h int 21h ;返回DOScode endsend start五、實(shí)驗(yàn)報(bào)告 畫出程序流程圖,總結(jié)分支結(jié)構(gòu)設(shè)計(jì)遵循的原則。 列出任務(wù)中完整的程序清單。(3) 針對實(shí)驗(yàn)內(nèi)

19、容作小結(jié)。實(shí)驗(yàn)六:匯編語言循環(huán)程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?1. 掌握循環(huán)程序的基本設(shè)計(jì)方法。2. 按照要求書寫實(shí)驗(yàn)報(bào)告。二、實(shí)驗(yàn)儀器設(shè)備、材料 1. pc機(jī)三、預(yù)習(xí)內(nèi)容 1. 認(rèn)真閱讀本實(shí)驗(yàn)指導(dǎo)。 2. 按實(shí)驗(yàn)內(nèi)容要求編寫程序。四、實(shí)驗(yàn)內(nèi)容與步驟1.實(shí)驗(yàn)內(nèi)容 統(tǒng)計(jì)一個(gè)有10人的班中,男、女生的人數(shù)各為多少。將統(tǒng)計(jì)結(jié)果的男生人數(shù)存入字節(jié)變量MAN中,女生人數(shù)存入字節(jié)變量WOMAN中,并顯示結(jié)果。 2.實(shí)驗(yàn)步驟 男、女生的標(biāo)志可用1和0字符來表示,并從鍵盤輸入此標(biāo)志。根據(jù)題意,總?cè)藬?shù)已知,在此范圍下,對輸入的標(biāo)志進(jìn)行分類求和顯然可用循環(huán)結(jié)構(gòu)來完成。每循環(huán)一次是相應(yīng)人數(shù)增1,而循環(huán)計(jì)數(shù)值(開始為總?cè)藬?shù))減

20、1,直至該計(jì)數(shù)值為0。這樣,我們可用CX作為循環(huán)計(jì)數(shù)值。用“LOOP”指令對循環(huán)的條件進(jìn)行判斷。 參考程序,將空白處填上正確代碼,并上機(jī)驗(yàn)證: data segment man db ? woman db ?count equ 10 disp db 0dh,0ah,man or woman 1/0?,$ disp1 db 0dh,0ah,man,$ disp2 db 0dh,0ah,woman,$ data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cx,10 input: mov dx,

21、offset disp mov ah,09h int 21h mov ah,01h int 21h ;讀入一個(gè)字符 cmp al,1 ;是男生? jz mancount cmp al,0 ;是女生? jz womancount jmp input mancount: INCMAN ;男生人數(shù)加1 jmp loopnextwomancount: inc woman ;女生人數(shù)加1loopnext: loop input mov dx,offset disp1 mov ah,09h int 21h mov dl,man add dl,30h mov ah,02h int 21h mov dx,of

22、fset disp2 mov ah,09h int 21h mov dl,woman add dl,30h mov ah,02h int 21h mov ax,4c00h int 21h code ends end start五、實(shí)驗(yàn)報(bào)告 畫出程序流程圖。 列出任務(wù)中完整的程序清單。(3) 針對實(shí)驗(yàn)內(nèi)容作小結(jié)。 實(shí)驗(yàn)七:匯編語言子程序設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康?1. 掌握子程序的編寫和調(diào)用、返回及現(xiàn)場保護(hù)的方法。2. 按照要求書寫實(shí)驗(yàn)報(bào)告。二、實(shí)驗(yàn)儀器設(shè)備、材料 1. pc機(jī)三、預(yù)習(xí)內(nèi)容 1. 認(rèn)真閱讀本實(shí)驗(yàn)指導(dǎo)。 2. 按實(shí)驗(yàn)內(nèi)容要求編寫程序。四、實(shí)驗(yàn)內(nèi)容與步驟1.實(shí)驗(yàn)內(nèi)容設(shè)有10個(gè)學(xué)生的成績分別是7

23、6,69,84,90,73,88,99,63,100和80。試編制一個(gè)子程序統(tǒng)計(jì)6069分,7079分,8089分,9099分和100分的人數(shù)并分別存放到S6,S7,S8,S9和S10單元中。2. 實(shí)驗(yàn)步驟data segment score db 76,69,84,90,73,88,99,63,100,80s6 db 0s7 db 0s8 db 0s9 db 0s10 db 0data endscode segmentassume ds:data,cs:codemain proc far ;主程序mov ax,data mov ds,ax call subcount ;調(diào)用子程序mov cx

24、,5mov si,0 ;si為s7,s8,s9,s10相對s6的偏移量lop: mov dl,s6si ;顯示統(tǒng)計(jì)結(jié)果 add dl,30h mov ah,02h int 21h call crlf ;調(diào)用回車換行子程序 inc si loop lop mov ax,4c00h int 21hmain endpsubcount proc near ;統(tǒng)計(jì)子程序 push ax ;保護(hù)現(xiàn)場 push cx push si mov cx,10 mov si,0next: mov al,scoresi cbw mov dl,10 ;除以10獲得商 div dl cmp al,10 je add10

25、cmp al,9 je add9 cmp al,8 je add8 cmp al,7 je add7 cmp al,6 je add6add10: inc s10 jmp countinueadd9: inc s9 jmp countinueadd8: inc s8 jmp countinueadd7: inc s7 jmp countinueadd6: inc s6countinue: inc si loop next pop si ;恢復(fù)現(xiàn)場 pop cx pop ax retsubcount endpcrlf proc near mov dl,0dh mov ah,2 int 21h m

26、ov dl,0ah mov ah,2 int 21h ret ;子程序返回crlf endpcode endsend main五、實(shí)驗(yàn)報(bào)告 畫出程序流程圖。 列出任務(wù)中完整的程序清單。(3) 針對實(shí)驗(yàn)內(nèi)容作小結(jié)。實(shí)驗(yàn)八:DOS中斷例程應(yīng)用一、實(shí)驗(yàn)?zāi)康?. 掌握DOS系統(tǒng)提供的DOS中斷應(yīng)用。2. 鞏固匯編語言編程方法。3. 按照要求書寫實(shí)驗(yàn)報(bào)告。二、實(shí)驗(yàn)儀器設(shè)備、材料 1. pc機(jī)三、預(yù)習(xí)內(nèi)容 1. 認(rèn)真閱讀本實(shí)驗(yàn)指導(dǎo)。2. 參看教材,了解DOS中斷功能調(diào)用方法,注意每個(gè)功能的入口參數(shù),出口參數(shù)以及調(diào)用的中斷功能號。四、實(shí)驗(yàn)內(nèi)容與步驟1.實(shí)驗(yàn)內(nèi)容(1)學(xué)習(xí)下面程序,程序?qū)崿F(xiàn)在屏幕上的5行12列顯示字符串“Welcome to masm!”。 data segmentstring db wel

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論