匯編語(yǔ)言課程設(shè)計(jì)匯編語(yǔ)言實(shí)現(xiàn)四則運(yùn)算_第1頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)匯編語(yǔ)言實(shí)現(xiàn)四則運(yùn)算_第2頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)匯編語(yǔ)言實(shí)現(xiàn)四則運(yùn)算_第3頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)匯編語(yǔ)言實(shí)現(xiàn)四則運(yùn)算_第4頁(yè)
匯編語(yǔ)言課程設(shè)計(jì)匯編語(yǔ)言實(shí)現(xiàn)四則運(yùn)算_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 課 程 設(shè) 計(jì) 說(shuō) 明 書(shū)實(shí)驗(yàn)名稱(chēng):匯編語(yǔ)言實(shí)現(xiàn)四則運(yùn)算 指導(dǎo)教師: 院 系: 信息科學(xué)與工程學(xué)院 學(xué)生姓名: 學(xué) 號(hào): 專(zhuān)業(yè)班級(jí): 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù) 2011年05月29日目錄一課程設(shè)計(jì)的目的二總體設(shè)計(jì)思想.1三各算法流程圖.3 四、源代碼.6五、程序執(zhí)行結(jié)果.19.設(shè)計(jì)總結(jié).20 設(shè)計(jì)目的一設(shè)計(jì)目的 通過(guò)本課程設(shè)計(jì)所要達(dá)到的目得是:1.培養(yǎng)理論聯(lián)系實(shí)際的設(shè)計(jì)思想,提高綜合運(yùn)用匯編語(yǔ)言課程的理論分析問(wèn)題.解決問(wèn)題的能力。2.通過(guò)查找運(yùn)用設(shè)計(jì)資料,完成必須的基本訓(xùn)練。3.通過(guò)本課程設(shè)計(jì)加深對(duì)計(jì)算機(jī)系統(tǒng)內(nèi)部的了解,為以后的學(xué)習(xí)打好基礎(chǔ)。設(shè)計(jì)思想二設(shè)計(jì)思想2.1 存儲(chǔ)結(jié)構(gòu)(1)根據(jù)提示信息從鍵盤(pán)上

2、輸入第一個(gè)、第二個(gè)十進(jìn)制數(shù)。將這兩個(gè)數(shù)分別存放在digit1、digit2 中。(2)對(duì)這兩個(gè)數(shù)分別做加、減、乘、除。所得結(jié)果分別存放在result_add、result_sub、result_mul、result_div1、result_div2。2.2 設(shè)計(jì)方法(1)從鍵盤(pán)上輸入兩個(gè)十進(jìn)制數(shù)(2)將這兩個(gè)十進(jìn)制數(shù)分別轉(zhuǎn)化成二進(jìn)制數(shù)。(3)對(duì)二進(jìn)制數(shù)分別進(jìn)行加、減、乘、除運(yùn)算。(4)對(duì)于減、除運(yùn)算要比較兩個(gè)數(shù)的大小。(5)將所得的結(jié)果在轉(zhuǎn)化成十進(jìn)制輸出。各算法流程圖做減法運(yùn)算做加法運(yùn)算輸入兩個(gè)數(shù)開(kāi)始做乘法運(yùn)算做除法運(yùn)算輸出結(jié)果 結(jié)束圖1、主流程結(jié)束輸出結(jié)果做加法運(yùn)算輸入兩個(gè)數(shù)開(kāi)始圖2、加法流

3、程做減法運(yùn)算輸出結(jié)果結(jié)束小于大于比較被減數(shù)于減數(shù)的大小輸入兩個(gè)數(shù)輸入兩個(gè)數(shù)輸入兩個(gè)數(shù)輸入兩個(gè)數(shù)開(kāi)始符號(hào)位和值分開(kāi)處理圖3、減法流程結(jié)束輸入結(jié)果做乘法運(yùn)算輸入兩個(gè)數(shù)開(kāi)始 圖4、乘法流程符號(hào)位和值分開(kāi)處理小于大于輸入兩個(gè)數(shù)比較被除數(shù)于除數(shù)的大小做除法運(yùn)算輸入結(jié)果結(jié)束開(kāi)始 圖5、除法流程源代碼.model small.stack.data user_string db 11,?,11 dup(0) ;鍵盤(pán)緩沖區(qū),存放鍵入的十進(jìn)制ascii碼 digit1 dw 0,0,0,0,$ ;輸入的第一個(gè)十進(jìn)制數(shù) digit2 dw 0,0,0,0,$ ;輸入的第二個(gè)十進(jìn)制數(shù) result_add dw 0,

