版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微型計(jì)算機(jī)原理
及接口技術(shù)
授課教師:
第4章'4.4D0S與BIOS的調(diào)用
概
441述
H-
DOS是微型計(jì)算機(jī)磁盤操作系統(tǒng)(DiskOperationSystem),操作系
統(tǒng)是用以控制和管理計(jì)算機(jī)的硬件資源、方便用戶使用的程序的集
合。由于這些軟件程序放在硬盤或軟盤上,而且主要功能是進(jìn)行文
件管理和輸入、輸出設(shè)備管理,故而稱為磁盤操作系統(tǒng)。磁盤操作
系統(tǒng)是入和機(jī)器交互的界面,用戶通過操作系統(tǒng)使用和操作計(jì)算機(jī).
DOS所有軟件使用基礎(chǔ)的平臺(tái)。
第4章4.4D0S與BIOS的調(diào)用
概
4.述
DOS由三個(gè)層次的程序文件及一個(gè)BOOT引導(dǎo)程序構(gòu)成。三個(gè)層
次模塊文件:
10.SYS輸入/輸出管理系統(tǒng)
MSDOS-SYS文件管理系統(tǒng)
COMMAND.COM命令處理系統(tǒng)
DOS和ROMBIOS提供了大量的可供用戶直接使用的系統(tǒng)服務(wù)程序。
ROMBIOS(ROMBasicInputandOutputSystem)是固化在只讀存
儲(chǔ)器ROM中基本輸入/輸出的程序。它直接可對(duì)外部設(shè)備進(jìn)行設(shè)備升
級(jí)的控制,包括系統(tǒng)測(cè)試、初始化引導(dǎo)程序、控制I/O設(shè)備的服務(wù)
匚
程序等。E
第4章4.4D0S與BIOS的調(diào)用
一般說來,用戶可以用四種方式控制PC機(jī)的硬件:
□第一種,應(yīng)用高級(jí)語言的相應(yīng)的功能語句進(jìn)行控制。
□第二種,應(yīng)用DOS提供的功能程序來控制硬件。
第三種,應(yīng)用ROMBIOS的程序控制硬件,這是低層次控制,要求編
程者對(duì)硬件有相當(dāng)深入了解。
第四種,直接使用匯編語言編程進(jìn)行控制,但是,要求編程者對(duì)
I/O設(shè)備的地址功能比較熟悉。
E匚
□4.4D0S與BIOS的調(diào)用
□4.4.2DOS系統(tǒng)功能調(diào)用
MS-DOS操作系統(tǒng)為程序設(shè)計(jì)者提供了可以直接調(diào)用的軟中斷處理
□程序,每一個(gè)中斷處理程序完成一個(gè)特定的功能操作,依據(jù)編程需
□要選擇適當(dāng)?shù)奶幚沓绦?,編程者不再重新編寫程序。這些功能處理
程序,使用的是INTn軟中斷指令,每執(zhí)行一種類型碼n的不同的軟
中斷指令,就執(zhí)行一個(gè)中斷處理程序。
這類功能程序的主要功能是:
①磁盤的讀/寫控制
②內(nèi)存管理、文件操作和目錄管理
③基本輸入/輸出(對(duì)鍵盤、打印機(jī)和顯示器控制),另外還有日期、
時(shí)間等。
第4章4.4D0S與BIOS的調(diào)用
4.4.2D0S系統(tǒng)功能調(diào)用
當(dāng)類型碼n=05H-1FH,調(diào)用ROMBIOS中的處理程序。
類型碼n=20H—3FH,調(diào)用的是DOS的中斷處理程序。
INT21H是一個(gè)大型的中斷處理程序,其中有大約100多種功能中斷
處理程序,可由程序設(shè)計(jì)者調(diào)用。
INT21H軟中斷指令對(duì)應(yīng)的功能子程序調(diào)用稱為DOS系統(tǒng)功能調(diào)用。
E匚
第4章4.4D0S與BIOS的調(diào)用
一、DOS軟中斷調(diào)用
贏萩子面藁法蝠靛茄藪芝就總.........................
□
其中,入口參數(shù)是使用該調(diào)用必須具備的條件;出口參數(shù)是表示軟
□中斷程序執(zhí)行結(jié)果放在何處或執(zhí)行該操作處理的特征。
DOS中斷調(diào)用方法:
按DOS中斷規(guī)定,用指令寫入口參數(shù),然后執(zhí)行INTn指令,執(zhí)行完
畢后,依據(jù)結(jié)果進(jìn)行分析及處理。
執(zhí)行INTn指令,即分析處理
設(shè)置入
執(zhí)行中斷服務(wù)程序,出口參數(shù)
口參數(shù)
最后執(zhí)行IRET
□4.4D0S與BIOS的調(diào)用
□DOS軟中斷
軟中斷功能入口參數(shù)出口參數(shù)
INT20H程序正常退出
INT21H系統(tǒng)功能調(diào)用AH=功能號(hào)相應(yīng)處理結(jié)果參數(shù)
INT22H結(jié)束退出
INT23HCtl+break中斷退出
INT24H出錯(cuò)退出
INT27H駐留退出
INT25H的CX、DXCF=1出錯(cuò)
DS:BX、AL
INT25H寫盤CX、DX、CF=1出錯(cuò)
DS:BX、AL
第4章4.4D0S與BIOS的調(diào)用
二、DOS系統(tǒng)功能調(diào)用INT21H
INT^IH最早凝箕茄)贏菽],皤,不瑪茁時(shí)最“章:'KA
子功能程序分別予以編號(hào),稱為功能號(hào)。每個(gè)功能程序完成一種特
定的操作和處理。
主要功能包括:設(shè)備管理、目錄管理、文件管理等。
應(yīng)用INT21H系統(tǒng)功能調(diào)用方法:
MOVAL,OAH
①入口參數(shù)送指定的寄存器或內(nèi)存MOVAH,02H
②功能號(hào)送AH中。INT21H;換行
③執(zhí)行INT21H軟中斷指令。
MOVAH,4CH
INT21H;
4.4D0S與BIOS的調(diào)用
1.鍵盤輸入并顯示(1號(hào)功能調(diào)用)
功能:等待標(biāo)準(zhǔn)輸入設(shè)備送入一個(gè)字符,并放到
寄存器AL中,不需要入口參數(shù)。AL中放字符的
ASCH碼,并且CRT屏幕上顯示。
MOVAH,1
INT21H
4.4D0S與BIOS的調(diào)用
2.鍵盤輸入但不顯示輸入字符(8號(hào)功能調(diào)用)
功能:8號(hào)功能調(diào)用,系統(tǒng)將進(jìn)行鍵盤掃描,等
待鍵按下,一旦有鍵按下,將字符ASCH碼讀入,
放入AL中,但不在CRT屏幕上顯示。
MOVAH,8
INT21H
□4.4D0S與BIOS的調(diào)用
□3.CRT屏幕顯示一個(gè)字符(2號(hào)功能調(diào)用)
□功能:入口參數(shù):待顯示的字符ASCH碼放入DL
□中,功能號(hào)送AH。其功能把DL中的字符在屏幕上
顯示出來。
例如要顯示字符'A,程序段:
MOVDL,'A'
MOVAH,02H
INT21H
4.4D0S與BIOS的調(diào)用
4.打印輸出(5號(hào)眇調(diào)用)
功能:入口參數(shù):將要在打印機(jī)上打印的字
ASCH碼放入DL中,5號(hào)功能調(diào)用即把字符輸出到打
印機(jī)上予以打印。
例如:
MOV,DL,W
MOVAH,05H
INT21H
執(zhí)行后,打印機(jī)上即打印出字符A。
多4制4.4D0S與BIOS的調(diào)用
口5.CRT屏幕顯示字符串符號(hào)(9號(hào)可能調(diào)用)
□
功能:待顯示的字符串符號(hào)(ASCH
碼),定義在DS段且以'$,字符結(jié)束,
.□把段地址放入DS中,偏移地址放入
DX中,利用9號(hào)功能調(diào)用,可把字符
串符號(hào)顯示在屏幕上。
□4.4D0S與BIOS的調(diào)用
DATASEGMENT
□BUFDB6HOWDOYOUDO?9,OAH,ODH,'$'
DATAENDS
CODESEGMENT
MOVAX,DATA
MOVDS,AX執(zhí)行程序,在屏幕上顯示:
“HOWDOYOUDO?”
MOVDX,OFFSETBUF字符串符號(hào)。
MOVAH,09H
INT21H
CODEENDS
4.4D0S與BIOS的調(diào)用
6.字符串輸入功能調(diào)用(0AH功能調(diào)用)
功能:從鍵盤接收字符并且放入到內(nèi)存緩沖區(qū)。
第一個(gè)字節(jié):予留字節(jié):第三個(gè)字節(jié):
允許最多輸入在輸入結(jié)束接收字符
的字符數(shù)后輸入字符ASCCH碼
的個(gè)數(shù)
第4章4.4D0S與BIOS的調(diào)用
6受符串輸入功能調(diào)用(OAH*能調(diào)用)
功能:從鍵盤接收字符并且放入到內(nèi)存緩沖區(qū)。
要求執(zhí)行前:(1)先定義一個(gè)輸入緩沖區(qū),緩沖區(qū)內(nèi)第一個(gè)字
節(jié)定義為允許最多輸入的字符個(gè)數(shù),個(gè)數(shù)應(yīng)包括回車符ODH在
內(nèi),不能為。值。第二個(gè)字節(jié)保留,在執(zhí)行程序完畢后存入輸入
的實(shí)際的字符個(gè)數(shù)。從第三個(gè)字節(jié)開始存入從鍵盤上接收的字
符的ASCH碼。
(2)若實(shí)際輸入的字符個(gè)數(shù)少于定義的最大的字符個(gè)數(shù),則緩
沖區(qū)其他單元自動(dòng)清0值。若實(shí)際輸入的字符個(gè)數(shù)多于定義的字
符個(gè)數(shù),其后輸入的字符丟棄不用,且響鈴示警,一直到鍵入
回車(CR)為止。
第4皂4.4D0S與BIOS的調(diào)用
6受符串輸入功能調(diào)用(OAH*能調(diào)用)
整個(gè)緩沖區(qū)的長(zhǎng)度等于最大字符個(gè)數(shù)再加2。
調(diào)用時(shí)要求DS:DX指向緩沖區(qū)的首地址,即入口參數(shù)為段地
址放在DS中,緩沖區(qū)起始的偏移地址放入DX中。
□4.4D0S與BIOS的調(diào)用
□DATASEGMENT
BUFDB25;緩沖區(qū)長(zhǎng)度
□ACTHARDB?;保留單元,存放輸入的實(shí)際字符個(gè)數(shù)
□CHARDB25CUP(?);定義25個(gè)字節(jié)存儲(chǔ)空間:
DB$
DATAENDS
CODESEGMENT
MOVDX,OFFSETBUF
MOVAH,OAH
INT21H
CODEENDS
4.4D0S與BIOS的調(diào)用
7.返回DOS系統(tǒng)功能調(diào)用(4CH調(diào)用)
功能:4cH功能調(diào)用,其操作是終止當(dāng)前程序的運(yùn)行,并把
控制權(quán)交給調(diào)用的程序,即返回DOS系統(tǒng),屏幕出現(xiàn)DOS提示
符。
如C:\>,等待DOS命令。
格式:MOVAH,4CH
INT21H
第4章4.4D0S與BIOS的調(diào)用
8.直接控制臺(tái)輸入輸出(6號(hào)功能調(diào)用)
□功能:從標(biāo)準(zhǔn)輸入設(shè)備輸入字符,也可以向屏幕上輸出字符,
但不檢查CtrLBreak組合鍵是否按下。
□
(1)當(dāng)向DL送入一個(gè)OFFH時(shí),表示從鍵盤輸入字符。若
標(biāo)志ZF=O,AL中放入字符的ASCH碼;若ZF=1,表示
無鍵按下。這種調(diào)用檢測(cè)掃描鍵盤有無鍵按下,但不等
待鍵盤輸入。
例如:MOVDL,OFFH
MOVOAH,6H
INT21H
4.4D0S與BIOS的調(diào)用
功能:從標(biāo)準(zhǔn)輸入設(shè)備輸入字符,也可以向屏幕上輸出字符,
但不檢查CtrLBreak組合鍵是否按下。
(2)假如DL/0FFH,表示向屏幕輸出顯示,DL中要放的
是待顯示字符的ASCH碼值。
例如:MOVDL,A9
MOVAH,6H字符A顯示左
CRT屏幕上。
INT21H
第4壑4.4DOS與BIOS的調(diào)用
9.檢查鍵盤的工作狀態(tài)(OBH功能調(diào)用)
□
功能:調(diào)用此功能用以檢查是否有鍵盤輸入,若有鍵按下,
則使AL=OFFH,若無鍵按下,則AL=00H。對(duì)于利用操作鍵盤
退出循環(huán)或使程序結(jié)束這種調(diào)用是很方便實(shí)用的。
LOP:ADDAL,BL
MOVAH,OBH
INT21H;鍵掃描:無鍵入AL=00H;有鍵入AL=FFH
ADDAL,01H
JNZLOP;有鍵入,則退出循環(huán)
RET
第4章4.4.3R0MBI0S中斷調(diào)用
BIOS(BasicInut/OutputSystem,基本輸入/輸出系
統(tǒng))是固化在只讀存儲(chǔ)器ROM中的一系列輸入/輸出服務(wù)程
序,它存放于內(nèi)存的高地址區(qū)域內(nèi),處理系統(tǒng)中的全部?jī)?nèi)
部中斷,還提供了用戶常用的I/O接口的控制驅(qū)動(dòng)程序,
例如鍵盤、顯示器、磁盤和打印機(jī)等。BIOS采用模塊化
結(jié)構(gòu),每個(gè)功能模塊的入口地址都存于中斷向量表中。中
斷調(diào)用通過軟中斷指令I(lǐng)NTn實(shí)現(xiàn),n為中斷類型碼。
4.4.3ROMBIOS中斷調(diào)用
ROMBIOS的調(diào)用方法與DOS系統(tǒng)功能調(diào)用方法相類似。
①置功能號(hào)一>AH
②置入口參數(shù)。
③執(zhí)行INTn。
④分析出口參數(shù)及狀態(tài)。
4.4.3ROMBIOS中斷調(diào)用
使用ROMBIOS中斷調(diào)用的優(yōu)越性在于:
(1)雖然BIOS中斷調(diào)用程序比調(diào)用DOS中斷程序要復(fù)雜,但
運(yùn)行速度快。,功能更強(qiáng)。
(2)DOS的中斷功能僅在DOS環(huán)境下適用,而ROMBIOS的
功能調(diào)用不受任何操作系統(tǒng)的約束。
(3)某些功能僅ROMBIOS具有。
4.4.3ROMBIOS中斷調(diào)用
1.鍵盤輸入(類型碼為16H的中斷調(diào)用)
一中斷調(diào)用有三個(gè)功能,功能號(hào)為0;1、2,且必須把
功能號(hào)放在AH中。
..................................
入口參數(shù)為AH=O,INT16H調(diào)用,從鍵盤讀入字符,并
且放在AL寄存器中。執(zhí)行時(shí),等待鍵盤輸入,一旦輸
入,字符的ASCH碼放入AL中。
若AL=O,則AH為鍵入的擴(kuò)展碼。
格式:MOVAH,OH
INT16H
4.4.3ROMBIOS中斷調(diào)用
1.鍵盤輸入(類型碼為16H的中斷調(diào)用)
(2)功能號(hào)01H調(diào)用
功能是用來查詢鍵盤緩沖區(qū),對(duì)鍵盤掃描,但不等待,
若有按鍵操作(即鍵盤緩沖區(qū)不空),則ZF=0,AL中存
放的是鍵入的ASCH碼,AH中存放鍵入字符的擴(kuò)展碼。
若無鍵按下,則標(biāo)志位ZF=1。
格式:MOVAH,01H
INT16H
□4.4.3ROMBIOS中斷調(diào)用
□1.鍵盤輸入(類型碼為16H的中斷調(diào)用)
(3)功能號(hào)02H調(diào)用
功能是檢查鍵盤上各特殊功能鍵的狀態(tài)。執(zhí)行后,各種
特殊功能鍵的狀態(tài)放入AL寄存器中。
格式:MOVAH,02H
INT16H
AL
□4.4.3ROMBIOS中斷調(diào)用
□1.鍵盤輸入(類型碼為16H的中斷調(diào)用)
例如程序段
MOVAH,02H
INT16H
ANDAL,00000100B;檢查Ctlr鍵是否按下
JNZCtrl-ON
Ctrl-ON:........
□4.4.3ROMBIOS中斷調(diào)用
□2.打印機(jī)輸出(INT17H)
:吊輸i商看三個(gè),能,,能號(hào)茄、1、2
□?.....
(1)0號(hào)功能
入口參數(shù)為AL中放入字符ASCII碼,,DX中放打印機(jī)(0-2)。
MOVAL,'A'
MOVDX,01H
MOVAH,0
INT17H
操作功能是打印一個(gè)字符,且返回打印機(jī)的狀態(tài)到AH中。
□第4重4.4.3ROMBIOS中斷調(diào)用
□2.打印機(jī)輸出(INT17H)
□打印機(jī)的狀態(tài)字意義如下:
D7=1打印機(jī)處于“忙“狀態(tài)。打印機(jī)目前正在打印或正在接
□收數(shù)據(jù)等
D6=1打印機(jī)已接收數(shù)據(jù),通知CPU可發(fā)送下一個(gè)數(shù)據(jù)
D5=1打印紙空
D4=1打印機(jī)已聯(lián)機(jī)
D3=1表示打印機(jī)出錯(cuò)
D2?D1未用,無意義
DO表示打印機(jī)超時(shí)錯(cuò)。打印機(jī)發(fā)回忙信號(hào)過長(zhǎng),CPU不
能再給它發(fā)送字符
第4章4.4.3ROMBIOS中斷調(diào)用
2?打印機(jī)輸出(INT17H)
(2)1號(hào)功能
MOVAH01H
INT17H
初始化打印機(jī),并返回打印機(jī)狀態(tài)到AH中。
第4章4.4.3ROMBIOS中斷調(diào)用
2.打印機(jī)輸出(INT17H)
(3)2號(hào)功能
MOVAH,02H
INT17H
返回打印機(jī)狀態(tài)到AH中。
第4章4.4.3ROMBIOS中斷調(diào)用
3.CRT顯示器顯示ROMBIOSINT10H中斷調(diào)用
用以控制顯示器顯示,功能強(qiáng)大。主要包括設(shè)
置顯示方式,設(shè)置CRT屏幕光標(biāo)的大小與位置,
顯示字符及圖形,設(shè)置調(diào)色板等。但用匯編語言
寫程序過長(zhǎng),一般采用高級(jí)語言。
4.5匯編語言程序設(shè)計(jì)
軟件程序設(shè)計(jì)采用結(jié)構(gòu)化程序設(shè)計(jì)方法,這種設(shè)計(jì)方法
是指程序的設(shè)計(jì)、編寫和測(cè)試按一定規(guī)范的組織形式來進(jìn)行
而不能由編程者隨心所欲,從而滿足高質(zhì)量的標(biāo)準(zhǔn)化軟件程
序的要求。
□第4氫4.5匯編語言程序設(shè)計(jì)
□
□
一個(gè)高質(zhì)量的軟件程序應(yīng)具備的條件:
□
①運(yùn)行結(jié)果正確。
②具有良好的結(jié)構(gòu),清晰易讀。
③執(zhí)行速度快。
④占用內(nèi)存空間應(yīng)壓縮到合理的范圍之內(nèi)。
第4章4.5匯編語言程序設(shè)計(jì)
結(jié)構(gòu)化程序必須滿足以下要求:
(1)采用模塊化結(jié)構(gòu):
每一個(gè)模塊都是由三種基本結(jié)構(gòu)組成,并且只有一個(gè)入口和
一個(gè)出口,不含死循環(huán)和死語句。
三種結(jié)構(gòu)是順序結(jié)構(gòu)、條件分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
(2)可以有控制地使用無條件轉(zhuǎn)移語句。程序要加以必要的注釋,
以增加程序的可讀性。
(3)要采用自頂向下、逐步細(xì)化和逐步求精的設(shè)計(jì)方法開發(fā)程序,
能方便地對(duì)源程序模塊進(jìn)行組裝及調(diào)試。
4.5.1匯編語言源程序的框架結(jié)構(gòu)
□NAME模塊名(可省略)
□EQU符號(hào)定義區(qū)(可依據(jù)需要而定)
EXTRN外部符號(hào)名說明(依實(shí)際需要而定)
PUBLIC公共符號(hào)名說明(依實(shí)際需要而定)
4.5.1匯編語言源程序的框架結(jié)構(gòu)
??
數(shù)據(jù)段名(如DATA)SEGMENT;參數(shù)(依據(jù)實(shí)際要求而定,可省略)
變量定義
預(yù)置存儲(chǔ)空間
數(shù)據(jù)段名(如DATA)ENDS
堆棧段名(如STACK)SEGMENT參數(shù)(依實(shí)際要求而定)
預(yù)置堆找空間
堆棧段名(如STACK)ENDS
□4.5.1匯編語言源程序的框架結(jié)構(gòu)
代碼段名(如CODE)SEGMENT參數(shù)(依實(shí)際需要而定)
□ASSUME段寄存器指派
START:MOVAX,DATA;段地址裝填
□MOVDSAX
MOVAX,STACK
□MOVSS,AX
主程序體
MOVAH,4CH
INT21H
過程名1PROC類型說明
過程體1
過程名1ENDP
過程名2PROC類型說明
過程體2
過程名2ENDP
代碼段名(如CODE)ENDS
ENDSTART
NAME模塊名(可省略)
EQU符號(hào)定義區(qū)(可依據(jù)需要而定)
EXTRN外部符號(hào)名說明(依實(shí)際需要而定)
PUBLIC公共符號(hào)名說明(依實(shí)際需要而定)
數(shù)據(jù)段名(如DATA)SEGMENT;參數(shù)(依據(jù)實(shí)際要求而定,可省略)
變量定義
預(yù)置存儲(chǔ)空間
數(shù)據(jù)段名(如DATA)ENDS
堆棧段名(如STACK)SEGMENT參數(shù)(依實(shí)際要求而定)
預(yù)置堆找空間
堆棧段名(如STACK)ENDS
代碼段名(如CODE)SEGMENT參數(shù)(依實(shí)際需要而定)
ASSUME段寄存器指派
START:MOVAX,DATA;段地址裝填
MOVDSAX
MOVAX,STACK
MOVSS,AX
主程序體
MOVAH,4CH
INT21H
過程名1PROC類型說明
過程體1
過程名1ENDP
過程名2PROC類型說明
過程體2
過程名2ENDP
代碼段名(如CODE)ENDS
ENDSTART
第4章4.5匯編語言程序設(shè)計(jì)
【例4.51多字節(jié)壓縮BCD碼加法程序。變量FIRST和
SECOND各存放著4個(gè)字節(jié)的壓縮BCD碼,求二者相加
之和,放入SUM開始的存儲(chǔ)單元(假定和仍為4個(gè)字節(jié)
的BCD碼),編程實(shí)現(xiàn)。
多,制4.5匯編語言程序設(shè)計(jì)
I-12?..........???
■NAMEMADD
口DATASEGMENT
■
FIRSTDB11H,22H,33H,44H;壓縮BCD碼被加數(shù)
SECONDDB55H,66H,77H,33H;壓縮BCD碼加數(shù)
SUMDB20DUP(?);和存放單元
DATAENDS
STACKSEGMENTSTACK'STACK'
SATDB100DUP(?);預(yù)置堆找區(qū)空間
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMCS:CODE,DS:DATA,SS:STACK,ES:
4.5.2程序設(shè)計(jì)基本步驟
對(duì)于給定的課題進(jìn)行程序設(shè)4,”一般應(yīng)按下述步驟進(jìn)行
■
■1.分析課題
2,確定算法
■
3.畫出流程圖
4,存儲(chǔ)器資源分配
5,編寫程序
■
6.上機(jī)調(diào)試
■
■
第
4.5.3匯編語言程序設(shè)計(jì)應(yīng)注意的問題
□
□
1.程序模塊化。
□
2?程序正確完整,具有容錯(cuò)功能。
□
3?算法的可靠性和合理性。
4.實(shí)時(shí)性要求高的工程控制程序,要充分考慮軟件執(zhí)行速度。
??
第
4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
□
□
基本程序結(jié)構(gòu)有三種:
□
順序結(jié)構(gòu)、分支選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。
■
□
任何一個(gè)復(fù)雜問題的設(shè)計(jì),基本上都可
以由上述三種基本邏輯結(jié)構(gòu)綜合而成。
第4章4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
一、順序結(jié)構(gòu)與簡(jiǎn)單程序設(shè)計(jì)
順序結(jié)構(gòu)程序又稱簡(jiǎn)單程序,
這種程序是按指令的順序執(zhí)行的,
指令指針I(yè)P內(nèi)容為線性增加,流
程圖由一個(gè)一個(gè)的處理框構(gòu)成,
中間無分支、無轉(zhuǎn)移、無循環(huán),
程序本身邏輯結(jié)構(gòu)簡(jiǎn)單。應(yīng)用的
指令多為傳送類、運(yùn)算類和位移
類指令。
.
4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
【例4.6]編寫計(jì)算Z=(X*X-3*Y)/2的程序。設(shè)X、Y均為單字節(jié)整
數(shù),結(jié)果Z仍為1個(gè)字節(jié)。
???????????????????????????____
開始
計(jì)算x*x
計(jì)算3*Y
計(jì)算(X*X-3*Y)12
結(jié)束
第4氫4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
????????????,
DATASEGMENT
XDB25
YDB32
.zDW?
?DATAENDS
□4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
CODESEGMENT
□ASSUMECS:CODE,DS:DATA
START:MOVAX,DATA;初始化
□MOVDS,AX
MOVAL,X
□MULAL;AX=X*X
MOVBX,0
MOVBL,Y
ADDBL,BL
ADCBH,0
ADDBL,Y;3*Y
SUBAX,BX;X2-3Y.
SHRAX,1;(X2-3Y)/2.
MOVZ,AX;保存結(jié)果!
MOVAH,4CH
INT21H;返;回DOS
CODEENDS
ENDSTART
第4章4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
[例4.7]在存儲(chǔ)變量DAT1開始有兩個(gè)字節(jié)的
無符號(hào)加數(shù),在存儲(chǔ)變量DAT2開始有兩個(gè)字DAT15EH
節(jié)的無符號(hào)被加數(shù),求兩個(gè)數(shù)和放入DAT3單
89H
元中,設(shè)二進(jìn)制數(shù)在存儲(chǔ)單元存放的順序,
低字節(jié)數(shù)放在低地址上,高字節(jié)數(shù)放在高地
址上。DAT240H
OAH
分析:多字節(jié)相加,應(yīng)先從低字節(jié)開始相加,
然后高字節(jié)相加。
DAT3
□4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
□
□
□
CODESEGMENT
ASSUMEOS:CODE,DS:DATA
START:MOVAX,DATA
MOVDS,AX
MOVSL0;位移量初值
MOVAL,DAT1[SI];取被加數(shù)
ADDAL,DAT2[SI];二數(shù)相加
MOVDAT3[SI],AL
INCSI;調(diào)整位移量
MOVAL,DAT1[SI];取被加數(shù)高位
ADCAL,DAT2[SI];帶進(jìn)位加
MOVDAT3[SI],AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
第4章4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
0
TABL
2.查表程序1
求平方值的程序如下。
【例4.8]內(nèi)存中自TABL開9
始的16個(gè)單元中連續(xù)存放自16
然數(shù)。?15的平方值,任意給
定一個(gè)數(shù)X(其值O=vX=<15)
在XD單元,求得平方值放入
YD單元中。255
XD
YD
第4邕454程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
NAMEMYPROG
DATASEGMENT
TABLDB0,1,4,9,16,25,36,49;定義平方表
DB64,81,100,121,144,169,225
XDDB?
YDDB?
DATAENDS
STACKSEGMENTSTACK'STACK'
STADB50DUP(?)
TOPEQULENGTHSTA
STACKENDS
□4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
CODESEGMENT
□TABL
ASSUMECS:CODE,DS:DATA,SS:STACK
START:MOVAX,DATA
MOVDS,AX
MOVAX,STACK
MOVSS,AX
MOVSP,TOP
MOVBX,OFFSETTABL;置平方表地址指針
N“CY7A”A
MOVAL,XD;給定單元中的X數(shù)
XLAT
,
MOVYDAL;取平方值到AL中
;存放平方值'
XD
MOVAH,4CH;返回DOS'
INT21HYD
CODEENDS
ENDSTART
□
第4章4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
二、分支選擇結(jié)構(gòu)程序(簡(jiǎn)稱分支程序)
□在實(shí)際的程序設(shè)計(jì)中,常常會(huì)遇到各種條件判斷和比較
□操作:“相等”或“不相等”;“大于”或“小于”;“滿足
條件”或不滿足條件等。依據(jù)給定的條件進(jìn)行判斷作出不同
的處理,執(zhí)行不同的程序段。每一種處理程序稱為一個(gè)分
支,一次判斷產(chǎn)生兩個(gè)分支,多次判斷產(chǎn)生多個(gè)分支,這
樣就構(gòu)成了分支結(jié)構(gòu)程序。
4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
二、分支選擇結(jié)構(gòu)程序(簡(jiǎn)稱分支程序)
IF....THEN..…ELSE語句CASE語句
□
0
第4章4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
二、分支選擇結(jié)構(gòu)程序(簡(jiǎn)稱分支程序)
□
分支程序的兩個(gè)要素:
□(1)判斷:依據(jù)運(yùn)算結(jié)果影響狀態(tài)標(biāo)志位,使用條件轉(zhuǎn)移指
□令使程序產(chǎn)生分支,當(dāng)條件滿足時(shí),改變程序走向發(fā)生轉(zhuǎn)
移,否則按指令順序執(zhí)行。但是特別注意,條件判斷前,
一定要進(jìn)行必要的運(yùn)算,用來影響標(biāo)志寄存器的標(biāo)志位,
標(biāo)志位反映了運(yùn)算的結(jié)果和特征。
(2)轉(zhuǎn)移:主要由條件轉(zhuǎn)移指令來實(shí)現(xiàn)(也可以應(yīng)用無條件轉(zhuǎn)
移指令)。
4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
二、分支選擇結(jié)構(gòu)程序(簡(jiǎn)稱分支程序)
????????????????????????????????????????
【例4.9]比較存儲(chǔ)單元中的兩個(gè)8位無符號(hào)數(shù),大者
放在AL寄存器中。已知存儲(chǔ)變量的偏移地址已經(jīng)放在
BX中,其對(duì)應(yīng)的程序段如下:
4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
二、分支選擇結(jié)構(gòu)程序(簡(jiǎn)稱分支程序)
MOVAL,[BX]
INCBX
CMPAL,[BX]
JAEBIGER;前元素>=后元素,轉(zhuǎn)
EXCH:MOVAL,[BX];否則,取后元素到AL
BIGER:...............
第4章4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
二、分支選擇結(jié)構(gòu)程序(簡(jiǎn)稱分支程序)
[例4.10]數(shù)據(jù)區(qū)中進(jìn)行數(shù)據(jù)塊傳送,源數(shù)據(jù)塊BL0CK1,目
的數(shù)據(jù)塊BL0CK2,但源數(shù)據(jù)塊和目的數(shù)據(jù)塊有地址重疊,
在傳送前必須進(jìn)行判別,決定使用增址傳送,還是減址傳
送,利用串傳送指令編寫程序。
第.
4章
一
□_】
LBL0CK2
□_LOW
□_
>*BLOCK1
□_
ABLOCK2
HIGH
BL0CK2BLOCK1
第4皂
□
?
?
□?DATASEGMENT
?;數(shù)據(jù)區(qū)
?STRGDB1000DUP(?)
□?BLOKIEQUSTRG+5;源塊首地址
??
BLOIK2EQUSTRG+10;目的塊首址
BLENGEQU100;數(shù)據(jù)塊長(zhǎng)度
DATAENDS
100字節(jié)
第4皂
□
?
?
□?DATASEGMENT
?;數(shù)據(jù)區(qū)
?STRGDB1000DUP(?)
□?BLOKIEQUSTRG+10;源塊首地址
??
BLOIK2EQUSTRG+5;目的塊首址
BLENGEQU100;數(shù)據(jù)塊長(zhǎng)度
DATAENDS
100字節(jié)
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVCX,BLENG;設(shè)置計(jì)數(shù)器
MOVSLOFFSETBLOKI;指向源塊
MOVDI,OFFSETBLOCK2;指向目的塊
CLD;DF=0增址方式
PUSHSI
ADDSI,BLENG-1;得源塊末地址
CMPSI,DI;源數(shù)據(jù)塊末地址與目的數(shù)據(jù)塊的起始地址比較
POPSI;恢復(fù)源數(shù)據(jù)塊地起始地址到SI
JBGO;小于則轉(zhuǎn)移
STD;減址傳送
ADDSLBLENG-1;SI指向源數(shù)據(jù)塊末地址
ADDDI,BLENG-1;DI指向目的數(shù)據(jù)塊的末地址
GO:REPMOVSB
MnvAH.ACH
CODESEGMENT
ASSUMECS:CODE,DS:DATA,ES:DATA
START:MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVCX,BLENG;設(shè)置計(jì)數(shù)器
MOVSLOFFSETBLOKI;指向源塊
MOVDI,OFFSETBLOCK2;指向目的塊
CLD;DF=0增址方式
PUSHSI
ADDSLBLENG-1;得源塊末地址
CMPSI,DI;源數(shù)據(jù)塊末地址與目的數(shù)據(jù)塊的起始地址比較
POPSI;恢復(fù)源數(shù)據(jù)塊地起始地址到SI
JBGO;小于則轉(zhuǎn)移
STD;減址傳送
ADDSLBLENG-1;SI指向源數(shù)據(jù)塊末地址
Annni.RIFNH.I.m格白曰的和提母的未世出卜
第4邕454程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
二、分支選擇結(jié)構(gòu)程序(簡(jiǎn)稱分支程序)
□[例4.11]在以BLOCK開始的存儲(chǔ)區(qū)域內(nèi)存放著100個(gè)字
□節(jié)的8位帶符號(hào)數(shù),在該存儲(chǔ)區(qū)域內(nèi)找出其中最大的數(shù)和
最小的數(shù),分別放在MAX和MIN單元中,編程實(shí)現(xiàn)。
□分析:由于100個(gè)8位帶符號(hào)數(shù),從第一個(gè)數(shù)開始逐個(gè)比較,
搜索其中的大數(shù)和小數(shù),因?yàn)槠渲凶止?jié)長(zhǎng)度已知,可以用
個(gè)數(shù)作為循環(huán)控制的計(jì)數(shù)器。那么,每次比較得到一個(gè)大
數(shù)和小數(shù),循環(huán)完畢,即可找到最大數(shù)和最小數(shù)。
AL:放大數(shù)
BL:放小數(shù)
開始
□
SI―數(shù)據(jù)偏移地址,CX—循環(huán)次數(shù)
MAX-AL
□AL—[SI],BL—[SI]
MIN—BL
□SI<-SI+1
結(jié)束
cx=o?
4?.5?.?4?程?序??的??基■本■■結(jié)?■構(gòu)?'與??基??本?程??序??設(shè)?計(jì)??
□NAMEFOUND
DATASEGMENT
□BUFDB-2,+5...,-128;定義100個(gè)字節(jié)數(shù)據(jù)
COUNEQU$-BUF;數(shù)據(jù)個(gè)數(shù)
MAXDB?;放最大值的存儲(chǔ)單元
MINDB?;放最小值的存儲(chǔ)單元
DATAENDS;數(shù)據(jù)段結(jié)束
STACKSEGMENTSTACK;堆棧區(qū)定義
STRDB64HDUP(?);堆棧區(qū)占64個(gè)單元
STACKENDS
4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
MYCODESEGMENT;代碼段
■ASSUMEDS:MYCODE,DS:DATA,SS:STACK
■
START:MOVAX,DATA
MOVDS,AX;DS賦初值
MOVAX,STACK
■
MOVSS,AX;ss賦初值
MOVSP,LENGTHSTR;設(shè)堆找指針
MOVCX,COUN-1;實(shí)際比較次數(shù),
□MOVSI,OFFSETBUF;建立地址指針
□MOVAL,[SI];取第一個(gè)數(shù)放AL中,大數(shù)放AL內(nèi)
MOVBL,[SI];取第一個(gè)數(shù)放BL中,小數(shù)放BL內(nèi)
INCSI
LOP:CMPALJSI]
JGENEXT1小!_>=下一個(gè)數(shù),不交換?
MOVAL,[SI];否則交換,大數(shù)在AL中
NEXT1:CMPBL,[SI];最小數(shù)與下一單元數(shù)比較
JLNEXT;最小值比較小,BLv二下一個(gè)數(shù),不交換
MOVBL,[SI]
NEXT:INCSI
LOOPLOP;CX—CX?1,CX#O轉(zhuǎn)LOP
MOVMAX,AL;存大數(shù)到MAX
MOVMIN,BL;存小數(shù)到MIN
第4
4.5.4程序的基本結(jié)構(gòu)與基本程序設(shè)計(jì)
1
2.三路分支結(jié)構(gòu)程序
[例4.12]符號(hào)處理函數(shù)。有一個(gè)符號(hào)函數(shù).
1(X>0)
y=0
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中學(xué)宿舍管理制度
- 臨時(shí)麻醉管理制度
- 2026年高級(jí)IT項(xiàng)目管理專業(yè)試題庫及答案
- 2026年音樂創(chuàng)作與音樂理論專業(yè)題庫
- 輸尿管支架管拔除同意書
- 廣東省肇慶市高要區(qū)2025-2026學(xué)年九年級(jí)上學(xué)期1月期末化學(xué)試題(含答案)
- 2025年陜西省初中學(xué)業(yè)水平考試物理試卷(副題)(含答案)
- 2025年濰坊食品科技職業(yè)學(xué)院馬克思主義基本原理概論期末考試模擬題帶答案解析(必刷)
- 2024年綏江縣幼兒園教師招教考試備考題庫附答案解析
- 2025年連云港職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫附答案解析
- 物流金融管理培訓(xùn)課件
- 教學(xué)管理系統(tǒng)項(xiàng)目開發(fā)計(jì)劃大全五
- 微專題:突破語病題+2026屆高考語文二輪復(fù)習(xí)
- 電梯線路知識(shí)培訓(xùn)內(nèi)容課件
- 2025轉(zhuǎn)讓股權(quán)合同 轉(zhuǎn)讓股權(quán)合同范本
- 羽毛球裁判二級(jí)考試題庫及答案
- 醫(yī)院安全教育與培訓(xùn)課件
- 鋰離子電池用再生黑粉編制說明
- (正式版)DB61∕T 5033-2022 《居住建筑節(jié)能設(shè)計(jì)標(biāo)準(zhǔn)》
- 公路工程質(zhì)量風(fēng)險(xiǎn)識(shí)別及控制措施
- 2025年育嬰師三級(jí)試題及答案
評(píng)論
0/150
提交評(píng)論