微機原理及應用-chppt課件_第1頁
微機原理及應用-chppt課件_第2頁
微機原理及應用-chppt課件_第3頁
微機原理及應用-chppt課件_第4頁
微機原理及應用-chppt課件_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第七章第七章 匯編語言程序設計的基本匯編語言程序設計的基本方法和技巧方法和技巧7.1 概述概述7.3 8086匯編語言程序設計的基本語法匯編語言程序設計的基本語法7.4 匯編語言程序設計的基本方法和技巧匯編語言程序設計的基本方法和技巧7.7 IBM-PC-DOS系統(tǒng)的功能調(diào)用系統(tǒng)的功能調(diào)用可執(zhí)行目標文件:可執(zhí)行目標文件:“.EXE”目標代碼文件:目標代碼文件:“.OBJ”,沒有確定的物理地址,沒有確定的物理地址,“.ASM若有錯,給出信息若有錯,給出信息源程序文件:源程序文件:“.ASM” “.asm” 編輯編輯edit匯編匯編得到結果,觀察結果是否正確,錯誤得到結果,觀察結果是否正確,錯誤鏈

2、接鏈接若干若干.OBJ調(diào)試調(diào)試MS-DOS下下7.1 概述概述7.3 8086匯編語言程序設計的基本語法匯編語言程序設計的基本語法指示性語句與指令性語句:指示性語句與指令性語句:指令性語句是用指令系統(tǒng)中的指令構成的語句。指令性語句是用指令系統(tǒng)中的指令構成的語句。 格式:格式:標號:標號: 操作碼助記符操作碼助記符 操作數(shù)操作數(shù) ;注釋;注釋指示性語句是指示匯編程序進行匯編的操作偽指令和宏指令指示性語句是指示匯編程序進行匯編的操作偽指令和宏指令)。)。 格式:格式:名字名字 定義符定義符 參數(shù)參數(shù) ;注釋;注釋l指示性語句與指令性語句區(qū)別指示性語句與指令性語句區(qū)別l一個程序經(jīng)匯編,連接和裝入內(nèi)存

3、后,在執(zhí)行程序之前:一個程序經(jīng)匯編,連接和裝入內(nèi)存后,在執(zhí)行程序之前:l 指示性語句的功能已經(jīng)完成,故又稱偽操作。指示性語句的功能已經(jīng)完成,故又稱偽操作。 l 而指令性語句的功能尚未完成,需控制而指令性語句的功能尚未完成,需控制CPU去執(zhí)行,才能完成。去執(zhí)行,才能完成。一、源程序語句的組成一、源程序語句的組成NEAR:標號只能做段內(nèi)轉移和段內(nèi)調(diào)用的目標地址。標號只能做段內(nèi)轉移和段內(nèi)調(diào)用的目標地址。FAR:標號只能做段間轉移和段間調(diào)用的目標地址標號只能做段間轉移和段間調(diào)用的目標地址 標號:表示指令所在存儲單元的首地址標號:表示指令所在存儲單元的首地址.具有段屬性,具有段屬性,段基址必須在段基址必

4、須在CS段寄存器中,在段內(nèi)有偏移量。段寄存器中,在段內(nèi)有偏移量。兩種類性:兩種類性:NEAR和和FARJMP LE(0FFFFH:0) JMP 0ffff:0JMP dword ptr bx JMP Array 1234h 名字:后不帶名字:后不帶:,除存儲器間接尋址外,名字,除存儲器間接尋址外,名字不作為轉移指令和調(diào)用指令的目的操作數(shù)。不作為轉移指令和調(diào)用指令的目的操作數(shù)。在程序中,標號和名字只能出現(xiàn)一次在程序中,標號和名字只能出現(xiàn)一次助記符由指令系統(tǒng)規(guī)定。助記符由指令系統(tǒng)規(guī)定。定義符由匯編程序規(guī)定。定義符由匯編程序規(guī)定。都稱為關鍵字或保留字,不能用作標號、名字、變量名。都稱為關鍵字或保留字

