




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課課 程程 實實 驗驗 報報 告告課程名稱:課程名稱: 匯編語言程序設(shè)計匯編語言程序設(shè)計 實驗名稱:實驗名稱: 實驗地點:實驗地點: 南一樓南一樓 804804 室室 指導(dǎo)教師:指導(dǎo)教師: 李專李專 專業(yè)班級:學(xué)專業(yè)班級:學(xué) 號:號: 姓姓 名:名: 同組學(xué)生:同組學(xué)生: 報告日期:報告日期: 成績:成績: 計算機科學(xué)與技術(shù)學(xué)院計算機科學(xué)與技術(shù)學(xué)院目錄目錄1 實驗?zāi)康呐c要求.12 實驗內(nèi)容.13 實驗過程.23.1 實驗?zāi)康?23.1.1 設(shè)計思想.23.1.2 源程序代碼.23.2 實驗?zāi)康?63.2.1 設(shè)計思想.63.2.2 源程序代碼.63.3 實驗結(jié)果.124 實驗體會 .12匯匯
2、編編 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告11實驗?zāi)康呐c要求實驗?zāi)康呐c要求(1) 掌握子程序參數(shù)傳遞的 3 種方式,特別是利用堆棧傳遞參數(shù)的方法;(2)掌握模塊化程序設(shè)計的方法;(3)進一步熟悉 TD 的使用,并加深對常用 DOS 功能調(diào)用的理解;2 實驗內(nèi)容實驗內(nèi)容任務(wù):編寫程序?qū)崿F(xiàn)類似 C 語言函數(shù) scanf()和 printf()的功能:先從鍵盤輸入一個N1 進制的有符號字符串,再以 N2 進制的形式顯示出來,N1 和 N2 由鍵盤輸入。例如:Input N1: 16Input N2: 10Input string: -7FFF Output: -32767 (屏
3、幕顯示)提示:首先需要一個子程序?qū)?N1 進制的字符串轉(zhuǎn)換為二進制數(shù),然后還需要一個子程序?qū)⒍M制數(shù)轉(zhuǎn)換為 N2 進制的字符串。要求:(1) 用子程序 scanfAsm 實現(xiàn)將 N1 進制的字符串轉(zhuǎn)換為二進制的有符號數(shù):子程序參數(shù):子程序參數(shù): DS:SI 指向字符串的首地址 (可能有正負號,字符串以 0結(jié)尾)BASE = N1 (BASE 是由主程序在數(shù)據(jù)段中用 DB 定義的變量)(AX) = 轉(zhuǎn)換結(jié)果(2) 用子程序 printAsm 實現(xiàn)將二進制有符號數(shù)轉(zhuǎn)換為 N2 進制的字符串,調(diào)用printAsm 的方法如下:PUSH需要轉(zhuǎn)換的二進制數(shù)PUSHN2;將二進制數(shù)轉(zhuǎn)換為該數(shù)制的字符串PU
4、SH緩沖區(qū)段地址;轉(zhuǎn)換結(jié)果保存在該緩沖區(qū)中PUSH緩沖區(qū)偏移地址CALLFAR PTR printAsmADDSP, 8匯匯 編編 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告2(3) 主程序、子程序 scanfAsm、子程序 printAsm 分別定義在模塊mainIO.asm、scanfAsm.asm、printAsm.asm 中;(4) 畫出 2 個子程序流程圖,給出寄存器、存儲單元的分配方法;(5) 對于每種數(shù)制,至少輸入正負數(shù)字符串各一個進行測試。3實驗過程實驗過程3.1 實驗?zāi)康膶嶒災(zāi)康?用子程序 scanfAsm 實現(xiàn)將 N1 進制的字符串轉(zhuǎn)換為二進制的有符號數(shù)3.
5、1.1 設(shè)計思想設(shè)計思想用一個 check 函數(shù)檢查輸入的字符串中是否存在非法的字符,如果全部通過,則通過一個循環(huán)將其轉(zhuǎn)換為二進制的字符,保存在 ax 中。3.1.2 源程序代碼源程序代碼.386data segment use16tip1 db Input Error!rf db 0ah,0dh,$mark db ?base dw ?data endsstack segment use16 stackdb 20 dup(?)stack ends;check,寄存器傳參,判斷輸入字符是否符和進制數(shù);cl 為進制,ch 為字符,;正確時,返回 ch 為實際數(shù),;錯誤時,輸出 tip1,并返回 d
6、oscode segment use16assume cs:code,ds:data,ss:stackcheck proc farsub ch,0cmp ch,10匯匯 編編 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告3jge l1;不是數(shù)字字符跳轉(zhuǎn)l4: ;比較 ch 是否在 0-clcmp ch,0jge l2jmp exit2;輸入字符小于 0l2:cmp ch,cljge l3jmp exit1l3: ;輸入字符大于進制數(shù)jmp exit2l1: ;輸入字符為字母時sub ch,A-0;判斷是否為字母cmp ch,0jge l6jmp exit2;不為字母l6:cmp
7、ch,26;26 個大寫字母jge l5;輸入字符不是大寫字母add ch,10;A代表 10jmp l4l5: ;判斷字符是否為小寫字母sub ch,a-Acmp ch,0jge l7jmp exit2l7:cmp ch,26jll8jmp exit2l8:add ch,10jmp l4exit1:;正確時調(diào)用ret匯匯 編編 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告4exit2:;錯誤時調(diào)用mov ax,datamov ds,axlea dx,tip1mov ah,9int 21hpop cx;清除棧 ipmov ah,4chint 21hcheck endppublic
8、 check;scanfAsm,堆棧傳參,入棧順序,ds,si,word ptr base;DS:si,指向字符串首地址,可有正負號,字符串以 0 結(jié)尾;Base=n1(db);輸出 ax 為轉(zhuǎn)換結(jié)果scanfAsm proc farpush bpmov bp,sppush sipush cxpush bxpush dspush esmov ax,datamov ds,ax;獲取參數(shù)mov cx,bp+6mov si,bp+8mov ax,bp+10mov es,axxor ax,axmov base,cxmov mark,0;用于判斷是否為負數(shù);獲取第一個字符,判斷是否為符號匯匯 編編 語語
9、 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告5;不是符號則繼續(xù),是符號則跳過mov ch,byte ptr es:sicmp ch,-jne sl1inc simov mark,1jmp sl3sl1:cmp ch,+jne sl3inc sisl3: ;循環(huán)轉(zhuǎn)換mov ch,byte ptr es:sicmp ch,0jne sl4jmp sl5sl4:call far ptr checkmovsx bx,chimul baseadd ax,bxinc sijmp sl3sl5:cmp mark,1jne sl2neg axsl2:pop espop dspop bxpop cxp
10、op sipop bpret scanfAsm endppublic scanfAsm匯匯 編編 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告6code endsend3.2 實驗?zāi)康膶嶒災(zāi)康?用子程序 printAsm 實現(xiàn)將二進制有符號數(shù)轉(zhuǎn)換為 N2 進制的字符串3.2.1 設(shè)計思想設(shè)計思想 先通過一個一個循環(huán),將余數(shù)逆序保存在一個緩存區(qū)中,然后順序替換目標緩存區(qū)的值。3.2.2 源程序代碼源程序代碼.386num equ 20data segment use16tab db 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZbuf db num dup
11、(?),$base dw ?data endsstack segment use16 stackdb 20 dup(?)stack endscode segment use16assume cs:code,ds:data,ss:stack;調(diào)用方法如下;PUSH 需要轉(zhuǎn)換的二進制數(shù);PUSH N2;將二進制數(shù)轉(zhuǎn)換為該數(shù)制的字符串;PUSH 緩沖區(qū)段地址;轉(zhuǎn)換結(jié)果保存在該緩沖區(qū)中;PUSH 緩沖區(qū)偏移地址;CALL FAR PTR printAsm;ADDSP, 8printAsm proc farpush bpmov bp,sppush axpush bxpush espush si匯匯 編編
12、 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告7push dxpush dspush dimov ax,datamov ds,axmov si,bp+6mov ax,bp+8mov es,axmov bx,bp+10mov base,bxmov ax,bp+12xor dx,dxmov di,num-1;判斷是否為負數(shù),是時輸出一個負號cmp ax,0jge l1neg axmov byte ptr es:si,-inc sil1: ;循環(huán)輸出字符xor dx,dxdiv basemov bx,dxmov dl,tabbx;mov byte ptr es:si,dlmov buf
13、di,dldec dicmp ax,0je exitjmp l1exit:mov dl,bufdi+1mov byte ptr es:si,dlinc diinc sicmp dl,$匯匯 編編 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告8jne exit;mov byte ptr es:si,$pop dipop dspop dxpop sipop espop bxpop axpop bpretprintAsm endppublic printAsmcode endsEndmainIO.asm 設(shè)計思想:通過堆棧調(diào)用函數(shù)的形式調(diào)用 scanfAsm 和printAsm 即可。
14、代碼如下:.386extrn check:farextrn scanfAsm:farextrn printAsm:fardata segment use16tip1 db Input N1:$tip2 db Input N2:$tip3 db Input String:$tip4 db Output:$rf db 0ah,0dh,$n1 db ?n2 db ?ten dw 10inString db 10 len db ? db 10 dup(?)outString db 20 dup(?)data endsstack segment use16 stack匯匯 編編 語語 言言 程程 序序
15、設(shè)設(shè) 計計 實實 驗驗 報報 告告9db 200 dup(?)stack endscode segment use16assume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axlea dx,tip1mov ah,09hint 21hlea dx,inStringmov ah,0ahint 21hlea dx,rfmov ah,09hint 21hcall stonmov n1,allea dx,tip2mov ah,09hint 21hlea dx,inStringmov ah,0ahint 21hlea dx,rfmov ah,09hi
16、nt 21hcall stonmov n2,allea dx,tip3mov ah,09hint 21h匯匯 編編 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告10lea dx,inStringmov ah,0ahint 21hlea dx,rfmov ah,09hint 21hxor bx,bxmov bl,inString+1mov byte ptr inStringbx+2,0;調(diào)用 scanfAsmpush dslea dx,inString+2push dxmovsx cx,n1push cxcall far ptr scanfAsmadd sp,6;調(diào)用 printA
17、sm;mov ax,8001h;mov n2,10push axmovsx bx,n2push bxpush dslea bx,outStringpush bxcall far ptr printAsmadd sp,8;輸出字符串lea dx,tip4mov ah,9hint 21hlea dx,outStringint 21hmov ah,4chint 21h匯匯 編編 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告11;將輸入字符串轉(zhuǎn)為數(shù)字,保存在 ax 中ston procmov cl,10 xor bx,bxxor dx,dxxor ax,axL1: cmp bl,lenjlconjmp exit1con:mov ch,inStringbx+2call far ptr checkimul tenmovsx dx,chadd ax,dxinc bxjmp L1exit1:retston endpcode endsend start匯匯 編編 語語 言言 程程 序序 設(shè)設(shè) 計計 實實 驗驗 報報 告告123.3 實驗結(jié)果實驗結(jié)果4 實驗體會實驗體會通過此次試驗使我對于匯編語言子程序的編寫和調(diào)用有了更加清晰的認識,對子程序在內(nèi)存中物理過程更加清楚。根據(jù)在模塊化程序設(shè)計思想,我們在編
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 車輛買賣賒購合同
- 倉房買賣合同協(xié)議書
- 的聘用合同年
- 銀行解除借款合同
- 《蘇武傳》教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版高中語文選擇性必修中冊
- Unit 1 How can I get there?PartA(教學(xué)設(shè)計)-2024-2025學(xué)年人教PEP版英語六年級上冊
- 山東醫(yī)學(xué)高等??茖W(xué)校《物理化學(xué)B(下)》2023-2024學(xué)年第二學(xué)期期末試卷
- 山東華宇工學(xué)院《土木工程材料》2023-2024學(xué)年第二學(xué)期期末試卷
- 山西藥科職業(yè)學(xué)院《財務(wù)大數(shù)據(jù)決策》2023-2024學(xué)年第二學(xué)期期末試卷
- 內(nèi)蒙古電子信息職業(yè)技術(shù)學(xué)院《有色冶金設(shè)備》2023-2024學(xué)年第二學(xué)期期末試卷
- 2024-2025學(xué)年第二學(xué)期教學(xué)教研工作安排表 第二版
- 開展課外讀物負面清單管理的具體實施舉措方案
- 人體的免疫系統(tǒng)課件
- 六年級下學(xué)期開學(xué)第一課
- 體育原理課件
- 生物化學(xué)緒論
- 公路工程項目隱隱蔽工程管理辦法
- PCCP安裝與水壓試驗
- 中國民間藝術(shù) ppt課件
- 景觀生態(tài)學(xué)教學(xué)大綱(共10頁)
- 電子舌技術(shù)在普洱茶品質(zhì)識別中應(yīng)用的研究
評論
0/150
提交評論