實驗一 兩個多位十進制數(shù)相加的實驗.doc_第1頁
實驗一 兩個多位十進制數(shù)相加的實驗.doc_第2頁
實驗一 兩個多位十進制數(shù)相加的實驗.doc_第3頁
實驗一 兩個多位十進制數(shù)相加的實驗.doc_第4頁
實驗一 兩個多位十進制數(shù)相加的實驗.doc_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

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

文檔簡介

實驗一 兩個多位十進制數(shù)相加的實驗1、 實驗目的 1、學習數(shù)據(jù)傳送和算術運算指令的用法。 2、熟悉在PC機上建立、匯編、鏈接、調(diào)試和運行匯編語言程序的過程。2、 實驗內(nèi)容 將兩個多位十進制數(shù)相加,要求被加數(shù)和加數(shù)均以ASCII碼形式各自順序存放在以DATA1、DATA2為首的5個內(nèi)存單元中(低位在前),結果送回DATA1處。3、 程序框圖 4、 程序清單DATA SEGMENT ;定義數(shù)據(jù)段DATA1 DB 33H,39H,31H,37H,34H ;被加數(shù)DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H ;加數(shù)DATA2END EQU $-1SUM DB 5 DUP(?) ;定義5個空字節(jié)DATA ENDSSTACK SEGMENT ;定義堆棧段STA DB 20 DUP(?) ;取從STA開始的20個字節(jié)為堆棧段TOP EQU LENGTH STA ;將堆棧段長度存放在TOP中STACK ENDS ;堆棧段定義結束CODE SEGMENT ;定義程序代碼段ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA ;表明程序代碼段與段地址之間的關系START: MOV AX,DATA MOV DS,AX ;將段地址送入段地址寄存器 MOV AX,STACK MOV SS,AX ;將當前堆棧段首地址送入SS MOV SP,AX ;將堆棧段首地址送入堆棧指針寄存器 MOV SI,OFFSET DATA1END ;將DATA1的偏移地址送入SI MOV DI,OFFSET DATA2END ;將DATA2的偏移地址送入DI CALL ADDA ;調(diào)用子程序ADDA MOV AX,4C00H INT 21H ;中斷調(diào)用ADDA PROC NEAR ;子程序段 MOV DX,SI ;DX=0004H MOV BP,DI ;BP=0009H MOV BX,05H ;程序調(diào)用次數(shù)AD1: SUB BYTE PTRSI,30H ;將被加數(shù)的ASCII碼轉(zhuǎn)換成十六進制數(shù) SUB BYTE PTRDI,30H ;將加數(shù)的ASCII碼轉(zhuǎn)換成十六進制數(shù) DEC SI ;SI中的內(nèi)容自減1 DEC DI ;DI中的內(nèi)容自減1 DEC BX ;程序調(diào)用次數(shù)自減1 JNZ AD1 ;條件轉(zhuǎn)移 MOV SI,DX ;回到初始位置 MOV DI,BP MOV CX,05H ;循環(huán)次數(shù)控制 CLC ;清除CF位AD2: MOV AL,SI MOV BL,DI ADC AL,BL ;從低位開始進行帶進/借位的加法運算 AAA ;轉(zhuǎn)換成非壓縮BCD碼,低位存于AL,高位存于AH MOV SI,AL ;將AL中的內(nèi)容存入SI所在地址 DEC SI ;偏移地址自減 DEC DI ;偏移地址自減 LOOP AD2 ;循環(huán)控制指令 MOV SI,DX MOV DI,BP MOV BX,05HAD3: ADD BYTE PTRSI,30H ;將16進制數(shù)轉(zhuǎn)換為ASCII碼表示 ADD BYTE PTRDI,30H DEC SI ;偏移地址自減 DEC DI DEC BX JNZ AD3 RET ;返回指令 ADDA ENDP ;結束子程序 CODE ENDS ;結束程序代碼段END START 5、 實驗結果(截屏-軟件實驗或者拍照-硬件實驗)6、 實驗結果分析(預期結果與實際結果的對照)1、 數(shù)據(jù)段分析用ASCII碼值的形式表示被加數(shù)和加數(shù)被加數(shù)=39174;加數(shù)=450822、 堆棧段分析用于存放計算過程中的過程量。3、 程序代碼段分析1) 從低位起,將被加數(shù)和加數(shù)轉(zhuǎn)換成十六進制數(shù)被加數(shù)和加數(shù)轉(zhuǎn)換各位轉(zhuǎn)換成十六進制數(shù)表示。2) 從低位起進行各個位上的帶進位的加法運算得到的結果的各位上的十六進制表示形式。3) 將結果的各個位上的數(shù)轉(zhuǎn)換成ASCII碼的形式得到最后的結果實驗得到的最后的結果是39174+45082=84256。7、 實驗心得體會 通過本次實驗,我對匯編有了更物理化的認識,也明白了匯編中各個寄存器的作用及寄存器間是怎樣聯(lián)系的,也初步明白了什么是段地址,什么是堆棧,以及匯編的基本結構和循環(huán)結構的基本運用。但是,我的了解只是初步的,

溫馨提示

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

評論

0/150

提交評論