5、,不能用作標號、名字、變量名。二、操作數(shù)和參數(shù)二、操作數(shù)和參數(shù)可以是常量、變量、寄存器、標號和表達式,不止一可以是常量、變量、寄存器、標號和表達式,不止一個,用個,用,分開分開1. 常量常量在指令性語句中可以做立即數(shù),也可以做偏移量在指令性語句中可以做立即數(shù),也可以做偏移量e.g. MOV AL, 5AH MOV AX, SI+66H在指示性語句中一般作為參數(shù)或數(shù)據(jù)項在指示性語句中一般作為參數(shù)或數(shù)據(jù)項e.g. ABC DW 1357H ;定義字定義字2. 變量變量 代表存放在某存儲單元的數(shù)據(jù),若變量代表存放在某存儲單元的數(shù)據(jù),若變量在名字中出現(xiàn),稱為對變量的定義,就是在名字中出現(xiàn),稱為對變量的

6、定義,就是給變量分配存儲單元,且對這個存儲單元給變量分配存儲單元,且對這個存儲單元賦一個符號名賦一個符號名變量名。同時將這些存變量名。同時將這些存儲單元預置初值,可以通過儲單元預置初值,可以通過DBDB、DWDW、DDDD等等對變量定義。對變量定義。三種三種屬性屬性段屬性一定屬于某個段)段屬性一定屬于某個段)偏移屬性在段內(nèi)有偏移量)偏移屬性在段內(nèi)有偏移量)類型屬性,指變量長度:類型屬性,指變量長度:DB、DD、DW、DQ、DT3. 表達式與運算符表達式與運算符 +、-、*、/:參加運算的數(shù)和結果均是整數(shù),除法運參加運算的數(shù)和結果均是整數(shù),除法運算的結果只取整數(shù)部分算的結果只取整數(shù)部分 e.g.

7、 80/9的值為的值為8 MOD:除法取余:除法取余 SHL/SHR:邏輯左:邏輯左/右移,最右右移,最右/左邊以左邊以0補,當移位次補,當移位次數(shù)數(shù)16時,結果恒為時,結果恒為0 表達式表達式11表達式表達式22 下標運算符,表示加法,把表達式下標運算符,表示加法,把表達式1 1和表達式和表達式2 2相加形成一個存儲器內(nèi)存地址相加形成一個存儲器內(nèi)存地址e.g. MOV AX, DATA110He.g. MOV AX, DATA110H MOV AX, DATA1+10H MOV AX, DATA1+10H等價等價(2) (2) 邏輯運算符邏輯運算符 ANDAND、OROR、XORXOR、NO

8、TNOT注:有些運算符與指令助記符是相同的,但是概念不注:有些運算符與指令助記符是相同的,但是概念不同同 在語句中所處的字段不同,指令位于操作碼段,運算在語句中所處的字段不同,指令位于操作碼段,運算符位于操作數(shù)段符位于操作數(shù)段 指令在程序運行時執(zhí)行,運算符在運算在匯編時完成指令在程序運行時執(zhí)行,運算符在運算在匯編時完成 指令操作對象是操作數(shù),運算符處理對象是某一個具指令操作對象是操作數(shù),運算符處理對象是某一個具體的數(shù)體的數(shù)AND AL,24H AND 0FHAND AL,24H AND 0FH(3) (3) 關系運算符關系運算符 EQEQ、NENE、LTLT、LELE、GTGT、GEGE 關系

9、運算符連接兩數(shù)這兩個數(shù)必須同時是數(shù)字或關系運算符連接兩數(shù)這兩個數(shù)必須同時是數(shù)字或同一段內(nèi)的兩個地址組成一個判定式,若判定式正確同一段內(nèi)的兩個地址組成一個判定式,若判定式正確為真),運算結果為為真),運算結果為0FFFFH,若為假,則運算結果,若為假,則運算結果為為0000He.g. (PORT)=25 MOV AX, 25 EQ PORT 匯編匯編“MOV AX, 0FFFFH” MOV AX, 25 NE PORT 匯編匯編“MOV AX, 0000H”(4) (4) 分析運算符分析運算符 SEG 符號名符號名 ;求段基址;求段基址e.g. 標號標號SLAB處于數(shù)據(jù)段,且段基址為處于數(shù)據(jù)段,

10、且段基址為46FFH,那么,那么 MOV AX, SEG SLAB ;(AX)=46FFH OFFSET 符號名符號名 ;求段內(nèi)偏移量;求段內(nèi)偏移量e.g. 標號標號SLAB處于數(shù)據(jù)段,且與數(shù)據(jù)段基址的距離為處于數(shù)據(jù)段,且與數(shù)據(jù)段基址的距離為10H MOV SI, OFFSET SLAB ;(SI)=0010H TYPE TYPE 符號名符號名 ;求符號名類型值;求符號名類型值e.g. DATA1 DB 12H, 34H, 56He.g. DATA1 DB 12H, 34H, 56H DATA2 DW 7890H DATA2 DW 7890H MOV AX, TYPE DATA1 ;(AX)=

