北郵 微機(jī)原理 第一次軟件實(shí)驗(yàn)報(bào)告_第1頁
北郵 微機(jī)原理 第一次軟件實(shí)驗(yàn)報(bào)告_第2頁
北郵 微機(jī)原理 第一次軟件實(shí)驗(yàn)報(bào)告_第3頁
北郵 微機(jī)原理 第一次軟件實(shí)驗(yàn)報(bào)告_第4頁
北郵 微機(jī)原理 第一次軟件實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理與接口技術(shù)匯編語言及其程序設(shè)計(jì)報(bào)告姓 名 學(xué) 院 信息與通信工程學(xué)院 專 業(yè) 班 級(jí) 學(xué) 號(hào) 班內(nèi)序號(hào) 目錄題目一3一、實(shí)驗(yàn)?zāi)康?二、實(shí)驗(yàn)任務(wù)及內(nèi)容31設(shè)計(jì)思路32流程圖33源代碼44子程序清單4三、實(shí)驗(yàn)結(jié)果5題目二6一、實(shí)驗(yàn)?zāi)康?二、實(shí)驗(yàn)任務(wù)及內(nèi)容61設(shè)計(jì)思路62流程圖63源代碼84子程序清單10三、實(shí)驗(yàn)結(jié)果10題目三11一、實(shí)驗(yàn)?zāi)康?1二、實(shí)驗(yàn)任務(wù)及內(nèi)容111設(shè)計(jì)思路112流程圖123源代碼134子程序清單16三、實(shí)驗(yàn)結(jié)果16題目一一、 實(shí)驗(yàn)?zāi)康木帉懸怀绦?,在顯示器上顯示256個(gè)ASCII碼,要求顯示格式為每行顯示16個(gè)字符,兩個(gè)ASCII字符間空一格。二、 實(shí)驗(yàn)任務(wù)及內(nèi)容1.2.

2、1 設(shè)計(jì)思路設(shè)DH寄存器初值為0。使用CX寄存器進(jìn)行256次循環(huán),循環(huán)中把 DH賦值給DL,利用AH=02H的DOS功能調(diào)用INT 21H,把DL中的字符和空格輸出到屏幕上。進(jìn)入下一循環(huán)前,調(diào)用子程序,將DX入棧,判斷已輸出個(gè)數(shù)是否為16的倍數(shù),若是,輸出回車換行到屏幕上之后,再進(jìn)行下一循環(huán)過程;如果不是16的倍數(shù),DX直接出棧。2 流程圖圖1.1 流程圖3 源代碼DATA SEGMENTDATA ENDSSTACK SEGMENT STACK DB 100H DUP(?);共256個(gè)數(shù)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK

3、START: MOV AX,DATA MOV DS,AX ;MOV AX,STACK ;MOV SS,AX MOV AH,02H MOV DH,0 MOV CX,256 ;循環(huán)次數(shù)256次NEXT: MOV DL,DH INT 21H MOV DL,20H ;兩數(shù)據(jù)間加一空格 INT 21H CALL DISP ;調(diào)用子程序 INC DH ;DH加1,對(duì)應(yīng)下一個(gè)ASCII碼 LOOP NEXT ;循環(huán)至CX為0STOP: MOV AH,4CH ;結(jié)束 INT 21HDISP PROC ;子程序,判斷是否換行 PUSH DX AND DH,0FH ;是否是16的倍數(shù),若是16的倍數(shù),DH為0FH

4、 CMP DH,0FH ;與0FH比較 JNZ RETURN ;DH不為0FH MOV DL,13 ;回車,換行 INT 21H MOV DL,10 INT 21HRETURN: POP DX ;不是16的倍數(shù) RETDISP ENDPCODE ENDS END START4 子程序清單子程序名:DISP功能:使每行顯示16個(gè)字符所用寄存器:DX, FR入口參數(shù):DX中的已循環(huán)次數(shù)出口參數(shù):DX中的已循環(huán)次數(shù)三、 實(shí)驗(yàn)結(jié)果圖1.2 編譯和連接圖1.3 運(yùn)行結(jié)果題目二一、 實(shí)驗(yàn)?zāi)康慕滩腜170第1、2、3題合到一起編一完整的程序。1) 編寫一程序,把地址偏移量為100H單元開始的256個(gè)單元分別