4、0,0,0,$ ;兩個(gè)十進(jìn)制數(shù)的和 result_sub dw 0,0,0,0,$ ;兩個(gè)十進(jìn)制數(shù)的差 result_mul dw 0,0,0,0,0,0,$ ;兩個(gè)十進(jìn)制數(shù)的積 result_div1 dw 0,0,0,0,0,0,$ ;兩個(gè)十進(jìn)制數(shù)的商 result_div2 dw 0,0,0,0,0,0,$ ;兩個(gè)十進(jìn)制數(shù)的商的余數(shù) result_str db 24 dup(0),$ ;暫時(shí)存放要輸出的十進(jìn)制數(shù)的ascii碼 mulfact dw 10 ;乘數(shù)因子 flag dw 3 ;標(biāo)志 temp_dx dw 0,0,0,0 string_l db 0ah,0dh,digit1 di

5、git2,$ string_e db 0ah,0dh,digit1 = digit2,shang 1 yu 0.,$ string_crlf db 0ah,0dh,$ string_digit1 db 0ah,0dh,the first digit is:,$ string_digit2 db 0ah,0dh,the second digit is:,$ string_he db 0ah,0dh, he shi :,$ string_cha db 0ah,0dh, cha shi :,$ string_mul db 0ah,0dh,ji shi :,$ string_div db 0ah,0d

6、h, shang shi(the first is shang,the second is yushu):,$.code ;*main proc far ;主過(guò)程start: mov ax,data mov ds,ax ;* mov dx,offset string_digit1 ;輸入第一個(gè)十進(jìn)制數(shù) call displaystring mov dx,offset user_string call read_keys call crlf mov di,offset user_string mov bx,offset digit1 ;將第一個(gè)十進(jìn)制數(shù)存入digit1 call asc_dec

7、;* mov dx,offset string_digit2 ;輸入第二個(gè)十進(jìn)制數(shù) call displaystring mov dx,offset user_string call read_keys call crlf mov di,offset user_string mov bx,offset digit2 ;將第二個(gè)十進(jìn)制數(shù)存入digit2 call asc_dec ;* mov dx,offset string_he ;將兩個(gè)數(shù)求和,并將結(jié)果存入 call displaystring ; result_add call option_add mov bx,offset result

8、_add mov di,offset result_str+23 call dec_asc ;把result_add數(shù)組轉(zhuǎn)為ascii碼輸出;* mov dx,offset string_cha ;將兩個(gè)數(shù)相減 call displaystring ; 結(jié)果存入result_sub call option_sub mov bx,offset result_sub mov di,offset result_str+23 call dec_asc ;將result_sub轉(zhuǎn)為ascii碼并輸出;* mov dx,offset string_mul ;把兩個(gè)數(shù)的積存入string_mul call

9、displaystring call option_mul mov bx,offset result_mul mov di,offset result_str+23 call dec_asc ;將string_mul轉(zhuǎn)為ascii并輸出 ;* mov dx,offset string_div ;兩個(gè)數(shù)相除 call displaystring call option_div ;* mov ax,4c00h int 21h ;退出程序 main endp ;*option_add proc near ; 求兩個(gè)數(shù)的和 mov ax,digit1 mov dx,digit1+2 mov cx,di

10、git1+4 add ax,digit2 adc dx,digit2+2 adc cx,digit2+4 adc result_add+6,0 mov result_add,ax mov result_add+2,dx mov result_add+4,cx ret option_add endp ;*option_cmp proc near ;比較兩個(gè)數(shù)的大小 mov si,6 cmpnext: mov ax,digit1si cmp ax,digit2si jb b ja a cmp si,0 je o dec si dec si jmp cmpnext b: mov dl,- jmp c

11、mpexit a: mov dl,+ jmp cmpexit o: mov dl,0 cmpexit: ret option_cmp endp ;*option_sub proc near ;差的符號(hào)和值分別處理, call option_cmp ;通過(guò)option_cmp子過(guò)程 mov ah,02h ;判斷符號(hào),通過(guò)大數(shù)減 int 21h ;去小數(shù)得到差的絕對(duì)值 cmp dl,0 ;符號(hào)和絕對(duì)值分開(kāi)輸出 je osexit cmp dl,- jne f1 mov bx,offset digit2 mov di,offset digit1 jmp f2 f1: mov bx,offset di

12、git1 mov di,offset digit2 f2: clc pushf mov si,0 mov cx,3 subnext: mov ax,bx+si popf push bx mov bx,di sbb ax,bx+si pop bx pushf mov result_subsi,ax inc si inc si loop subnext popf osexit: ret option_sub endp ;*option_mul proc mov dx,0 mov ax,digit1 ;取被乘數(shù)低16位 mul digit2 ;被乘數(shù)低16位*乘數(shù)低16位 mov result_mu

