微機(jī)原理設(shè)計(jì)實(shí)驗(yàn)之兩個(gè)數(shù)相乘(共4頁)_第1頁
微機(jī)原理設(shè)計(jì)實(shí)驗(yàn)之兩個(gè)數(shù)相乘(共4頁)_第2頁
微機(jī)原理設(shè)計(jì)實(shí)驗(yàn)之兩個(gè)數(shù)相乘(共4頁)_第3頁
微機(jī)原理設(shè)計(jì)實(shí)驗(yàn)之兩個(gè)數(shù)相乘(共4頁)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

1、課程設(shè)計(jì)題目:兩個(gè)數(shù)相乘1、 實(shí)驗(yàn)?zāi)康?、領(lǐng)會(huì)匯編語言的編程思想;2、掌握匯編語言的指令,加深乘法指令和循環(huán)指令的用法;3、學(xué)會(huì)DOS功能的調(diào)用。2、 實(shí)驗(yàn)內(nèi)容實(shí)現(xiàn)兩個(gè)十進(jìn)制數(shù)的乘法,被乘數(shù)和乘數(shù)均以ASCII碼形式存放在內(nèi)存中,乘積在屏幕上顯示出來。3、 實(shí)驗(yàn)原理 本實(shí)驗(yàn)設(shè)計(jì)A、B兩個(gè)數(shù)相乘。巧妙地運(yùn)用了數(shù)學(xué)中的乘法原理,將B的低位和A的最低位相乘得到的數(shù)的低位存到AL中,這個(gè)數(shù)的進(jìn)位存到AH中,再用B的低位和A的次低位相乘,得到一個(gè)數(shù),這個(gè)數(shù)的低位和上一次的進(jìn)位相加。循環(huán)此過程直到到B與A的最高位相乘結(jié)束,并與上一次結(jié)果的進(jìn)位相加,得到最后的結(jié)果。4、 程序設(shè)計(jì)流程圖 (此處畫上是實(shí)驗(yàn)紙上

2、的流程圖)5、 實(shí)驗(yàn)程序DATA SEGMENT ;定義數(shù)據(jù)段DATA1 DB 32H,39H,30H,35H,34H ;用ASCII碼表示被乘數(shù)45092DATA2 DB 34H ;用ASCII碼表示乘數(shù)4MES1 DB '*','$'MES2 DB '=','$'BUF DB 'Result$' RESULT DB 6 DUP(00H) ;定義存放結(jié)果的數(shù)據(jù)緩沖區(qū),6個(gè)字節(jié)長,初值為0DATA ENDS ;數(shù)據(jù)段結(jié)束STACK SEGMENT ;定義堆棧段STA DB 20 DUP(?) ;為變量STA分配20

3、個(gè)字節(jié)的空間TOP EQU LENGTH STA;返回利用DUP定義的數(shù)組元素的個(gè)數(shù)到TOP,TOP=20STACK ENDS ;堆棧段結(jié)束CODE SEGMENT ;定義代碼段 ASSUME CS: CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATA MOV DS,AX ;DSAX MOV AX,STACK MOV SS,AX ;SSSTACK MOV SP,TOP ;棧頂指針指向TOP MOV DX,OFFESET BUF MOV AH,9 ;DOS功能號(hào)09H送AH INT 21H ;顯示字符串please input LEA SI,DATA1

4、 ;被乘數(shù)首地址送SI MOV BX,05HL1: MOV AH,02H ;DOS功能號(hào)02H送AH MOV DL,SI+BX-1 ;被乘數(shù)送DL INT 21H ; DOS功能號(hào)調(diào)用(顯示器輸出) DEC BX JNZ L1 MOV AH,09H ; DOS功能號(hào)09H送AH LEA DX,MES1 ;MES1的偏移地址送DX INT 21H ; DOS功能號(hào)調(diào)用(顯示字符串) LEA SI,DATA2 ;乘數(shù)地址送SI MOV AH,02H MOV DL,SI ;乘數(shù)送DL INT 21H ;顯示乘數(shù) MOV AH,09H LEA DX,MES2 ; MES2的偏移地址送DX INT 21

5、H MOV SI,OFFSET DATA2 MOV BL,SI ;DATA2中的乘數(shù)送BL AND BL,00001111B ;屏蔽乘數(shù)高4位,ASCII碼轉(zhuǎn)換為十六進(jìn)制 MOV SI,OFFSET DATA1 ;被乘數(shù)偏移地址送SI MOV DI,OFFSET RESULT ;運(yùn)算結(jié)果偏移地址送DI MOV CX,05 ;設(shè)置循環(huán)次數(shù) LOOP1: MOV AL,SI ;被乘數(shù)送AL AND AL,00001111B ;屏蔽被乘數(shù)高4位,ASCII碼轉(zhuǎn)換為十六進(jìn)制 INC SI MUL BL ;AL * BL送AX AAM ;乘法十進(jìn)制調(diào)整 ADD AL,DI ;結(jié)果低位與前次計(jì)算的進(jìn)位相加