5、寫入00H,01H,02H,03H,.,F(xiàn)FH數(shù)據(jù);2) 統(tǒng)計(jì)寫入的數(shù)據(jù)塊中0元素、正元素、負(fù)元素的個(gè)數(shù),并分別把統(tǒng)計(jì)結(jié)果送入上述數(shù)據(jù)塊之后的三個(gè)單元中;3) 用DOS功能調(diào)用顯示第1題中數(shù)據(jù)塊各單元(包括統(tǒng)計(jì)結(jié)果)內(nèi)容。二、 實(shí)驗(yàn)任務(wù)及內(nèi)容3.4.1 設(shè)計(jì)思路程序分為三個(gè)部分:第一個(gè)部分, SI存放數(shù)據(jù)塊的偏移量,CX存入循環(huán)次數(shù)256次,將AL清零。使內(nèi)存單元地址每增加一,AL也加一,使得存入的數(shù)是遞增的;第二個(gè)部分,將BX和DH清零,BL存放正元素個(gè)數(shù),BH存放負(fù)元素個(gè)數(shù),DH存放0元素個(gè)數(shù)。循環(huán)256次,且每次循環(huán)都對(duì)當(dāng)前內(nèi)存單元中的數(shù)據(jù)進(jìn)行判定,并將其對(duì)應(yīng)的類型個(gè)數(shù)加一,最后將結(jié)果存

6、入數(shù)據(jù)塊第三個(gè)部分,CX賦值為259,作為第一個(gè)循環(huán),在每次循環(huán)中,把內(nèi)存單元的數(shù)據(jù)轉(zhuǎn)換成ASCII碼并格式化輸出,并且若CX不為0,進(jìn)入第二個(gè)循環(huán),否則結(jié)束;BH賦值為16,作為第二個(gè)循環(huán),使16個(gè)數(shù)為一行,然后回車換行。2 流程圖圖2.1 主程序流程圖圖2.2 第一部分流程圖 圖2.3 第二部分流程圖圖2.4 第三部分流程圖3 源代碼DATA SEGMENT ORG 100H ;數(shù)據(jù)塊在段中的偏移地址BUF1 DB 259 DUP(?) ;256個(gè)單元存放數(shù)據(jù),3個(gè)單元存放結(jié)果COUNT EQU $-BUF1 ;數(shù)據(jù)塊長度DATA ENDSCODE SEGMENT ASSUME CS:CO

7、DE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF1 MOV CX,COUNT-3 ;循環(huán)總次數(shù)256次 XOR AL,AL ;AL清零NEXT1: MOV SI,AL INC AL ;AL從00開始遞增 INC SI LOOP NEXT1 ;完成第一步,寫入00H,01H.FFH數(shù)據(jù) MOV SI,OFFSET BUF1 MOV CX,COUNT-3 XOR BX,BX ;BL存放正元素個(gè)數(shù),BH存放負(fù)元素個(gè)數(shù) XOR DH,DH ;DH存放0元素個(gè)數(shù)NEXT2: MOV AL,SI CMP AL,0 JZ ZERO ;為0,轉(zhuǎn)到

8、zero JS NEGAT ;為負(fù)數(shù),轉(zhuǎn)到negat JMP PLUS ;不為零不為負(fù),即為整數(shù),轉(zhuǎn)到plusZERO: INC DH ;0個(gè)數(shù)加1 JMP NEXT3NEGAT: INC BH ;負(fù)元素個(gè)數(shù)加1 JMP NEXT3PLUS: INC BL ;正元素個(gè)數(shù)加1NEXT3: INC SI LOOP NEXT2 ;循環(huán)直到統(tǒng)計(jì)完256個(gè)數(shù) MOV SI,DH ;存放統(tǒng)計(jì)結(jié)果 INC SI MOV SI,BX ;完成第二步,統(tǒng)計(jì)零、正、負(fù)元素個(gè)數(shù)并存放結(jié)果 MOV SI,OFFSET BUF1 MOV CX,COUNTZRBH: MOV BH,16 ;每行顯示16個(gè)數(shù)NEXT4: MO