11、1 MOV AX, TYPE DATA1 ;(AX)=1 MOV BX, TYPE DATA2 ;(BX)=2 MOV BX, TYPE DATA2 ;(BX)=2類型類型類型值類型值1B12B24B48B810B10NEAR-1FAR-2 SIZE 符號名符號名 ;求為符號名分配的字節(jié)數(shù);求為符號名分配的字節(jié)數(shù)e.g. DATA1 DB 50 DUP (0) DATA2 DD 20 DUP (0) MOV AX, SIZE DATA1 ;(AX)=1*50=50 MOV AX, SIZE DATA2 ;(AX)=4*20=80必須是用必須是用“DUP( )”定義的數(shù)據(jù)項定義的數(shù)據(jù)項 LENG

12、TH 符號名符號名 ;求為符號名分配的項數(shù);求為符號名分配的項數(shù)SIZE、LENGH、TYPE之間的關系:之間的關系:SIZE 符號名符號名=(LENGTH 符號名符號名)*(TYPE 符號名符號名)e.g. 對于對于“ABC DW 100 DUP (?)” TYPE ABC ;匯編結果為匯編結果為2 LENGTH ABC ;匯編結果為匯編結果為100 SIZE ABC ;匯編結果為匯編結果為200必須是用必須是用“DUP( )”定義的數(shù)據(jù)項定義的數(shù)據(jù)項(5) (5) 屬性運算符屬性運算符 類型類型 PTR 符號名符號名 ;將符號定義為新類型;將符號定義為新類型BYTE、WORD、DWORD、

13、NEAR、FAR等等SUB WORD PTR ALPHABXDI, 512H; THIS 類型類型 ;指定新類型,規(guī)定它所定義的符號名;指定新類型,規(guī)定它所定義的符號名和相鄰的下一個語句的符號名具有相同的物理地址和相鄰的下一個語句的符號名具有相同的物理地址e.g. LABC EQU THIS BYTE LABD DW 1357H, 2468H MOV AL, LABC ;(AL)=57H MOV AX, LABD+1 ;(AX)=6813H SHORT 標號標號 ;指出;指出JMP指令的轉向地址是在下一條指指令的轉向地址是在下一條指令的令的127個字節(jié)范圍內(nèi)個字節(jié)范圍內(nèi)(5) (5) 分離運算

14、符分離運算符 LOW 表達式表達式 ;取低字節(jié)取低字節(jié) HIGH 表達式表達式 ;取高字節(jié)取高字節(jié)e.g. SSY=1234H, 那么那么 MOV AL, LOW 5678H ; (AL)=78H MOV AH, HIGH SSY ; (AH)=12H7.4 匯編語言程序設計的基本方法和技巧匯編語言程序設計的基本方法和技巧一、概述一、概述 (一)(一) 判斷程序質量的標準判斷程序質量的標準 程序的正確性程序的正確性 程序的可讀性程序的可讀性 程序的執(zhí)行時間程序的執(zhí)行時間 程序所占內(nèi)存大小程序所占內(nèi)存大小( (二二) )匯編語言的程序設計步驟如下:匯編語言的程序設計步驟如下:1 1建立數(shù)學模型;

15、建立數(shù)學模型;2 2選擇算法;選擇算法;3 3繪制流程圖;繪制流程圖;4 4分配存儲空間和工作單元;分配存儲空間和工作單元;5 5根據(jù)流程圖編制程序;根據(jù)流程圖編制程序;6 6上機調(diào)試程序。上機調(diào)試程序。7.4 匯編語言程序設計的基本方法和技巧匯編語言程序設計的基本方法和技巧 順序結構順序結構分支結構分支結構循環(huán)結構循環(huán)結構 子程序結構子程序結構(三幾種程序結構(三幾種程序結構7.4 匯編語言程序設計的基本方法和技巧匯編語言程序設計的基本方法和技巧1. 順序程序設計順序程序設計例例 從標號為從標號為ADD-BUF的存儲單元開始連續(xù)存放著兩個的存儲單元開始連續(xù)存放著兩個單字節(jié)數(shù),將兩數(shù)相加,結果

16、送到單字節(jié)數(shù),將兩數(shù)相加,結果送到SUMBUF存儲單存儲單元中不考慮進位)。元中不考慮進位)。 開開 始始 AH(ADD-BUF)AHAH+(ADD-BUF+1) (SUM-BUF)AH 完畢完畢 DATASEGMENTADD-BUFDB47H,6AHSUM-BUFDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXMOVAH,ADDBUFADDAH,ADD-BUF+1MOVSUM-BUF,AHCODEENDSENDSTART2. 分支程序設計分支程序設計選擇分支選擇分支 簡單分支簡單分支 多分支多分支 例例