6、 AAA ;BCD碼加法十進(jìn)制調(diào)整指令MOV DI,AL ;計(jì)算結(jié)果低位送DI INC DI MOV DI,AH ;計(jì)算結(jié)果高位進(jìn)位送DI+1 LOOP LOOP1 ;循環(huán) MOV CX,06 MOV SI, DI ;計(jì)算結(jié)果送SIDISPL:MOV AH,02H ;調(diào)用DOS功能號(hào)02H送AH MOV DL,SI ADD DL,30H ;結(jié)果轉(zhuǎn)換為ASCII碼 INT 21H ;顯示一位數(shù)據(jù) DEC SI ;地址減一,繼續(xù)后面的數(shù)據(jù)顯示 LOOP DISPL ;顯示運(yùn)算結(jié)果 MOV AX,4C00H ;返回DOSINT 21H ;結(jié)束 CODE ENDSEND START 6、 DOS功能調(diào)

7、用 在DOS軟中斷指令中最常用的是系統(tǒng)功能調(diào)用(INT 21H),主要完成文件管理,輸入/輸出設(shè)備控制,系統(tǒng)參數(shù)操作等等。它本身包含80多個(gè)子程序,每個(gè)字程序?qū)?yīng)一個(gè)功能號(hào),其編號(hào)為062H。此次課程設(shè)計(jì)用到的幾個(gè)常用DOS系統(tǒng)功能調(diào)用。1) 鍵盤顯示并回顯(01H號(hào)功能)。此功能程序?qū)呙桄I盤并等待輸入一個(gè)字符,直到按下一個(gè)鍵(輸入一個(gè)字符),先檢查是否有Ctrl+Break鍵,若是則退出,否則把字符的ASC碼送入寄存器AL,并在屏幕上顯示該字符。2) 在屏幕顯示一個(gè)字符(02H號(hào)功能)。該功能要求的入口參數(shù)為:將將要顯示的字符的ASC碼存入DL,功能號(hào)存入AH。在執(zhí)行INT 21H時(shí),會(huì)把

8、DL寄存器中的ASC碼字符送到屏幕顯示。02H號(hào)功能可顯示任意字符,如果DL。09H號(hào)功能不能顯示符號(hào),所以02H號(hào)功能可作為09H號(hào)功能的補(bǔ)充。3) 字符串顯示(09H號(hào)功能)。09H號(hào)功能子程序?qū)⒅付ǖ膬?nèi)存緩沖區(qū)中的字符串送屏幕顯示。要現(xiàn)實(shí)的字符串必須事先存放在內(nèi)存數(shù)據(jù)區(qū)中,且字符串以作為結(jié)束標(biāo)志,除此之外,還需要把存放待顯示字符串的內(nèi)存首地址分別存入DS和DX中。也可以將非顯示字符(如:回車,換行)的ASC碼(如:0AH,0DH)插入字符串中。4) 讀入字符串操作(0AH號(hào)功能)。這個(gè)功能子程序入口參數(shù)是DS:DX=輸入緩沖區(qū)首地址。5) 返回操作系統(tǒng)(4CH號(hào)功能)。這個(gè)功能子程序無入

9、口參數(shù),結(jié)束當(dāng)前正在執(zhí)行的程序,并返回操作系統(tǒng),屏幕上顯示操作系統(tǒng)提示符。7、 部分指令介紹1、AAA是對(duì)BCD碼的加法十進(jìn)制進(jìn)行調(diào)整,用于對(duì)兩個(gè)非組合的BCD碼相加的結(jié)果進(jìn)行調(diào)整,產(chǎn)生一個(gè)非組合的BCD碼。2、AAM指令總是跟在乘法指令之后,對(duì)兩個(gè)非組合BCD碼相乘結(jié)果進(jìn)行調(diào)整,最后得到一個(gè)正確的非組合BCD碼結(jié)果。3、EQU:標(biāo)號(hào)賦值偽指令,代表數(shù)據(jù)、數(shù)據(jù)地址或程序地址。4、DB:偽指令,是用來定義字節(jié)類型的偽變量8、 實(shí)驗(yàn)結(jié)果9、 實(shí)驗(yàn)總結(jié)及體會(huì)通過此次實(shí)驗(yàn),我查閱了相關(guān)資料,學(xué)習(xí)匯編語言,了解了匯編語言的編程思路,同時(shí)還學(xué)到一些DOS功能以及其調(diào)用方式。從匯編語言的編程思路上來看,匯編的編程思路一般是基于最基礎(chǔ)的原理,易理解,這樣就會(huì)產(chǎn)生較清晰的編程思路,但是在編程上還是有些吃力。一方面與自身編程經(jīng)歷少有關(guān)外,還有一方面就是沒有很系統(tǒng)地掌握這門計(jì)算機(jī)語言,對(duì)計(jì)算機(jī)內(nèi)部運(yùn)行機(jī)制的理解還不到位,感覺很簡單,卻不知道從何下手,知道如何實(shí)現(xiàn)部分功能,卻不能系統(tǒng)地聯(lián)系起來,可以說,只能寫程序段,不熟悉怎么寫程序。此次實(shí)驗(yàn)最大的收獲就是了解并學(xué)習(xí)了DOS功能。這是我們上課沒有涉及到的,感覺很新鮮,覺得這是匯編很關(guān)鍵的地方,可以大大減輕用戶的編程負(fù)擔(dān),使用起來也很簡單方便。有了這些調(diào)用這些DOS功能號(hào)可使編寫的程序簡單,易讀,代碼緊湊,調(diào)試也方便。而且,我們可以利用DOS的這些功能實(shí)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論