9、V AL,SI MOV BL,AL ;取出要顯示的數(shù),放在BL中 SHR AL,1 ;右移四位,先處理高四位 SHR AL,1 SHR AL,1 SHR AL,1 CMP AL,0AH ;判斷是字母還是數(shù)字 JC JIA30 ;是數(shù)字,轉(zhuǎn)到JIA30 ADD AL,7 ;是字母JIA30: ADD AL,30H ;數(shù)字加30H,字母加37H轉(zhuǎn)換為ASCII碼 CALL DISP ;調(diào)用顯示子程序 MOV AL,BL ;開始處理低四位 AND AL,0FH ;高四位置零 CMP AL,0AH ;處理方法類似 JC JIA30A ADD AL,7JIA30A: ADD AL,30H CALL DI

10、SP MOV AL,20H ;顯示一空格 CALL DISP INC SI LOOP NEXT5 JMP STOP ;CX為0時(shí),即顯示完259個(gè)數(shù)之后,結(jié)束NEXT5: DEC BH JNZ NEXT4 ;繼續(xù)顯示直到每行有16個(gè)數(shù) MOV AL,0AH ;回車,換行 CALL DISP MOV AL,0DH CALL DISP JMP ZRBH ;繼續(xù)處理下一行STOP: MOV AH,4CH INT 21HDISP PROC NEAR ;子程序,顯示字符 MOV DL,AL MOV AH,2 INT 21H RETDISP ENDPCODE ENDS END START4 子程序清單子程

11、序名:DISP功能:使每行顯示16個(gè)字符所用寄存器:AL, DL, AH入口參數(shù): AL存放要顯示的字符出口參數(shù):無三、 實(shí)驗(yàn)結(jié)果圖2.5 編譯和連接圖2.6 運(yùn)行結(jié)果 每行顯示16個(gè)數(shù),先顯示00H,01HFEH,F(xiàn)FH,再顯示零元素個(gè)數(shù)01H,正元素個(gè)數(shù)7FH,負(fù)元素個(gè)數(shù)80H。題目三一、 實(shí)驗(yàn)?zāi)康慕滩腜173第21題:編一程序,把鍵入的十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)并在屏幕上顯示出來。鍵入的最大數(shù)為FFFFH,若鍵入的不是十六進(jìn)制數(shù)字,則顯示出錯(cuò)提示。1) 在屏幕上顯示轉(zhuǎn)換的十進(jìn)制數(shù),鍵入的最大數(shù)為FFFFH;2) 若鍵入非十六進(jìn)制數(shù),則顯示出錯(cuò)提示;3) 程序中至少用到一個(gè)子程序和一個(gè)宏指令

12、,若鍵入CTRL+C則返回系統(tǒng)。二、 實(shí)驗(yàn)任務(wù)及內(nèi)容5.6.1 設(shè)計(jì)思路主程序中,先定義回車、換行的宏指令,再調(diào)用兩個(gè)子程序,第一個(gè)子程序是輸入十六進(jìn)制數(shù)并判斷是否溢出FFFFH,然后將輸入的合理的十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù);第二個(gè)子程序是將轉(zhuǎn)換好的二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)并輸出顯示。第一個(gè)子程序首先判斷鍵入的字符是否為合法十六進(jìn)制字符,若合法,存入BX中,接著接收下一個(gè)新的字符,同時(shí)將上個(gè)字符左移4位,與剛鍵入的字符相加,存入BX中;若非法,則顯示錯(cuò)誤信息,返回開始處重新輸入。若鍵入回車符,則本次鍵入的字符結(jié)束,進(jìn)入轉(zhuǎn)換程序。第二個(gè)程序它把二進(jìn)制轉(zhuǎn)換成十進(jìn)制數(shù)。調(diào)用除法子程序,把BX中的若干位十

13、六進(jìn)制數(shù)除以CX中的數(shù),每次所得的商即是要轉(zhuǎn)換成的十進(jìn)制數(shù),將其轉(zhuǎn)換為ASCII碼在屏幕上顯示出來,并將余數(shù)存入BX返回。CX分別賦以10000,1000,100,10,1。2 流程圖圖3.1 主程序流程圖圖3.2 子程序HEXBIN流程圖圖3.3 子程序BINDEC流程圖圖3.4 子程序DEC-DIV流程圖3 源代碼NAME HEXDECCODESEGMENT ASSUME CS:CODEMSG DBError Number!,$ERROF DB OVER FLOAT! (0FFFFH),$CRLF MACRO ;定義宏指令,回車換行 MOV DL,0DH ;送回車符 MOV AH,2 ;D