17、比較兩個一字節(jié)無符號數(shù)比較兩個一字節(jié)無符號數(shù)X1和和X2的大小,把大數(shù)的大小,把大數(shù)存入存入MAX單元。單元。分析:比較兩個無符號數(shù),可將兩數(shù)相減,然后根據(jù)分析:比較兩個無符號數(shù),可將兩數(shù)相減,然后根據(jù)CF標志位來判斷大小。標志位來判斷大小。 DATASEGMENTSOURCEDBX1, X2MAXDB?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATAMOVAX,DATAMOVDS,AXMOVAL,SOURSE;ALX1CMPAL,SOURSE+1;X1X2JNCBRANCH;若若X1X2,轉轉BRANCHMOVAL,SOURSE+1;否則,否則,ALX2BR

18、ANCH:MOVMAX,AL;大數(shù)送大數(shù)送MAX單單CODEENDSEND3. 循環(huán)程序設計循環(huán)程序設計WHILE-DO型循環(huán)圖型循環(huán)圖 REPEAT-UNTIL型循環(huán)圖型循環(huán)圖 (1)(1)初始化部分初始化部分這是循環(huán)的準備部分,為程序操作、地址指針、循環(huán)計數(shù)、這是循環(huán)的準備部分,為程序操作、地址指針、循環(huán)計數(shù)、結束條件等設置初始值。結束條件等設置初始值。(2)(2)循環(huán)體,包括以下循環(huán)體,包括以下3 3個部分:個部分: 循環(huán)工作部分循環(huán)工作部分-這是循環(huán)程序的主體,完成程序的這是循環(huán)程序的主體,完成程序的基本操作,循環(huán)多少次,這部分語句就執(zhí)行多少次。基本操作,循環(huán)多少次,這部分語句就執(zhí)行多

19、少次。 循環(huán)修改部分循環(huán)修改部分-修改循環(huán)工作部分的變量地址等,這修改循環(huán)工作部分的變量地址等,這保證每次重復時,參加執(zhí)行的數(shù)據(jù)能發(fā)生有規(guī)律的變化。保證每次重復時,參加執(zhí)行的數(shù)據(jù)能發(fā)生有規(guī)律的變化。 循環(huán)控制部分循環(huán)控制部分-保證循環(huán)條件滿足時進入循環(huán);循環(huán)保證循環(huán)條件滿足時進入循環(huán);循環(huán)結束條件不滿足時,退出循環(huán),執(zhí)行循環(huán)體外的后續(xù)語句。結束條件不滿足時,退出循環(huán),執(zhí)行循環(huán)體外的后續(xù)語句。(3)(3)循環(huán)結束部分循環(huán)結束部分 完成循環(huán)結束后的處理,如數(shù)據(jù)分析、結果的存放等。完成循環(huán)結束后的處理,如數(shù)據(jù)分析、結果的存放等。 例例 從從XX單元開始的單元開始的10個連續(xù)單元中個連續(xù)單元中存放有存

20、放有10個無符號數(shù),從中找出最大個無符號數(shù),從中找出最大者送入者送入YY單元。單元。 分析:根據(jù)題意,把第分析:根據(jù)題意,把第一個數(shù)先送入一個數(shù)先送入AL,將,將AL中的數(shù)與后面的中的數(shù)與后面的9個數(shù)逐個數(shù)逐個比較,如果個比較,如果AL中的數(shù)中的數(shù)較小,則兩數(shù)交換位置,較小,則兩數(shù)交換位置,如果如果AL中的數(shù)大于或等中的數(shù)大于或等于相比較的數(shù),則兩數(shù)于相比較的數(shù),則兩數(shù)位置不變,在比較過程位置不變,在比較過程中,中,AL中始終保持較大中始終保持較大的數(shù),比較的數(shù),比較9次,則最大次,則最大者必在者必在AL中,最后把中,最后把AL中的數(shù)送入中的數(shù)送入YY單元。單元。循環(huán)工作部分循環(huán)工作部分循環(huán)修

