版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2022-3-221微型計(jì)算機(jī)原理與接口技術(shù)微型計(jì)算機(jī)原理與接口技術(shù)第四章第四章 匯編語(yǔ)言程序設(shè)計(jì)(匯編語(yǔ)言程序設(shè)計(jì)(II)熊旺平熊旺平2022-3-222l 程序設(shè)計(jì)方法概述程序設(shè)計(jì)方法概述l 結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)方法q順序結(jié)構(gòu)q分支結(jié)構(gòu)q循環(huán)結(jié)構(gòu)q子程序結(jié)構(gòu)l宏匯編和條件匯編宏匯編和條件匯編2022-3-223 能讀懂匯編語(yǔ)言源程序能讀懂匯編語(yǔ)言源程序 掌握匯編語(yǔ)言程序設(shè)計(jì)的基本方法掌握匯編語(yǔ)言程序設(shè)計(jì)的基本方法 能根據(jù)給定問(wèn)題能根據(jù)給定問(wèn)題,進(jìn)行一般的匯編程序設(shè)計(jì)進(jìn)行一般的匯編程序設(shè)計(jì)2022-3-224一個(gè)好的程序須具備如下特點(diǎn):一個(gè)好的程序須具備如下特點(diǎn):l程序結(jié)構(gòu)模塊化
2、,易讀,易調(diào)試及維護(hù)。程序結(jié)構(gòu)模塊化,易讀,易調(diào)試及維護(hù)。l執(zhí)行速度快。執(zhí)行速度快。l占用內(nèi)存空間小。占用內(nèi)存空間小。2022-3-225n 分析問(wèn)題,抽象出描述問(wèn)題的數(shù)學(xué)模型,并確定實(shí)分析問(wèn)題,抽象出描述問(wèn)題的數(shù)學(xué)模型,并確定實(shí)現(xiàn)數(shù)學(xué)模型的算法。現(xiàn)數(shù)學(xué)模型的算法。n 繪制程序流程圖,先畫(huà)各大模塊,再細(xì)化各子模塊。繪制程序流程圖,先畫(huà)各大模塊,再細(xì)化各子模塊。n 分配存儲(chǔ)空間及工作單元。分配數(shù)據(jù)段、堆棧段、分配存儲(chǔ)空間及工作單元。分配數(shù)據(jù)段、堆棧段、代碼段各在內(nèi)存什么位置,各個(gè)寄存器主要做什么代碼段各在內(nèi)存什么位置,各個(gè)寄存器主要做什么用。用。n 按流程圖設(shè)計(jì)編寫(xiě)程序按流程圖設(shè)計(jì)編寫(xiě)程序n 靜
3、態(tài)檢查,上機(jī)調(diào)試。靜態(tài)檢查,上機(jī)調(diào)試。n 程序運(yùn)行,分析結(jié)果。程序運(yùn)行,分析結(jié)果。程序設(shè)計(jì)的基本步驟程序設(shè)計(jì)的基本步驟2022-3-226 一方面學(xué)習(xí)結(jié)構(gòu)化編程,另一方面進(jìn)一步學(xué)一方面學(xué)習(xí)結(jié)構(gòu)化編程,另一方面進(jìn)一步學(xué)習(xí)和掌握匯編語(yǔ)言程序設(shè)計(jì)的特點(diǎn)和技巧。習(xí)和掌握匯編語(yǔ)言程序設(shè)計(jì)的特點(diǎn)和技巧。n順序結(jié)構(gòu)順序結(jié)構(gòu)n分支結(jié)構(gòu)分支結(jié)構(gòu)n循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)1.子程序結(jié)構(gòu)子程序結(jié)構(gòu)2022-3-227微機(jī)原理與應(yīng)用微機(jī)原理與應(yīng)用2022-3-228l教材教材P171 例例4-64lExercises1 說(shuō)明程序中說(shuō)明程序中 AND AL,0FH 的的作用作用l友情提示友情提示:從鍵盤(pán)輸入值的特點(diǎn)考慮從鍵盤(pán)輸
4、入值的特點(diǎn)考慮lExercises2l 用用XLAT表轉(zhuǎn)換指令完成上述求平方根程序表轉(zhuǎn)換指令完成上述求平方根程序l友情提示友情提示:可參考教材可參考教材P74 指令指令2022-3-229分支結(jié)構(gòu)分支結(jié)構(gòu)一般分支結(jié)構(gòu)一般分支結(jié)構(gòu)實(shí)現(xiàn)方法舉例實(shí)現(xiàn)方法舉例多分支結(jié)構(gòu)多分支結(jié)構(gòu)1 直接應(yīng)用條件轉(zhuǎn)移實(shí)現(xiàn)直接應(yīng)用條件轉(zhuǎn)移實(shí)現(xiàn)逐個(gè)判斷逐個(gè)判斷,運(yùn)行速度慢運(yùn)行速度慢2 利用跳轉(zhuǎn)表實(shí)現(xiàn)利用跳轉(zhuǎn)表實(shí)現(xiàn)可直接找到入口地址可直接找到入口地址2022-3-2210 內(nèi)存中有一個(gè)字符串其始地址為內(nèi)存中有一個(gè)字符串其始地址為BUF,字符串長(zhǎng),字符串長(zhǎng)度度NDH,字母,字母A-Z(41H-5AH)的個(gè)數(shù))的個(gè)數(shù)-DL,其,
5、其余字符的個(gè)數(shù)余字符的個(gè)數(shù)=N-DH-DL。 DATA SEGMENT BUF DB N ;數(shù)組個(gè)數(shù)數(shù)組個(gè)數(shù) DB 01H,32H,43H,49H,41H,54H DB 3 DUP(0) ;留留3個(gè)單元個(gè)單元存結(jié)果存結(jié)果DATA ENDSl ASCII09 0011000000111001 AF 010000010100011039H 9 3AH58D A 41H65D 587652022-3-2211CODE MOV CH, N ;字符串長(zhǎng)度字符串長(zhǎng)度 MOV BX, 1 ;地址基準(zhǔn)地址基準(zhǔn) MOV DX, 0 ;DH,DL清零清零LP: MOV AH, BUFBX ;取一字符取一字符 CM
6、P AH, 30H JL NEXT ;9,轉(zhuǎn)是否為字轉(zhuǎn)是否為字母母 INC DH ;是數(shù)字是數(shù)字,個(gè)個(gè)數(shù)加數(shù)加1 JMP NEXTABC: CMP AH, 41H ;判斷是否為字母判斷是否為字母 JL NEXT ;Z轉(zhuǎn)出轉(zhuǎn)出 INC DL ;字母?jìng)€(gè)數(shù)加字母?jìng)€(gè)數(shù)加1NEXT:INC BX DEC CH JNZ LP MOV BUFBX, DH MOV BUFBX+1, DL MOV AH,N SUB AH, DH SUB AH, DL MOV BUFBX+2, AH2022-3-2213lExercises1l若要求分別計(jì)算出數(shù)字若要求分別計(jì)算出數(shù)字09和字母和字母az和其他符號(hào)的個(gè)數(shù),應(yīng)如何修
7、改和其他符號(hào)的個(gè)數(shù),應(yīng)如何修改程序?程序?2022-3-2214l最簡(jiǎn)單的方法:利用多個(gè)條件轉(zhuǎn)移指令來(lái)實(shí)最簡(jiǎn)單的方法:利用多個(gè)條件轉(zhuǎn)移指令來(lái)實(shí)現(xiàn)現(xiàn)l速度優(yōu)化的方法:利用跳轉(zhuǎn)表來(lái)實(shí)現(xiàn)速度優(yōu)化的方法:利用跳轉(zhuǎn)表來(lái)實(shí)現(xiàn)q根據(jù)表內(nèi)地址分支l跳轉(zhuǎn)表中存放了每個(gè)分支的入口地址跳轉(zhuǎn)表中存放了每個(gè)分支的入口地址q根據(jù)表內(nèi)指令分支l跳轉(zhuǎn)表中跳轉(zhuǎn)表中直接直接存放了轉(zhuǎn)移指令存放了轉(zhuǎn)移指令q根據(jù)關(guān)鍵字分支l跳轉(zhuǎn)表中存放了關(guān)鍵字和入口地址跳轉(zhuǎn)表中存放了關(guān)鍵字和入口地址q關(guān)鍵是提供了一種找到分支程序入口地址的方法2022-3-2215l簡(jiǎn)單多分支程序示例:簡(jiǎn)單多分支程序示例:有有8個(gè)加工子程序,入口地址分個(gè)加工子程序,入
8、口地址分別為別為P1,P2,P3 P8。編程實(shí)現(xiàn)檢測(cè)鍵盤(pán)輸入命令,。編程實(shí)現(xiàn)檢測(cè)鍵盤(pán)輸入命令,使系統(tǒng)分別轉(zhuǎn)向使系統(tǒng)分別轉(zhuǎn)向8個(gè)加工程序。個(gè)加工程序。MOV AH,1INT21HCMP AL,1JEP1CMP AL,2JEP2CMP AL,8JEP8JMP STP1:P2:P8:ST:HLT請(qǐng)指出程序中的存在的問(wèn)題請(qǐng)指出程序中的存在的問(wèn)題2022-3-2216l用跳轉(zhuǎn)表實(shí)現(xiàn)多分支用跳轉(zhuǎn)表實(shí)現(xiàn)多分支P2高位高位P2低位低位P1高位高位P1低位低位BASEBASEBASEBASE2 2P1P1P2P2P2高位高位P2低位低位E9P1高位高位P1低位低位E9BASEBASEJMP P1JMP P1JM
9、P P2JMP P2383231BASEBASE關(guān)鍵字值關(guān)鍵字值P1P1程序程序入口地址入口地址P2P2程序程序入口地址入口地址P8P8程序程序入口地址入口地址根據(jù)表內(nèi)地址分支根據(jù)表內(nèi)地址分支 根據(jù)表內(nèi)指令分支根據(jù)表內(nèi)指令分支 根據(jù)關(guān)鍵字分支根據(jù)關(guān)鍵字分支2022-3-2217l用跳轉(zhuǎn)表實(shí)現(xiàn)多分支用跳轉(zhuǎn)表實(shí)現(xiàn)多分支DATA SEGMENTBASE DB E9,P1低低,P1高高,E9 DB E9E9,P9低低,P9高高DATA ENDSMOV AH,1INT 21HAND AL,0FHMOV AH,0MOV BL,ALADD AL,ALADD AL,BLMOV BX,OFFSET BASEAD
10、D BX,AXJMP BXP2高位高位P2低位低位E9P1高位高位P1低位低位E9BASEBASEJMP P1JMP P1JMP P2JMP P22022-3-2218l設(shè)有首地址為設(shè)有首地址為BUFFER的數(shù)組,已按升序排好,數(shù)組長(zhǎng)度為的數(shù)組,已按升序排好,數(shù)組長(zhǎng)度為N(10),),在該數(shù)組中查找數(shù)在該數(shù)組中查找數(shù)M(80),若找到則從數(shù)組中刪除,若找不到將它插),若找到則從數(shù)組中刪除,若找不到將它插入正確的排序位置,入正確的排序位置,DX中記錄數(shù)組最后的長(zhǎng)度。中記錄數(shù)組最后的長(zhǎng)度。DATA SEGMENTBUFFERDW5,10,32,47,53,77,89,106,115,124NDB1
11、0MEQU80DATA ENDSCODEMOVAX,M;待查數(shù);待查數(shù)MOVCX,N;記數(shù);記數(shù)MOVDX,NMOVDI,OFFSET BUFFERCLD2022-3-2219REPNESCASW;串掃描查找串掃描查找JEDEL;查到;查到ZF1DECDX;未查到,此數(shù)插入正確位置;未查到,此數(shù)插入正確位置MOVSI,DX;關(guān)鍵字與最后一個(gè)數(shù)比較;關(guān)鍵字與最后一個(gè)數(shù)比較ADDSI,DX;計(jì)算最后一個(gè)數(shù)的指針計(jì)算最后一個(gè)數(shù)的指針(字字)L1:CMPAX,BUFFERSIJLL2;關(guān)鍵字比數(shù)組中的某個(gè)字??;關(guān)鍵字比數(shù)組中的某個(gè)字小MOVBUFFERSI+2,AX ;否則插在后面;否則插在后面JMP
12、L3L2:MOVBX,BUFFERSI;數(shù)組下移一位;數(shù)組下移一位MOVBUFFERSI+2,BXSUBSI,2JMPL1L3:ADDDX,2JMPNEXT12022-3-2220DEL:JCXZ NEXT ;找到,刪除此元素;找到,刪除此元素DEL1: MOVBX,DI;其后元素依次前移;其后元素依次前移MOVDI-2,BXADDDI,2LOOP DEL1NEXT: DECDX;改變數(shù)組長(zhǎng)度;改變數(shù)組長(zhǎng)度NEXT1: RET2022-3-2221l循環(huán)結(jié)構(gòu)的關(guān)鍵:循環(huán)結(jié)構(gòu)的關(guān)鍵:循環(huán)控制循環(huán)控制循環(huán)結(jié)構(gòu)分類循環(huán)結(jié)構(gòu)分類先執(zhí)行,后判斷先執(zhí)行,后判斷先判斷,后執(zhí)行先判斷,后執(zhí)行(1 1)初始化:
13、為循環(huán)作準(zhǔn)備,設(shè)置循環(huán)計(jì)數(shù)器,設(shè)置變量初值。)初始化:為循環(huán)作準(zhǔn)備,設(shè)置循環(huán)計(jì)數(shù)器,設(shè)置變量初值。(2 2)循環(huán)體:循環(huán)的核心,包括循環(huán)的全部執(zhí)行指令。)循環(huán)體:循環(huán)的核心,包括循環(huán)的全部執(zhí)行指令。(3 3)修改參數(shù):修改操作數(shù)地址,為下次循環(huán)作準(zhǔn)備。)修改參數(shù):修改操作數(shù)地址,為下次循環(huán)作準(zhǔn)備。(4 4)循環(huán)控制:修改計(jì)數(shù)器值,判斷循環(huán)控制條件,決定是否跳)循環(huán)控制:修改計(jì)數(shù)器值,判斷循環(huán)控制條件,決定是否跳 出循環(huán)。出循環(huán)。u一般的循環(huán)控制可以由一般的循環(huán)控制可以由LOOPLOOP或條件跳轉(zhuǎn)語(yǔ)句完成。或條件跳轉(zhuǎn)語(yǔ)句完成。u若循環(huán)中有不同的操作要求,若循環(huán)中有不同的操作要求,可以用邏輯尺的方
14、法實(shí)現(xiàn)可以用邏輯尺的方法實(shí)現(xiàn)2022-3-2222MOVSI,OFFSET BUFMOV CH,4NEXT:MOVCL,4ROLBX,CLMOVAL,BLANDAL,0FHADDAL,30HCMPAL,3AHJLSTOREADDAL,7 STORE:MOVSI,AL MOVAH,2MOVDL,ALINT21HINCSIDECCHJNZNEXTHLT將將BX中的中的16進(jìn)制數(shù)轉(zhuǎn)換為進(jìn)制數(shù)轉(zhuǎn)換為ASCII碼,存放到碼,存放到BUF開(kāi)始的內(nèi)存單元中去,開(kāi)始的內(nèi)存單元中去,并在屏幕上顯示出來(lái)。并在屏幕上顯示出來(lái)。BX 1001 0100 1111 0111AL 0011 1001ASCII09 001
15、1000000111001 AF 010000010100011039H 9 3AH58D A 41H65D 587652022-3-2223l在循環(huán)工程中,有時(shí)要求按不同的次序處理兩種函數(shù)操作,在循環(huán)工程中,有時(shí)要求按不同的次序處理兩種函數(shù)操作,可用邏輯尺方法完成??捎眠壿嫵叻椒ㄍ瓿伞某個(gè)采樣系統(tǒng),第某個(gè)采樣系統(tǒng),第1,2,5,7,10次采樣時(shí),采用次采樣時(shí),采用FUN1計(jì)算公式計(jì)算,第計(jì)算公式計(jì)算,第3,4,6,8,9次采樣時(shí)采用次采樣時(shí)采用FUN2計(jì)算公式計(jì)算,試編程完成該任務(wù)。計(jì)算公式計(jì)算,試編程完成該任務(wù)。l任務(wù)分析:任務(wù)分析:q可以設(shè)置一個(gè)開(kāi)關(guān)位,分別用0(FUN1)或1(FUN
16、2)表示不同的計(jì)算公式q在具體實(shí)現(xiàn)時(shí)可以用位串來(lái)表示,每次循環(huán)都將位串中的一位左移至CF,用CF來(lái)控制不同分支。實(shí)現(xiàn)此控制的位串稱為邏輯尺。q根據(jù)要求,本例中的位串為 0011 0101 1000 0000 2022-3-2224FUN1=X+5FUN2=X-3DATA SEGMENTLOGRULEQU 0011010110000000B ;邏輯尺邏輯尺COUNTEQU10;循環(huán)次數(shù);循環(huán)次數(shù)BUFDB20DUP(?);采集數(shù)據(jù);采集數(shù)據(jù)BLOCKDB20DUP(?);處理后數(shù)據(jù);處理后數(shù)據(jù)DATA ENDSCODE 2022-3-2225MOVDX,LOGRUL;循環(huán)尺;循環(huán)尺-DXMOVC
17、X,COUNT;設(shè)循環(huán)次數(shù)設(shè)循環(huán)次數(shù)MOVSI,OFFSET BUFMOVDI,OFFSET BLOCK;設(shè)指針地址;設(shè)指針地址NEXT: MOVAX,WORD PTR SIROLDX,1;左移一位;左移一位JCFUN2;進(jìn)位為;進(jìn)位為1,轉(zhuǎn),轉(zhuǎn)FUN2FUN1: ADDAX,5JMPNEXT1FUN2: SUBAX,3NEXT1:MOVWORD PTR DI,AX;送結(jié)果;送結(jié)果INCSI;修改指針地址;修改指針地址INCSIINCDIINCDILOOPNEXTMOVAH,4CH;返回;返回DOSINT21HDX 0011 0101 1000 00002022-3-2226l匯編語(yǔ)言中多次使
18、用的程序段可寫(xiě)成一個(gè)相匯編語(yǔ)言中多次使用的程序段可寫(xiě)成一個(gè)相對(duì)獨(dú)立的程序段對(duì)獨(dú)立的程序段,將它定義為將它定義為“過(guò)程過(guò)程”或子程或子程序。序。l使用子程序可使程序結(jié)構(gòu)模塊化,程序清晰使用子程序可使程序結(jié)構(gòu)模塊化,程序清晰易懂,維護(hù)方便。易懂,維護(hù)方便。l子程序說(shuō)明通常包括:子程序說(shuō)明通常包括:q功能描述:子程序的名稱,功能及性能q子程序中用到的寄存器和存儲(chǔ)單元q子程序的入口參數(shù),出口參數(shù)q子程序中調(diào)用其它子程序的名稱2022-3-2227l子程序說(shuō)明:子程序說(shuō)明:;名稱:;名稱:BCD2BIN;功能:將一個(gè)字節(jié)的;功能:將一個(gè)字節(jié)的BCD碼轉(zhuǎn)換成二進(jìn)制碼碼轉(zhuǎn)換成二進(jìn)制碼;所用寄存器:;所用寄存
19、器:CX;入口參數(shù):;入口參數(shù):AL存放兩位存放兩位BCD碼碼;出口參數(shù):;出口參數(shù):AL存放二進(jìn)制數(shù)存放二進(jìn)制數(shù);調(diào)用其它子程序:無(wú);調(diào)用其它子程序:無(wú)2022-3-2228BCD2BINPROCNEAR(或或FAR)PUSH CXMOV CH,ALAND CH,0FHMOV CL,4SHRAL,CLMOV CL,10MUL CLADD AL,CHPOP CXRETBCD2BINENDPBCD AL 0100 1000BIN AL 0011 00002022-3-2229l保護(hù)調(diào)用程序的返回地址保護(hù)調(diào)用程序的返回地址q由CALL指令本身完成,CPU執(zhí)行CALL指令是會(huì)自動(dòng)將當(dāng)前斷點(diǎn)的偏移地址
20、IP入棧,若是段間調(diào)用,將CS和IP入棧。當(dāng)子程序返回時(shí),遇到子程序中的RET指令,則自動(dòng)將當(dāng)前棧頂值彈出到IP和CS寄存器中。l保護(hù)某些寄存器的內(nèi)容保護(hù)某些寄存器的內(nèi)容q子程序要用到某些寄存器,為了不破壞寄存器中原有的信息,要將需保護(hù)的寄存器內(nèi)容入棧,一般安排在子程序開(kāi)頭,用一組PUSH指令,在程序結(jié)尾用POP依次彈出。l主程序和子程序間參數(shù)的傳遞形式主程序和子程序間參數(shù)的傳遞形式q用寄存器傳遞參數(shù):適合參數(shù)較少的情況,傳遞速度較快。q用存儲(chǔ)器傳遞參數(shù):適合參數(shù)較多的情況,需事先在存儲(chǔ)器中建一個(gè)參數(shù)表。 q用堆棧傳遞參數(shù):適合參數(shù)多的情況,尤其是在子程序嵌套與遞歸調(diào)用的情況下,比較不容易出錯(cuò)
21、。 2022-3-2230l數(shù)據(jù)段定義兩個(gè)數(shù)組,編程實(shí)現(xiàn)數(shù)組段數(shù)據(jù)段定義兩個(gè)數(shù)組,編程實(shí)現(xiàn)數(shù)組段分別求和(不計(jì)溢出)。分別求和(不計(jì)溢出)。主程序:主程序:DATASEGMENTARY1DW100 DUP (?)SUM1DW?ARY2DW100 DUP (?)SUM2DW?DATAENDSLEASI,ARY1MOVCX,LENGTH ARY1CALLSUMLEASI,ARY2MOVCX,LENGTH ARY2CALLSUM子程序:子程序:SUMPROCNEARXORAX,AXL1:ADDAX,WORD PTRSIINCSIINCSILOOPL1MOVWORD PTRSI,AXMOVAH,4CH
22、INT21HRETSUMENDP2022-3-2231 1. 10進(jìn)制數(shù)進(jìn)制數(shù)-2進(jìn)制數(shù)進(jìn)制數(shù) 將鍵盤(pán)輸入的將鍵盤(pán)輸入的10進(jìn)制數(shù)(進(jìn)制數(shù)(0-65535)轉(zhuǎn)換成)轉(zhuǎn)換成2進(jìn)制數(shù),并存入進(jìn)制數(shù),并存入BX寄存器中,如鍵入一個(gè)非寄存器中,如鍵入一個(gè)非10進(jìn)進(jìn)制數(shù),則退出。制數(shù),則退出。 分析分析 l先利用先利用1號(hào)號(hào)DOS功能調(diào)用,從鍵盤(pán)輸入一數(shù)字,并在功能調(diào)用,從鍵盤(pán)輸入一數(shù)字,并在AL中得到它的中得到它的ASCII碼。碼。l再將它轉(zhuǎn)換成再將它轉(zhuǎn)換成2進(jìn)制數(shù)(減去進(jìn)制數(shù)(減去30H),并判斷是否為),并判斷是否為數(shù)字?jǐn)?shù)字0-9,若不是則退出子程序,若是,則將,若不是則退出子程序,若是,則將2進(jìn)
23、制進(jìn)制數(shù)數(shù)-BX中。中。l再?gòu)逆I盤(pán)輸入第二個(gè)數(shù)字,若該數(shù)為再?gòu)逆I盤(pán)輸入第二個(gè)數(shù)字,若該數(shù)為0-9,則將先輸,則將先輸入的數(shù)乘以入的數(shù)乘以10后再加上后輸入的數(shù),結(jié)果存進(jìn)后再加上后輸入的數(shù),結(jié)果存進(jìn)BX。后面再輸入的數(shù)做同樣的處理。后面再輸入的數(shù)做同樣的處理。2022-3-2232 10進(jìn)制數(shù)進(jìn)制數(shù)-2進(jìn)制數(shù)進(jìn)制數(shù) 子程序子程序: DEC_BINPROC NEAR MOV BX, 0GET_CHAR: MOV AH, 1 ;鍵入數(shù)字鍵入數(shù)字 INT 21H SUB AL, 30H JL EXIT ;9,退出退出 JA EXIT ;是數(shù)字是數(shù)字0-9 CBW ;將將AL中的字節(jié)中的字節(jié)-字字 XC
24、HG AX, BX MOV CX, 10 ;將先鍵入的數(shù)乘將先鍵入的數(shù)乘以以10 MUL CX XCHG AX, BX ADD BX, AX ;再加上新鍵入的數(shù)再加上新鍵入的數(shù)JMP GET_CHAR EXIT: RET DEC_BIN ENDP2022-3-22332. 2進(jìn)制數(shù)進(jìn)制數(shù)-16進(jìn)制數(shù)進(jìn)制數(shù) 將將BX寄存器中的寄存器中的2進(jìn)制數(shù)轉(zhuǎn)換成進(jìn)制數(shù)轉(zhuǎn)換成16進(jìn)制數(shù),進(jìn)制數(shù),并在并在CTR上顯示出來(lái)。上顯示出來(lái)。 分析分析 由于每由于每4位位2進(jìn)制數(shù)可用一個(gè)進(jìn)制數(shù)可用一個(gè)16進(jìn)制數(shù)表示,進(jìn)制數(shù)表示,所以所以BX中的中的2進(jìn)制數(shù)可轉(zhuǎn)換成進(jìn)制數(shù)可轉(zhuǎn)換成4個(gè)個(gè)16進(jìn)制數(shù)字,進(jìn)制數(shù)字,每左移每左移
25、4次可得到一個(gè)次可得到一個(gè)16進(jìn)制數(shù),將其轉(zhuǎn)換成進(jìn)制數(shù),將其轉(zhuǎn)換成ASCII碼后,在碼后,在CRT上顯示出來(lái),重復(fù)上顯示出來(lái),重復(fù)4次,可次,可將將BX中的數(shù)以中的數(shù)以4個(gè)個(gè)16進(jìn)制數(shù)字顯示出來(lái)。進(jìn)制數(shù)字顯示出來(lái)。2022-3-22342進(jìn)制數(shù)進(jìn)制數(shù)-16進(jìn)制數(shù)子程序進(jìn)制數(shù)子程序: BIN_HEXPROC NEAR MOVCH, 4 ;重復(fù)重復(fù)4次可得到次可得到4個(gè)個(gè)16進(jìn)制數(shù)進(jìn)制數(shù)ROTATE:MOV CL, 4 ROL BX, CL ;BX左移左移4次次 MOV AL, BL AND AL, 0FH ;截得一個(gè)截得一個(gè)16進(jìn)制數(shù)字進(jìn)制數(shù)字(4位二位二進(jìn)制進(jìn)制) ADD AL, 30H ;轉(zhuǎn)換成轉(zhuǎn)換成ASCII碼碼 CMP AL, 3AH JL DISPLAY ADD AL, 7HDISPLAY:MOV DL, AL ;顯示顯示 MOV AH, 2 INT 21H DEC CH ;4個(gè)數(shù)字都顯示完了?個(gè)數(shù)字都顯示完了? JNZ ROTATE ;沒(méi)有沒(méi)有,則
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)量光臨自查制度
- 財(cái)務(wù)共享運(yùn)營(yíng)相關(guān)制度
- 落實(shí)工作責(zé)任,嚴(yán)格執(zhí)行值班制度
- 用電檢查與稽查培訓(xùn)課件
- 2026海南三亞崖州灣國(guó)家實(shí)驗(yàn)室玉米基因組育種團(tuán)隊(duì)人員招聘?jìng)淇伎荚囶}庫(kù)附答案解析
- 2026江蘇南京市秦淮區(qū)朝天宮街道食品安全執(zhí)法輔助人員招聘1人參考考試題庫(kù)附答案解析
- 2026浙江寧波市升力同創(chuàng)科技咨詢服務(wù)有限公司招聘1人備考考試試題附答案解析
- 2026年上海理工大學(xué)附屬中學(xué)春季招聘參考考試試題附答案解析
- 成都傳媒集團(tuán)集團(tuán)管理媒體單位副職招聘?jìng)淇伎荚囋囶}附答案解析
- 2026年福建莆田第十五中學(xué)代課教師招聘若干人備考考試試題附答案解析
- 護(hù)患溝通技巧與沖突處理策略
- 座椅相關(guān)測(cè)試題及答案
- 《大連醫(yī)科大學(xué)研究生學(xué)位論文書(shū)寫(xiě)規(guī)范》
- 二十屆四中全會(huì)測(cè)試題及參考答案
- 蒸鍍相關(guān)知識(shí)培訓(xùn)總結(jié)
- 按摩禁忌課件
- 代建工程安全管理
- 風(fēng)電場(chǎng)培訓(xùn)安全課件
- 工程質(zhì)量管理復(fù)盤(pán)總結(jié)
- (完整版)房屋拆除施工方案
- 供水管道搶修知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論