14、OS調(diào)用,顯示 INT 21H MOV DL,0AH ;送換行符 MOV AH,2 INT 21H ENDMSTART:MOV AX,SEG CODE MOV DS,AX ;給數(shù)據(jù)段賦值,與代碼段同在一個(gè)段MAIN:CALL HEXBIN ;從鍵盤接受十六進(jìn)制數(shù)據(jù),并轉(zhuǎn)換為二進(jìn)制 CRLF ;回車換行宏指令 CALL BINDEC ;把二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù) CRLF ;調(diào)用宏指令,回車換行 JMP MAIN ;繼續(xù)鍵入字符與轉(zhuǎn)換;接收鍵盤鍵入的十六進(jìn)制數(shù)據(jù),并轉(zhuǎn)換為二進(jìn)制數(shù)子程序HEXBIN PROC NEAR XOR BX,BX ;BX清零,存放鍵入的十六進(jìn)制數(shù)MOV BP,0; ;鍵入的

15、字符數(shù)NEWCHAR: MOV AH,01 ;DOS調(diào)用,接收鍵入的字符 INT 21H CMP AL,0DH ;若鍵入回車,則結(jié)束本組鍵入的數(shù)據(jù) JZ RETU SUB AL,30H JL EXIT ;鍵入的字符小于0,為非法字符CMP AL,9JLE ADDTO ;鍵入的字符0-9轉(zhuǎn)到移位處理 SUB AL,07H ;鍵入的字符大于9,判斷是否為字母A-F CMP AL,0AH JL EXIT ;不是大于A的字母,為非法字符CMP AL,0FH ;若大于字母F,再判斷是否為小寫字母JG NEXTADDTO:MOV CL,4 SHL BX,CL ;鍵入的字符左移4位,先鍵入的字符移向高位IN

16、C BP CMP BP,5 ;鍵入字符數(shù)不能超過四個(gè)JZ OVERFLOAT ;報(bào)錯(cuò)MOV AH,0ADD BX,AX ;把剛鍵入的字符與前面的字符合在一起JMP NEWCHAR ;再接收新的字符NEXT: SUB AL,20H ;判斷是否為小寫字母a-fCMP AL,0AH JL EXIT ;若小于a,則為非法字符 CMP AL,0FH JLE ADDTO JG EXIT JMP RETUOVERFLOAT: CRLF MOV DX,OFFSET ERROF MOV AH,09 INT 21HEXIT: CRLF ;調(diào)用回車換行宏指令MOV DX,OFFSET MSG ;顯示非法字符信息 X

17、OR BX,BXMOV AH,09INT 21HCRLFJMP NEWCHARRETU:RETHEXBINENDP;把二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)子程序BINDEC PROC NEAR MOV CX,10000 ;因鍵入的數(shù)最大為FFFFH=65535CALL DEC_DIVMOV CX,1000 ;鍵入數(shù)的千位CALL DEC_DIVMOV CX,100 ;鍵入數(shù)的百位CALL DEC_DIV MOV CX,10 ;鍵入數(shù)的十位CALL DEC_DIVMOV CX,1 ;鍵入數(shù)的個(gè)位CALL DEC_DIVCRLFRETBINDEC ENDPDEC_DIV PROC NEAR MOV AX,BX

18、;被除數(shù)的低16位在AX中MOV DX,0 ;被除數(shù)的高16位在DX中DIV CX ;32位除以16位MOV BX,DX ;余數(shù)在DX中,送入BXADD AL,30H ;商在AL中,轉(zhuǎn)換為ASCII碼 MOV DL,AL MOV AH,2 INT 21H RETDEC_DIV ENDPCODE ENDS END START4 子程序清單1) 子程序名:HEXBIN功能:接收鍵盤鍵入的十六進(jìn)制數(shù)據(jù),并轉(zhuǎn)換為二進(jìn)制數(shù)所用寄存器:BX, AH, AL, CL, DX, FR入口參數(shù):無出口參數(shù):轉(zhuǎn)換后的二進(jìn)制數(shù),存放在BX中2) 子程序名:BINDEC功能:把二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)所用寄存器:CX, BX, AX, DX入口參數(shù):BX中的轉(zhuǎn)

溫馨提示

  • 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)論