微機原理設計實驗之兩個數相乘_第1頁
微機原理設計實驗之兩個數相乘_第2頁
微機原理設計實驗之兩個數相乘_第3頁
微機原理設計實驗之兩個數相乘_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上課程設計題目:兩個數相乘1、 實驗目的1、領會匯編語言的編程思想;2、掌握匯編語言的指令,加深乘法指令和循環指令的用法;3、學會DOS功能的調用。2、 實驗內容實現兩個十進制數的乘法,被乘數和乘數均以ASCII碼形式存放在內存中,乘積在屏幕上顯示出來。3、 實驗原理 本實驗設計A、B兩個數相乘。巧妙地運用了數學中的乘法原理,將B的低位和A的最低位相乘得到的數的低位存到AL中,這個數的進位存到AH中,再用B的低位和A的次低位相乘,得到一個數,這個數的低位和上一次的進位相加。循環此過程直到到B與A的最高位相乘結束,并與上一次結果的進位相加,得到最后的結果。4、 程序設計流

2、程圖 (此處畫上是實驗紙上的流程圖)5、 實驗程序DATA SEGMENT ;定義數據段DATA1 DB 32H,39H,30H,35H,34H ;用ASCII碼表示被乘數45092DATA2 DB 34H ;用ASCII碼表示乘數4MES1 DB '*','$'MES2 DB '=','$'BUF DB 'Result$' RESULT DB 6 DUP(00H) ;定義存放結果的數據緩沖區,6個字節長,初值為0DATA ENDS ;數據段結束STACK SEGMENT ;定義堆棧段STA DB 20 DUP(?

3、) ;為變量STA分配20個字節的空間TOP EQU LENGTH STA;返回利用DUP定義的數組元素的個數到TOP,TOP=20STACK ENDS ;堆棧段結束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功能號09H送AH INT 21H ;顯示字符串please input

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

5、移地址送DX INT 21H MOV SI,OFFSET DATA2 MOV BL,SI ;DATA2中的乘數送BL AND BL,B ;屏蔽乘數高4位,ASCII碼轉換為十六進制 MOV SI,OFFSET DATA1 ;被乘數偏移地址送SI MOV DI,OFFSET RESULT ;運算結果偏移地址送DI MOV CX,05 ;設置循環次數 LOOP1: MOV AL,SI ;被乘數送AL AND AL,B ;屏蔽被乘數高4位,ASCII碼轉換為十六進制 INC SI MUL BL ;AL * BL送AX AAM ;乘法十進制調整 ADD AL,DI ;結果低位與前次計算的進位相加 AA

6、A ;BCD碼加法十進制調整指令MOV DI,AL ;計算結果低位送DI INC DI MOV DI,AH ;計算結果高位進位送DI+1 LOOP LOOP1 ;循環 MOV CX,06 MOV SI, DI ;計算結果送SIDISPL:MOV AH,02H ;調用DOS功能號02H送AH MOV DL,SI ADD DL,30H ;結果轉換為ASCII碼 INT 21H ;顯示一位數據 DEC SI ;地址減一,繼續后面的數據顯示 LOOP DISPL ;顯示運算結果 MOV AX,4C00H ;返回DOSINT 21H ;結束 CODE ENDSEND START 6、 DOS功能調用 在

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

8、存器中的ASC碼字符送到屏幕顯示。02H號功能可顯示任意字符,如果DL。09H號功能不能顯示符號,所以02H號功能可作為09H號功能的補充。3) 字符串顯示(09H號功能)。09H號功能子程序將指定的內存緩沖區中的字符串送屏幕顯示。要現實的字符串必須事先存放在內存數據區中,且字符串以作為結束標志,除此之外,還需要把存放待顯示字符串的內存首地址分別存入DS和DX中。也可以將非顯示字符(如:回車,換行)的ASC碼(如:0AH,0DH)插入字符串中。4) 讀入字符串操作(0AH號功能)。這個功能子程序入口參數是DS:DX=輸入緩沖區首地址。5) 返回操作系統(4CH號功能)。這個功能子程序無入口參數

9、,結束當前正在執行的程序,并返回操作系統,屏幕上顯示操作系統提示符。7、 部分指令介紹1、AAA是對BCD碼的加法十進制進行調整,用于對兩個非組合的BCD碼相加的結果進行調整,產生一個非組合的BCD碼。2、AAM指令總是跟在乘法指令之后,對兩個非組合BCD碼相乘結果進行調整,最后得到一個正確的非組合BCD碼結果。3、EQU:標號賦值偽指令,代表數據、數據地址或程序地址。4、DB:偽指令,是用來定義字節類型的偽變量8、 實驗結果9、 實驗總結及體會通過此次實驗,我查閱了相關資料,學習匯編語言,了解了匯編語言的編程思路,同時還學到一些DOS功能以及其調用方式。從匯編語言的編程思路上來看,匯編的編程

10、思路一般是基于最基礎的原理,易理解,這樣就會產生較清晰的編程思路,但是在編程上還是有些吃力。一方面與自身編程經歷少有關外,還有一方面就是沒有很系統地掌握這門計算機語言,對計算機內部運行機制的理解還不到位,感覺很簡單,卻不知道從何下手,知道如何實現部分功能,卻不能系統地聯系起來,可以說,只能寫程序段,不熟悉怎么寫程序。此次實驗最大的收獲就是了解并學習了DOS功能。這是我們上課沒有涉及到的,感覺很新鮮,覺得這是匯編很關鍵的地方,可以大大減輕用戶的編程負擔,使用起來也很簡單方便。有了這些調用這些DOS功能號可使編寫的程序簡單,易讀,代碼緊湊,調試也方便。而且,我們可以利用DOS的這些功能實現更便捷更廣泛

溫馨提示

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

評論

0/150

提交評論