13、l,ax ;保存相乘結(jié)果 mov result_mul+2,dx mov ax,digit1+2 ;去被乘數(shù)高16位 mov dx,0 mul digit2 ;被乘數(shù)高16位*乘數(shù)低16位 add result_mul+2,ax adc result_mul+4,dx mov ax,digit1 ;取被乘數(shù)低16位 mov dx,0 mul digit2+2 ;被乘數(shù)低16位*乘數(shù)高16位 add result_mul+2,ax ;中間結(jié)果相加 adc result_mul+4,dx pushf ;暫存標(biāo)志寄存器 mov ax,digit1+2 mov dx,0 mul digit2+2 ;被

14、乘數(shù)高16位*乘數(shù)高16位 add result_mul+4,ax ;中間結(jié)果相加 adc result_mul+6,dx popf ;取標(biāo)志寄存器 mov dx,0 adc result_mul+6,dx ret option_mul endp ;*option_div proc near ;通過(guò)option_cmp 判斷被除數(shù)是否 call option_cmp ;大于除數(shù),相等,小于,大于分開(kāi) cmp dl,0 ;處理 je e cmp dl,- je ol call div_1 call crlf mov bx,offset result_div1 mov di,offset resu

15、lt_str+23 call dec_asc call crlf mov bx,offset digit1 mov di,offset result_str+23 call dec_asc jmp odexit e: mov dx,offset string_e jmp dis ol: mov dx,offset string_l dis: call displaystring odexit: ret option_div endp ;*div_1 proc near ; 該子過(guò)程處理被除數(shù)大于 mov ax,0 ; 除數(shù)的情況 mov dx,0 ;將兩個(gè)數(shù)相除,并將結(jié)果商和 mov cx,0

16、 mov si,0dodnext: ; 余數(shù)分別存入 相應(yīng)的數(shù)組 push dx push ax push si push cx call option_cmp pop cx pop si pop ax cmp dl,+ je d1 cmp dl,0 je d2 pop dx jmp div1exit d2: pop dx add ax,1 adc dx,0 adc cx,0 adc si,0 jmp div1exitd1: pop dx clc mov bx,digit1 sbb bx,digit2 mov digit1,bx mov bx,digit1+2 sbb bx,digit2+2

17、mov digit1+2,bx mov bx,digit1+4 sbb bx,digit2+4 mov digit1+4,bx mov bx,digit1+6 sbb bx,digit2+6 mov digit1+6,bx add ax,1 adc dx,0 adc cx,0 adc si,0 jmp dodnextdiv1exit: mov result_div1,ax mov result_div1+2,dx mov result_div1+4,cx mov result_div1+6,si ret div_1 endp ;*asc_dec proc near ;將ascii碼表示的十轉(zhuǎn)為

18、二進(jìn)制表示的十進(jìn)制數(shù) inc di mov cx,0 mov cl,di a_decnext: inc di mov ax,0 mov al,di sub al,030h call mul_10 call add_char loop a_decnext aexit: ret asc_dec endp ;*add_char proc near ;將一個(gè)數(shù)字加入到內(nèi)存十進(jìn)制數(shù)中 add bx,ax pushf mov ax,0h popf adc bx+2,ax adc bx+4,ax ret add_char endp ;*(入口:bx)* mul_10 proc near ;將內(nèi)存中一個(gè)十進(jìn)制

19、數(shù)乘10(10個(gè)字節(jié)大小) push dx ;bx中放有十進(jìn)制數(shù)的偏移地址 push ax push cx mov cx,4 mov si,0 mnext: mov dx,0h mov ax,bx+si mul mulfact mov bx+si,ax mov temp_dxsi,dx inc si inc si loop mnext clc mov dx,0 mov ax,temp_dx adc bx+2,ax adc bx+4,dx adc bx+6,dx adc bx+8,dx mov ax,temp_dx+2 add bx+4,ax adc bx+6,dx adc bx+8,dx mo

20、v ax,temp_dx+4 add bx+6,ax adc bx+8,dx mov ax,temp_dx+6 add bx+8,ax pop cx pop ax pop dx ret mul_10 endp ;*dec_asc proc near ;將二進(jìn)制表示的十進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制ascii碼 mov flag,3 ;bx和di為入口寄存器c00: mov dx,0 mov ax,0 mov ax,2 mul flag l: mov si,ax c4: mov dx,0 mov ax,bx+si cmp ax,0 je c9 mov cx,flag inc cx next: mov ax,bx+si di

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論