21、改部分循環(huán)修改部分循環(huán)控制部分循環(huán)控制部分循環(huán)修改部分循環(huán)修改部分初始化部分初始化部分循環(huán)結束部分循環(huán)結束部分DATASEGMENTXXDB73, 59, 61, 45, 8l, 107, 37, 25, 14, 64YYDB?DATAENDSCODESEGMENTASSUMECS:CODE, DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XXMOVBX,OFFSET XXMOVCX,9LOOP1: INCBXCMPAL,BXJAELOOP2MOVAL,BXLOOP2:DECCXJNZLOOP1MOVYY, ALMOVAH, 4CHINT21HCODEENDSEND

22、START7.7 DOS功能調(diào)用 PCDOS是是IBM PC微型計算機的磁盤操作系統(tǒng)。微型計算機的磁盤操作系統(tǒng)。它為用戶提供了許多命令,也有它為用戶提供了許多命令,也有80多個子程序可供用多個子程序可供用戶調(diào)用。戶調(diào)用。 這些子程序的功能主要是實現(xiàn)對存儲器和基本這些子程序的功能主要是實現(xiàn)對存儲器和基本I/O設備的管理等。為了便于調(diào)用將所有子程序順序編號。設備的管理等。為了便于調(diào)用將所有子程序順序編號。如如PC DOS2.0有有87個子程序,編號從個子程序,編號從0開始到開始到57H。 用戶編程原則:用戶編程原則:盡可能使用盡可能使用DOS的系統(tǒng)功能調(diào)用,提高程序可移的系統(tǒng)功能調(diào)用,提高程序可移

