版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、利用模塊結(jié)構(gòu)編程:從鍵盤(pán)上輸入一個(gè)二位十進(jìn)制的月份(0112),然后顯示相應(yīng)月份的 英文縮寫(xiě)名。;主模塊:鍵盤(pán)接受一個(gè)二位十進(jìn)制數(shù),并換成二進(jìn)制數(shù);;子模塊:有兩個(gè)子程序構(gòu)成:;(1) 依輸入月份數(shù)查英文縮寫(xiě)月份名表;;(2) 顯示查到的月份的英文縮寫(xiě)名。 ;這個(gè)函數(shù)里邊我只設(shè)置了兩個(gè)子函數(shù),有些功能根 本不必用子函數(shù)的形式來(lái)寫(xiě).386STACK SEGMENT USE16 STACKDB 200 DUP(0)STACK ENDSDATA SEGMENT USE16SIGN DB ?IPT DB 10DB ?DB 10 DUP(0); 用戶(hù)輸入,為 ASCII 形式,故需轉(zhuǎn)換,以后將 調(diào)用 F
2、10T2 子函數(shù)PRT DB PLEASE INPUT MONTH NUMBER IN DECIMAL:$;提示用戶(hù)輸入ERRMSG DB INPUT FORMAT ERROR$; 輸入不合法DSP DB THE MONTH YOU INPUTTED IN DECIMAL IS IN ENGLISH!$ ; 顯示提示,用 來(lái)顯示結(jié)果; 這里有幾個(gè)空格,用來(lái)顯示月份英文名JAN DB JANFEB DB FEBMAR DB MARAPR DB APRMAY DB MAYJUN DB JUNJULY DBJULYAUG DB AUGSEP DB SEPOCT DB OCTNOV DB NOV_DE
3、C DB _DEC;DEC 與現(xiàn)有指令沖突,你可以想辦法替換到那個(gè)下劃線CRLF DB 0DH,0AH,$; 回車(chē)換行符DATA ENDSCODE SEGMENT USE16ASSUME CS: CODE,DS: DATA,SS: STACKDS_STR MACRO BUF ; 顯示字符串的宏LEA DX,BUFMOV AH,9INT 21HENDMSTART:MOV AX,DATAMOV DS,AXDS_STR PRTDS_STR CRLF; 顯示提示信息LEA DX,IPTMOV AH,10INT 21H; 接受用戶(hù)輸入MOV SI,OFFSET IPTADD SI,2MOV CL,BYT
4、EPTR SI-1MOV CH,0CMP CX,2JNZ ERR_IPT; 用戶(hù)輸入長(zhǎng)度不合要求,例如輸入了三位數(shù)MOV DX,16; 設(shè)置調(diào)用 F10T2 的入口參數(shù)CALL F10T2; 轉(zhuǎn)換后的結(jié)果被放在 AX 中MOV DX,AX; 設(shè)置查找函數(shù)的入口參數(shù)CALL QUERY; 查找月份修改即將顯示的字符串DS_STR DSPEXIT:MOV AH,4CHINT 21HERR_IPT:DS_STR CRLFDS_STR ERRMSG JMP EXIT;功能:查找月份;入口參數(shù):DX-存放要查找的月份的二進(jìn)制數(shù)的表示 ; 出口參數(shù):無(wú)QUERY PROCCMP DX,01JB ERR_I
5、PTCMP DX,12JA ERR_IPT;輸入錯(cuò)誤MOV SI,OFFSET DSPADD SI,37;定位到顯示字符串的英文月份處,準(zhǔn)備寫(xiě)入東西MOV DI,OFFSET JANDEC DXMOV AX,DXMOV BL,4MUL BL ;MUL 指令不允許 OPS 為立即數(shù),即不能用 MUL 4ADD DI,AX;計(jì)算機(jī)應(yīng)當(dāng)輸出的月份MOV CX,4;設(shè)置循環(huán)次數(shù)LOP:MOV AL,BYTE PTR DIMOV BYTE PTR SI,AL; 注意不能直接寫(xiě)成 MOV BYTE PTR SI,BYTE PTR DI; 雙操作指令不允許兩個(gè)操作數(shù)尋址方式都為存儲(chǔ)器方式INC SIINC
6、DILOOP LOPRETQUERY ENDP;功能:將十進(jìn)制的ASC2碼轉(zhuǎn)換為有符號(hào)二進(jìn)制數(shù)-AX/EAX,如果該數(shù)溢出或非法,則-1-SI. 其中,;可轉(zhuǎn)換的 16 位有符號(hào)數(shù)范圍-32767+32767,32 位有符號(hào)數(shù)的范圍是 -2147483647+2147483647;入口參數(shù):SI-指向待轉(zhuǎn)換的十進(jìn)制ASC2碼存儲(chǔ)區(qū)首址;CX-存放該十進(jìn)制的 ASC2 碼串的長(zhǎng)度;DX-存放 16 位或 32 位標(biāo)志;出口參數(shù):轉(zhuǎn)換后的二進(jìn)制數(shù)-AX/EAX. 如果是非法數(shù)或溢出, 則-1-SI;所用寄存器和變量為:;EBX-中間寄存器;SIGN-正負(fù)數(shù)標(biāo)記, 見(jiàn)前邊 DATA SEGMENTF
7、10T2PROCPUSH EBXMOV EAX,0MOV SIGN,0MOV BL,SI; 取一字符-BLCMP BL,+JE F10CMP BL,-JNE NEXT2MOV SIGN,1 ;如果(BL)為號(hào),1SIGNF10:DEC CX ; 數(shù)字串長(zhǎng)度減 1JZ ERR ;如果長(zhǎng)度為 0 轉(zhuǎn)錯(cuò)誤處理NEXT1:INC SIMOV BL,SINEXT2:CMP BL,0JB ERRCMP BL,9JA ERRSUB BL,30HMOVZX EBX,BLIMUL EAX,10JO ERRADD EAX,EBX ;計(jì)算(EAX)*1O+EBX-EAXJO ERRJS ERRJC ERRDEC C
8、XJNZ NEXT1CMP DX,16JNE PP0CMP EAX,7FFFH ; 轉(zhuǎn)換的結(jié)果是否超過(guò) 16 位 JA ERRPP0:CMP SIGN,1JNE QQ;是負(fù)數(shù),應(yīng)對(duì)(EAX)求補(bǔ)才是負(fù)數(shù)的補(bǔ)碼表示NEG EAXQQ:POP EBXRETERR:MOV SI,-1JMP QQF10T2ENDPCODE ENDSEND STARTdata segmentdisp DB 0dh,0ah,Input month: $data segmentDISP_ERR DB INPUT ERR!$bye db 0dh,0ah,Bye!$tab DB JAN $ FEB $ MAR $ APR $
9、MAY $ JUN $ JULY$ AUG $ $ OCT $ NOV $ DEC $num db 0data endscode segmentmain proc far assume cs:code start: push ds mov ax,0 push ax mov ax,data mov ds,axcall c12m_emov ah,09mov dx,offset byeint 21hretSEPmain endp c12m_e proc nearSEPAGAIN:mov al,0mov num,al lea dx,dispmov ah,9int 21h re_in: mov ah,0
10、8 int 21h CMP AL,Q JE ENDD CMP AL,q JE ENDD cmp al,0dhJE IN_DOWN cmp al,0 jb re_incmp al,9 ja re_in push ax mov dl,al mov ah,02 int 21h mov ah,0 mov al,num mov bl,10 mul bl pop bxSUB BL,30H add al,bl ; 月份 MOV NUM,AL Jmp RE_IN IN_DOWN: MOV AL,NUM CMP AL,12 JA ERRCMP AL,1 JB ERR DEC ALMOV BL,7 ;tab 中每月占用的字節(jié)數(shù) MUL BLMOV DX,OFFSET TABMOV AH,0 ADD DX,AX MOV A
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廚房衛(wèi)生制度執(zhí)行流程
- 餐館衛(wèi)生要求制度
- 公共衛(wèi)生事件應(yīng)急制度
- 餐具清潔消毒衛(wèi)生制度
- 班車(chē)車(chē)輛運(yùn)營(yíng)管理制度
- 辦稅需要財(cái)務(wù)制度
- 2026年創(chuàng)新思維能力訓(xùn)練測(cè)試題庫(kù)
- 2026內(nèi)蒙古赤峰敖漢旗招募就業(yè)見(jiàn)習(xí)人員的79人備考題庫(kù)附參考答案詳解(黃金題型)
- 小組培訓(xùn)報(bào)告
- 2026廣東深圳大學(xué)藝術(shù)學(xué)部劉琨教授團(tuán)隊(duì)博士后招聘1人備考題庫(kù)含答案詳解(培優(yōu)a卷)
- 起重設(shè)備安全使用指導(dǎo)方案
- 江蘇省揚(yáng)州市區(qū)2025-2026學(xué)年五年級(jí)上學(xué)期數(shù)學(xué)期末試題一(有答案)
- 建筑與市政工程地下水控制技術(shù)規(guī)范
- “黨的二十屆四中全會(huì)精神”專(zhuān)題題庫(kù)及答案
- 2025年天翼云解決方案架構(gòu)師認(rèn)證考試模擬題庫(kù)(200題)答案及解析
- 2026年西藏自治區(qū)政府部門(mén)所屬事業(yè)單位人才引進(jìn)(130人)筆試備考試題及答案解析
- 油氣開(kāi)采畢業(yè)論文
- 血凝d-二聚體和fdp課件
- 2026-2031中國(guó)房地產(chǎn)估價(jià)市場(chǎng)分析預(yù)測(cè)研究報(bào)告
- 天津市和平區(qū)2025年高二化學(xué)第一學(xué)期期末監(jiān)測(cè)試題含解析
- 人造噴霧造景施工方案
評(píng)論
0/150
提交評(píng)論