版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
復(fù)習(xí)1、掌握基本指令:MOVS指令用法和應(yīng)用范圍及對(duì)標(biāo)志位的影響。2、基本前綴:REP、REPE、REPNE、LOOP。
1時(shí)間:2011—9月26日(第六周周一)1、為什么要學(xué)習(xí)匯編語(yǔ)言。2、掌握匯編語(yǔ)言源程序的格式。3、掌握匯編語(yǔ)言中偽指令的定義方法。4、了解“$”、算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符。2第五章:匯編語(yǔ)言程序設(shè)計(jì)§5-1匯編語(yǔ)言為什么要用匯編語(yǔ)言寫程序?1、非常接近機(jī)器語(yǔ)言。2、機(jī)器自檢、系統(tǒng)初始化、I/O操作仍由匯編語(yǔ)言完成。3、效率高。一、匯編語(yǔ)言的定義與格式1、匯編語(yǔ)言:助記符、符號(hào)地址、字母等組成。面向機(jī)器的程序設(shè)計(jì)語(yǔ)言。用一組字母、數(shù)字和符號(hào)來(lái)代替二進(jìn)制編碼。匯編語(yǔ)言用助記符來(lái)表示指令的操作碼和操作數(shù)。用標(biāo)號(hào)或符號(hào)代表地址、常量或變量。3用高級(jí)語(yǔ)言編寫的程序編譯或解釋程序目標(biāo)程序用匯編語(yǔ)言編寫的程序匯編程序目標(biāo)程序匯編語(yǔ)言源程序
匯編程序
譯碼機(jī)器碼列表文件把匯編語(yǔ)言程序翻譯成機(jī)器語(yǔ)言程序的過(guò)程稱為匯編。用匯編語(yǔ)言編寫的程序,叫匯編語(yǔ)言源程序,或簡(jiǎn)稱源程序4
MOVCX,5
MOV SI,OFFSETDAT1
MOV DI,OFFSETDAT2
CLC
AGAIN:MOV AL,[SI]
ADC [DI],AL
INC SI
INCDI
DEC CX
JNZ AGAIN
HLT編制兩個(gè)5字節(jié)十六進(jìn)制數(shù)相加,分別存放在DAT1和DAT2單元,結(jié)果送回DAT2單元52、匯編語(yǔ)言源程序的格式:以兩個(gè)5字節(jié)十六進(jìn)制數(shù)相加為例
DATA SEGMENT
DAT1 DB 0F8H,60H,0ACH,74H,3BH ;被加數(shù)
DAT2 DB 00H,36H,9EH,0D5H,20H ;加數(shù)
DATA ENDS
CODE SEGMENT
ASSUMECS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,5
MOV SI,OFFSETDAT1
MOV DI,OFFSETDAT2
CLC
AGAIN: MOV AL,[SI]
ADC [DI],AL
INC SI
INCDI
DEC CX
JNZ AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START數(shù)據(jù)段定義代碼段定義返回DOS匯編語(yǔ)言源程序通常有幾個(gè)段構(gòu)成,每個(gè)段以SEGMENT語(yǔ)句開(kāi)始,以ENDS語(yǔ)句結(jié)束,并分別有一個(gè)段名。第一段是數(shù)據(jù)段,段名DATA,用來(lái)定義變量,存放原始數(shù)據(jù)和運(yùn)算結(jié)果。第二段為代碼段,段名為CODE,用來(lái)安排執(zhí)行代碼,是用戶編程實(shí)現(xiàn)各項(xiàng)功能的主要部分。整個(gè)源程序必須用END語(yǔ)句結(jié)束,它通知匯編程序停止匯編,END后面的標(biāo)號(hào)START指明該程序執(zhí)行的啟動(dòng)地址。源程序中各段的名字可以任選,段的數(shù)目可以根據(jù)需要確定.如果用到堆棧段和附加段,在段的定義的時(shí)候也要定義出來(lái)。6DATA SEGMENT ;定義數(shù)據(jù)段 DATA1DB0F8H,60H,0ACH,74H,3BH ;被加數(shù) DATA2DB0C1H,36H,9EH,0D5H,20H ;加數(shù)DATA ENDS ;數(shù)據(jù)段結(jié)束CODESEGMENT ;定義代碼段 ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX ;初始化DS MOV CX,5 ;循環(huán)次數(shù)送CX MOV SI,0 ;置SI初值為0 CLC ;清CF標(biāo)志LOOPER: MOV AL,DATA2[SI] ;取一個(gè)字節(jié)加數(shù) ADC DATA1[SI],AL ;與被加數(shù)相加
INC SI ;SI加1 DEC CX ;CX減1 JNZ LOOPER ;若不等于0,轉(zhuǎn)LOOPER
7
MOV AH,4CH INT 21H ;返回DOSCODE ENDS ;代碼段結(jié)束 END START ;源程序結(jié)束
8下面是一個(gè)源程序模塊的典型段結(jié)構(gòu)形式:STACKSEGMENT ;定義堆棧段
STACKENDS ;堆棧段結(jié)束…DATASEGMENT ;定義數(shù)據(jù)段
DATAENDS ;數(shù)據(jù)段結(jié)束ESEGSEGMENT ;定義附加段
ESEGENDS ;附加段結(jié)束CODESEGMENT;定義代碼段ASSUMECS:CODE,DS:DATA,SS:STACK,ES:ESEG;段的分配START: ;指令性語(yǔ)句開(kāi)始(我們第四章學(xué)習(xí)編寫的程序)MOV AH,4CH
INT 21H;返回DOSCODEENDS ;代碼段結(jié)束ENDSTART ;整個(gè)程序結(jié)束………93、兩類匯編語(yǔ)句(1)指令性語(yǔ)句:能產(chǎn)生目標(biāo)代碼,CPU可以執(zhí)行的能完成特定功能的語(yǔ)句。(2)指示性語(yǔ)句:不產(chǎn)生目標(biāo)代碼,僅在匯編過(guò)程中告訴匯編程序應(yīng)如何匯編。10指令性語(yǔ)句標(biāo)號(hào):
指令助記符操作數(shù),操作數(shù);注釋格式:指示性語(yǔ)句(偽指令語(yǔ)句)格式:名字偽指令指示符操作數(shù),操作數(shù);注釋指令語(yǔ)句中,標(biāo)號(hào)就是指令的符號(hào)地址,后面必須有冒號(hào),可以是任選的。指示性語(yǔ)句中,名字與指令的地址無(wú)關(guān),后面沒(méi)有冒號(hào),可能是強(qiáng)制的、任選的或者禁止的。11
偽指令語(yǔ)句沒(méi)有對(duì)應(yīng)的機(jī)器代碼,并不像指令語(yǔ)句那樣由CPU來(lái)執(zhí)行,它是由匯編程序?qū)υ闯绦騾R編期間進(jìn)行處理的。主要完成變量定義、內(nèi)存分配、指示程序開(kāi)始和結(jié)束等。數(shù)據(jù)定義語(yǔ)句:DB、DW、DD標(biāo)號(hào)賦值語(yǔ)句:EQU、=段定義語(yǔ)句:SEGMENT…ENDS段分配語(yǔ)句:ASSUME程序開(kāi)始、結(jié)束語(yǔ)句:START、END起始指令(用于定義偏移地址):ORG強(qiáng)制轉(zhuǎn)換:PTR§3-2偽指令12一、數(shù)據(jù)定義偽指令格式:變量名助記符操作數(shù)…操作數(shù)(符號(hào)地址)功能:定義數(shù)據(jù)存儲(chǔ)區(qū),其類型由所使用的數(shù)據(jù)定義偽指令指定。1、DB:定義字節(jié)。格式:變量名DB表達(dá)式
2、DW:定義字。格式:變量名DW表達(dá)式
3、DD:定義雙字。格式:變量名DD表達(dá)式
演示演示演示數(shù)據(jù)都是以16進(jìn)制數(shù)的形式存放,并且?guī)Х?hào)數(shù)都按照補(bǔ)碼的形式存儲(chǔ)。字和雙字存放的時(shí)候保持低位字節(jié)在低位地址單元,高位字節(jié)在高位地址單元。因此:DW的演示應(yīng)該修改為54H13H
不區(qū)分大小寫,可以用db、dw、dd131、在數(shù)據(jù)定義語(yǔ)句中,操作數(shù)可以是常量或者常量表達(dá)式例1XDB25,42,14H,0,-30YDW123H,8*10,3A60HZDD3750H,0FFADH,1525=19H42=2AH[-30]補(bǔ)碼=0E2H([+30]補(bǔ)碼=00011110B,[-30]補(bǔ)碼=11100001B+1=11100010B=0E2H)123H=0123H8*10=80=50H=0050H3750H=00003750H0FFADH=0000FFADH15=0FH=0000000FHXYZ19H2AH14H00H0E2H23H01H50H00H60H3AH50H37H00H0FFH0ADH0FH00H00H00H00H00H00H假如是XDD-30呢??負(fù)數(shù)擴(kuò)展,擴(kuò)展符號(hào)位=0FFFFFFE2H142、在數(shù)據(jù)定義語(yǔ)句中,偽指令可用操作數(shù)“?”。作用:分配并保留存儲(chǔ)空間,但不存入確定數(shù)據(jù)例ADB5,?DB?,?,10BDW?,15AB05H-----0AH00H0FH-3、在數(shù)據(jù)定義語(yǔ)句中,復(fù)制操作數(shù)nDUP()功能:復(fù)制()的內(nèi)容n次例Y1DB2DUP(11,?,15)Y2DW3DUP(0525H,?)Y1是以DUP后括號(hào)內(nèi)容重復(fù)2次Y2是以DUP后括號(hào)內(nèi)容重復(fù)3次Y1Y20BH0FH-0BH0FH25H05H--25H05H--25H05H--15POWERS4、在數(shù)據(jù)定義語(yǔ)句中,可以定義一個(gè)表或者一個(gè)字符串例定義1~5的平方值表POWERSDB1,4,9,16,25例定義一個(gè)字符串‘Good’STRINGDB‘Good’G=47Ho=6FHo=6FHd=64HSTRING01H04H09H10H19H47H6FH6FH64H字符串編譯成對(duì)應(yīng)的ASCII碼,為一個(gè)字節(jié),串定義字符串2個(gè)以上必須用DB一種是分別定義,用逗號(hào)格開(kāi);另一種是字符串前后加單引號(hào)。161、EQU等值定義語(yǔ)句(只允許定義一次)語(yǔ)句格式符號(hào)名
EQU
表達(dá)式例:PT1EQU124(PT1=124)用PT1代替124,把124這個(gè)數(shù)值賦予PT1但只能定義一次二、符號(hào)定義語(yǔ)句2、“=”(可以重復(fù)定義)語(yǔ)句格式變量名或標(biāo)號(hào)
=
表達(dá)式功能
等號(hào)偽指令的功能與EQU基本相同,只是使用等號(hào)“=”定義過(guò)的符號(hào)可以被重新定義,使其具有新的值。例:PT1=15PT1=18;PT1被重新定義
3、PURGE取消EQU定義后可以重新定義PT1EQU124PURGEPT1PT1EQU345171、段定義偽指令一般格式
段名SEGMENT(段的開(kāi)始)……
段名ENDS(段的開(kāi)始)例:定義段DATADATA SEGMENTDAT1 DB1,2,3,4DATA ENDS段的開(kāi)始和結(jié)束段名要保持一致三、段定義的偽指令2、段的分配ASSUME用來(lái)指明段名和段寄存器DS、ES、CS、SS、的關(guān)系,即段名與哪個(gè)段相對(duì)應(yīng)要指出來(lái)。18例:DATASEGMENT……DATAENDSESTG SEGMENT……ESTG ENDSSTACKSEGMENT……STACKENDSCODESEGMENT ASSUME DS:DATA,ES:ESTG,SS:STACK,CS:CODESTART:MOV AX,DATAMOV DS,AXMOVAX,ESTGMOV ES,AXMOV AX,STACKMOV SS,AX
MOV AX,1234H……MOVAH,4CHINT21H說(shuō)明一個(gè)段,但如何將DATA段首地址(段基址)賦給DS呢將段基址賦給各段而代碼段CS不需要有指令為其定義,由匯編編譯器自動(dòng)生成CODEENDS ENDSTART191、ORG起始指令,用于定義偏移地址例:DATA SEGMENT
ORG 2000HX DW 0725HY DW 1204HDATA ENDS四、常用偽指令若沒(méi)有ORG指令就默認(rèn)為起始于0000H25H07H04H12HXY2000H2002H20
ORG 0000HA0 DW 1000H,1234H,80H,0FFH ORG 1000HA1 DB 1,2,3,0AH,-1,0DFH,9,0 DS:0000001034128000FF00 ……DS:10000102030AFFDF0900212、強(qiáng)制轉(zhuǎn)換PTR變量/標(biāo)號(hào)改變類型例:MOV WORDPTR[BX],10H[BX]=0010H,將10H轉(zhuǎn)化為一個(gè)字M DW1234HMOV AL,BYTEPTRMAL=34H22例:在地址偏移量為3000H的ALF單元開(kāi)始,存放兩個(gè)非壓縮的BCD碼,將其轉(zhuǎn)化為ASCII碼(38H,39H),存放在接下來(lái)的BLF開(kāi)始的單元中。DATASEGMENTORG3000HALFDB08H,09HBLFDB2DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,ALFMOVAL,ALF+1
ORAX,3030HMOVBLF,AXMOVAH,4CHINT21HCODEENDSENDSTART2324從程序看出,匯編語(yǔ)言源程序通常有幾個(gè)段構(gòu)成,每個(gè)段以SEGMENT語(yǔ)句開(kāi)始,以ENDS語(yǔ)句結(jié)束,并分別有一個(gè)段名。第一段是數(shù)據(jù)段,段名DATA,用來(lái)定義變量,存放原始數(shù)據(jù)和運(yùn)算結(jié)果。第二段為代碼段,段名為CODE,用來(lái)安排執(zhí)行代碼,是用戶編程實(shí)現(xiàn)各項(xiàng)功能的主要部分。整個(gè)源程序必須用END語(yǔ)句結(jié)束,它通知匯編程序停止匯編,END后面的標(biāo)號(hào)START指明該程序執(zhí)行的啟動(dòng)地址。源程序中各段的名字可以任選,段的數(shù)目可以根據(jù)需要確定.如果用到堆棧段和附加段,在段的定義的時(shí)候也要定義出來(lái)。1、匯編語(yǔ)言源程序的格式:總結(jié)25DATASEGMENT ;定義數(shù)據(jù)段
DATAENDS ;數(shù)據(jù)段結(jié)束ES
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 提高公司知名度的創(chuàng)新策略計(jì)劃
- 《自動(dòng)控制理論教學(xué)課件》二數(shù)學(xué)模型
- 專題14-讀后續(xù)寫整體思維之布局宏觀結(jié)構(gòu)-2021年高考英語(yǔ)培優(yōu)計(jì)劃之思維型課堂
- 足球隊(duì)球衣合作協(xié)議書范文模板
- 租金調(diào)整協(xié)議書范文范文模板
- 中小學(xué)足球比賽合作協(xié)議書范文
- 無(wú)第三者的離婚協(xié)議書范文
- 拼音樂(lè)園:學(xué)習(xí)與娛樂(lè)-打造趣味化的拼音學(xué)習(xí)體驗(yàn)
- 環(huán)境學(xué)概論(第一章)
- 氧化還原反應(yīng)配平專項(xiàng)訓(xùn)練
- 現(xiàn)金流量表模板(含公式)
- 裝配式建筑設(shè)計(jì)研究與總結(jié)課件
- 脛骨骨折的護(hù)理查房-課件
- 醫(yī)療機(jī)構(gòu)管理制度與人員崗位職責(zé)
- 一年級(jí)上冊(cè)全冊(cè)道德與法治教案全
- 化工工藝與安全工程課件
- 車間安全管理考核細(xì)則范文
- 2023年副主任醫(yī)師(副高)-普通外科學(xué)(副高)考試歷年高頻考點(diǎn)參考題庫(kù)專家版答案
- 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)(第3版)PPT完整全套教學(xué)課件
- 中班健康《身體上的洞洞》課件
- 函數(shù)的單調(diào)性與最值-完整課件
評(píng)論
0/150
提交評(píng)論