23、 植性。植性。在在DOS功能不能實現(xiàn)情況下,考慮用功能不能實現(xiàn)情況下,考慮用BIOS功能功能調(diào)調(diào) 用。用。在在DOS和和BIOS的中斷子程不能解決問題時的中斷子程不能解決問題時,使用使用 IN/OUT指令直接控制硬件。指令直接控制硬件。設置入口參數(shù)設置入口參數(shù)在在AH設置功能號設置功能號m執(zhí)行中斷指令執(zhí)行中斷指令INT N分析、應用出口參數(shù)分析、應用出口參數(shù)1. 調(diào)用方法使用使用DOS功能調(diào)用還要注意下列問題:功能調(diào)用還要注意下列問題:(1從鍵盤輸入的字符由系統(tǒng)自動轉換為從鍵盤輸入的字符由系統(tǒng)自動轉換為ASCII碼,在進行數(shù)據(jù)處理時要特別注意;碼,在進行數(shù)據(jù)處理時要特別注意;(2需要在屏幕上顯

24、示的字符要在程序中將其轉需要在屏幕上顯示的字符要在程序中將其轉換為換為ASCII碼。碼。 例:實驗中的例:實驗中的3+4=72、DOS功能調(diào)用要注意的問題 INT 21H INT 21H二、二、DOS系統(tǒng)功能調(diào)用系統(tǒng)功能調(diào)用 (21H類型中斷調(diào)用類型中斷調(diào)用)在在DOS中斷服務程序中,功能最多的是矢量號為中斷服務程序中,功能最多的是矢量號為21H的矢量中斷的矢量中斷 入口參數(shù)入口參數(shù) 定義要顯示的字符串,字符串尾定義要顯示的字符串,字符串尾 應為應為$,作為結束顯示的標志。,作為結束顯示的標志。 DS : DX = DS : DX = 字符串的首地址字符串的首地址功能號功能號 AH = 09

25、HAH = 09 H類型號類型號 21H21H出口參數(shù)出口參數(shù) 無無實現(xiàn)功能實現(xiàn)功能 顯示字符串,遇顯示字符串,遇 $ $ 停止顯示,停止顯示,光光 標隨動。標隨動。2. 顯示字符串 ( 09H功能 )3.鍵盤輸入一個字符 ( 01H功能 )將其ASCII字符代碼送AL寄存器,同時送顯示器顯示。如:MOV AH,01H INT 21H 例:例:MOV AHMOV AH,4CH4CH INT 21H INT 21H4.終止程序,返回DOS4CH號)二、匯編語言程序設計舉例例例1:試設計一個對兩個:試設計一個對兩個32位二進制數(shù)相加的程位二進制數(shù)相加的程序。設被加數(shù)序。設被加數(shù)2A3B078EH和

26、加數(shù)和加數(shù)4C508F55H從從數(shù)據(jù)段的數(shù)據(jù)段的BGS單元令單元令BGS=2000H開始依次開始依次存放,要求將兩數(shù)和放在加數(shù)之后。存放,要求將兩數(shù)和放在加數(shù)之后。 分析:這是一個簡單的加法問題,因為數(shù)據(jù)不長,分析:這是一個簡單的加法問題,因為數(shù)據(jù)不長,可采用順序程序設計方法??刹捎庙樞虺绦蛟O計方法。 因為是兩個因為是兩個32位數(shù)相加,應先加低位數(shù)相加,應先加低16位,再位,再加高加高16位,加高位,加高16位時還要考慮低位時還要考慮低16位相加產(chǎn)生位相加產(chǎn)生的進位,應選用帶進位加法指令。還要注意,多的進位,應選用帶進位加法指令。還要注意,多字節(jié)數(shù)在內(nèi)存是放在連續(xù)的存儲單元中,且高字字節(jié)數(shù)在內(nèi)

27、存是放在連續(xù)的存儲單元中,且高字節(jié)放高地址單元,低字節(jié)放低地址單元。節(jié)放高地址單元,低字節(jié)放低地址單元。 內(nèi)存單元分配如下:內(nèi)存單元分配如下:BGS=2000H8EH07H3BH2AH55H8FH50H4CH被加數(shù)被加數(shù)加數(shù)加數(shù)和和2019H2019HDATA SEGMENT ORG 2000HBGS DD 2A3B078EH,4C5D8F55H DD ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA ORG 1000HSTART:MOV AX,DATA MOV DS,AX MOV AX,BGS ADD AX,BGS+4 MOV BGS+8,AX MO

28、V AX,BGS+2 ADC AX,BGS+6 MOV BGS+0AH,AX MOV 0AH,4CH INT 21HCODE ENDS END START低低16位位高高16位位返回返回DOS 同一問題,若數(shù)據(jù)很長,或采用字節(jié)加法,則重同一問題,若數(shù)據(jù)很長,或采用字節(jié)加法,則重復很多次,可考慮采用循環(huán)程序設計方法:復很多次,可考慮采用循環(huán)程序設計方法:DATA SEGMENT ORG 2000HBGS DB 8EH, 07H, 3BH, 2AH DB 55H, 8FH,5DH, 4CH DB 4 DUP( ?)?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:

29、DATA ORG 1000HSTART:MOV AX,DATA MOV DS,AX MOV CX,4 CLC MOV SI,OFFSET BGS LOOP1:MOV AL,SI ADC AL,SI+4 MOV SI+8,AL INC SI LOOP LOOP1 MOV AH,4CH INT 21HCODE ENDS END START一次加法一次加法 例例1:已知從已知從DS段段1000H單元開始連續(xù)存放著單元開始連續(xù)存放著大小不同的兩個大小不同的兩個16位二進制無符號數(shù)位二進制無符號數(shù)X1和和X2。試設計一個程序,將其中的大數(shù)放到試設計一個程序,將其中的大數(shù)放到0050H單單元,小數(shù)放到元,

30、小數(shù)放到0052H單元。單元。 解:顯然,這是一個雙分支程序。解:顯然,這是一個雙分支程序。 根據(jù)比較結根據(jù)比較結果果(CF標志標志)用條件轉移指令實現(xiàn)分支。用條件轉移指令實現(xiàn)分支。 X1LX1H X2L X2HDS:1000HDS:0050H大數(shù)大數(shù)小數(shù)小數(shù) 0052HDATASEGMENT ORG 1000H x1 DW ? x2 DW ? ORG 0050HMAX DW 2DUP (?)DATAENDSCODESEGMENT ASSUME CS:CODE, DS:DATASTART:MOV AX,DATAMOV DS,AX MOV AX, 1000H MOVBX, 1002H CMPAX

31、,BX;比較兩數(shù)大?。槐容^兩數(shù)大小 JNCLOP1; AX BX轉轉LOP1 MOVMAX , BX MOVMAX+2,AXLOPT: MOV AH,4CH INT 21HLOP1: MOVMAX,AX MOVMAX+2,BX JMPLOPTCODE ENDS END START程序分析程序分析data segmentdat db -22,35,-57,0,19,99,123,-98,-128,67res db (?)data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax lea si,dat ; 【61】 mov cx,9 mov al,silop

溫馨提示

  • 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

提交評論