匯編語言程序設(shè)計(jì)_第1頁
匯編語言程序設(shè)計(jì)_第2頁
匯編語言程序設(shè)計(jì)_第3頁
匯編語言程序設(shè)計(jì)_第4頁
匯編語言程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、匯編語言程序設(shè)計(jì)(2) 無 88 石光一 實(shí)驗(yàn)?zāi)康? 掌握子程序的編程方法2 掌握宏指令與宏指令調(diào)用的編程方法3 掌握C語言與匯編語言的混合編程方法二 實(shí)驗(yàn)內(nèi)容1 編寫一個(gè)程序,將用戶從鍵盤輸入的十進(jìn)制數(shù)(不超過65535)轉(zhuǎn)換成十六進(jìn)制數(shù)并顯示。* 程序清單 *D SEGMENT OUTPUT DBENTER A DECIMAL NUMBER(65535):,0DH,0AH,$NUM DB 8 DB ? DB 8 DUP(?)EEQQ DW 0ASCII DB ABCDEFEO DB 0DH,0AH,INPUT ERROR!,0DH,0AH,$RE1 DB 0RE2 DB 0RE3 DB 0

2、RE4 DB 0RESULT1 DB 0DH,0AH,THE CONVERTED HEHADECIMAL NUMBER IS:$RESULT2 DB HD ENDS;定義數(shù)據(jù)段CEG SEGMENTASSUME CS:CEG,DS:D;定義代碼段START : MOV AX,DMOV DS,AX;給數(shù)據(jù)段賦初值LEADX,OUTPUTMOV AH,9INT 21HLEA DX,NUM ;顯示輸入提示字符串MOV AH,0AHINT 21H;讀取字符串CALL CHECK;調(diào)用第一個(gè)子程序,檢查字符串是否正確CALL DTOH ;調(diào)用第二個(gè)子程序,將十進(jìn)制數(shù)ASCII串轉(zhuǎn)換成十六進(jìn)制數(shù)CALL

3、HTOA;調(diào)用第三個(gè)子程序,將十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII串LEA DX,RESULT1MOV AH,9INT 21H ;顯示輸出提示字符串LEA SI,RE4MOV DL,SIMOV AH,2INT 21HLEA SI,RE3MOV DL,SIMOV AH,2INT 21HLEA SI,RE2MOV DL,SIMOV AH,2INT 21HLEA SI,RE1MOV DL,SIMOV AH,2INT 21HLEA SI,RESULT2;分別輸出四位MOV DL,SIMOV AH,2INT 21HLAST: MOV AH,4CH;返回DOS狀態(tài)INT 21HCHECK PROC ;定義子程序LE

4、A DI,NUM;DI保存數(shù)據(jù)地址INC DI;DI指向下一位MOV CL,DI;CL保存數(shù)據(jù)位數(shù)AND CX,000FHINC DI;DI指向下一位AG:MOV AL,DICMP AL,9 JA EERRCMP AL,0JB EERRINC DILOOP AGJMP RE;若輸入的字符串中含有非09的字符,顯示出錯(cuò)信息EERR: LEA DX,EOMOV AH,9INT 21H JMP LASTRE:RETCHECK ENDP DTOH PROC ;定義子程序LEA DI,NUM;DI保存數(shù)據(jù)地址INC DI;DI指向下一位MOVCL,DI ;CL保存數(shù)據(jù)位數(shù)AND CX,000FHMOV

5、AX,0MOV BX,0;清空AX,BXMOV SI,10;SI賦十AD:MUL SIINC DIMOV BL,DIAND BL,0FHADC AX,BXLOOP ADMOV EEQQ,AX;循環(huán)累加RETDTOH ENDPHTOA PROC ;定義子程序MOV AX,EEQQ;讀取數(shù)據(jù)AND AL,0FHLEA BX,ASCIIXLAT ASCIIMOV RE1,AL;將十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼并保存MOV DL,ALMOV AX,EEQQMOV AH,0AND AL,0F0HMOV CL,4SHR AL,CLLEA BX,ASCIIXLAT ASCIIMOV RE2,AL;將十六進(jìn)制數(shù)

6、轉(zhuǎn)換成ASCII碼并保存MOV DL,ALMOV AX,EEQQAND AH,0FHMOV AL,AHLEA BX,ASCIIXLAT ASCIIMOV RE3,AL;將十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼并保存MOV DL,ALMOV AX,EEQQMOV AH,0AND AL,0F0HMOV CL,4SHR AL,CLMOV AL,AHLEA BX,ASCIIXLAT ASCIIMOV RE4,AL;將十六進(jìn)制數(shù)轉(zhuǎn)換成ASCII碼并保存RETHTOA ENDPCEG ENDS END START2 編寫一個(gè)程序,對鍵盤輸入的兩個(gè)字符串進(jìn)行比較,輸入的字符串長度不超過80。* 程序清單 *D SEG

7、MENT ;定義代碼段STRING1 DB Enter the first string(NUMBER80):,0DH,0AH,$STRING2DB 0DH,0AH,Enter the second string (NUMBER24)&0xff; month=(int)date2; /* 月份是最高8位,須將變量右移24位,并強(qiáng)制轉(zhuǎn)化為字符型 */ date2=date1; date2=(date216)&0xff; day=(int)date2; /* 日期是次高8位,須將變量右移16位,并強(qiáng)制轉(zhuǎn)化為字符型 */ date2=date1; date2=date2&0x0000ffff; ye

8、ar=(int)date2; /* 年份是后16位 */ time2=(time224)&0xff; sec=(int)time2; /* 秒是最高8位,須將變量右移24位,并強(qiáng)制轉(zhuǎn)化為字符型 */ time2=time1; time2=(time216)&0xff; psec=(int)time2; /* 百分秒是次高8位,須將變量右移24位,并強(qiáng)制轉(zhuǎn)化為字符型 */ time2=time1; time2=(time28)&0xff; hour=(int)time2; /* 小時(shí)是ax高8位,須將變量右移8位,并強(qiáng)制轉(zhuǎn)化為字符型 */ time2=time1; time2=time2&0xff; min=(int)time2; /* 分是ax低8位,強(qiáng)制轉(zhuǎn)化為字符型即可 */ printf(nCurren

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論