版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
復(fù)習(xí)1、掌握基本指令:MOVS指令用法和應(yīng)用范圍及對標(biāo)志位的影響。2、基本前綴:REP、REPE、REPNE、LOOP。
1時間:2011—9月26日(第六周周一)1、為什么要學(xué)習(xí)匯編語言。2、掌握匯編語言源程序的格式。3、掌握匯編語言中偽指令的定義方法。4、了解“$”、算術(shù)運算符、邏輯運算符、關(guān)系運算符。2第五章:匯編語言程序設(shè)計§5-1匯編語言為什么要用匯編語言寫程序?1、非常接近機器語言。2、機器自檢、系統(tǒng)初始化、I/O操作仍由匯編語言完成。3、效率高。一、匯編語言的定義與格式1、匯編語言:助記符、符號地址、字母等組成。面向機器的程序設(shè)計語言。用一組字母、數(shù)字和符號來代替二進制編碼。匯編語言用助記符來表示指令的操作碼和操作數(shù)。用標(biāo)號或符號代表地址、常量或變量。3用高級語言編寫的程序編譯或解釋程序目標(biāo)程序用匯編語言編寫的程序匯編程序目標(biāo)程序匯編語言源程序
匯編程序
譯碼機器碼列表文件把匯編語言程序翻譯成機器語言程序的過程稱為匯編。用匯編語言編寫的程序,叫匯編語言源程序,或簡稱源程序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編制兩個5字節(jié)十六進制數(shù)相加,分別存放在DAT1和DAT2單元,結(jié)果送回DAT2單元52、匯編語言源程序的格式:以兩個5字節(jié)十六進制數(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匯編語言源程序通常有幾個段構(gòu)成,每個段以SEGMENT語句開始,以ENDS語句結(jié)束,并分別有一個段名。第一段是數(shù)據(jù)段,段名DATA,用來定義變量,存放原始數(shù)據(jù)和運算結(jié)果。第二段為代碼段,段名為CODE,用來安排執(zhí)行代碼,是用戶編程實現(xiàn)各項功能的主要部分。整個源程序必須用END語句結(jié)束,它通知匯編程序停止匯編,END后面的標(biāo)號START指明該程序執(zhí)行的啟動地址。源程序中各段的名字可以任選,段的數(shù)目可以根據(jù)需要確定.如果用到堆棧段和附加段,在段的定義的時候也要定義出來。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] ;取一個字節(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下面是一個源程序模塊的典型段結(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: ;指令性語句開始(我們第四章學(xué)習(xí)編寫的程序)MOV AH,4CH
INT 21H;返回DOSCODEENDS ;代碼段結(jié)束ENDSTART ;整個程序結(jié)束………93、兩類匯編語句(1)指令性語句:能產(chǎn)生目標(biāo)代碼,CPU可以執(zhí)行的能完成特定功能的語句。(2)指示性語句:不產(chǎn)生目標(biāo)代碼,僅在匯編過程中告訴匯編程序應(yīng)如何匯編。10指令性語句標(biāo)號:
指令助記符操作數(shù),操作數(shù);注釋格式:指示性語句(偽指令語句)格式:名字偽指令指示符操作數(shù),操作數(shù);注釋指令語句中,標(biāo)號就是指令的符號地址,后面必須有冒號,可以是任選的。指示性語句中,名字與指令的地址無關(guān),后面沒有冒號,可能是強制的、任選的或者禁止的。11
偽指令語句沒有對應(yīng)的機器代碼,并不像指令語句那樣由CPU來執(zhí)行,它是由匯編程序?qū)υ闯绦騾R編期間進行處理的。主要完成變量定義、內(nèi)存分配、指示程序開始和結(jié)束等。數(shù)據(jù)定義語句:DB、DW、DD標(biāo)號賦值語句:EQU、=段定義語句:SEGMENT…ENDS段分配語句:ASSUME程序開始、結(jié)束語句:START、END起始指令(用于定義偏移地址):ORG強制轉(zhuǎn)換:PTR§3-2偽指令12一、數(shù)據(jù)定義偽指令格式:變量名助記符操作數(shù)…操作數(shù)(符號地址)功能:定義數(shù)據(jù)存儲區(qū),其類型由所使用的數(shù)據(jù)定義偽指令指定。1、DB:定義字節(jié)。格式:變量名DB表達(dá)式
2、DW:定義字。格式:變量名DW表達(dá)式
3、DD:定義雙字。格式:變量名DD表達(dá)式
演示演示演示數(shù)據(jù)都是以16進制數(shù)的形式存放,并且?guī)Х枖?shù)都按照補碼的形式存儲。字和雙字存放的時候保持低位字節(jié)在低位地址單元,高位字節(jié)在高位地址單元。因此:DW的演示應(yīng)該修改為54H13H
不區(qū)分大小寫,可以用db、dw、dd131、在數(shù)據(jù)定義語句中,操作數(shù)可以是常量或者常量表達(dá)式例1XDB25,42,14H,0,-30YDW123H,8*10,3A60HZDD3750H,0FFADH,1525=19H42=2AH[-30]補碼=0E2H([+30]補碼=00011110B,[-30]補碼=11100001B+1=11100010B=0E2H)123H=0123H8*10=80=50H=0050H3750H=00003750H0FFADH=0000FFADH15=0FH=0000000FHXYZ19H2AH14H00H0E2H23H01H50H00H60H3AH50H37H00H0FFH0ADH0FH00H00H00H00H00H00H假如是XDD-30呢??負(fù)數(shù)擴展,擴展符號位=0FFFFFFE2H142、在數(shù)據(jù)定義語句中,偽指令可用操作數(shù)“?”。作用:分配并保留存儲空間,但不存入確定數(shù)據(jù)例ADB5,?DB?,?,10BDW?,15AB05H-----0AH00H0FH-3、在數(shù)據(jù)定義語句中,復(fù)制操作數(shù)nDUP()功能:復(fù)制()的內(nèi)容n次例Y1DB2DUP(11,?,15)Y2DW3DUP(0525H,?)Y1是以DUP后括號內(nèi)容重復(fù)2次Y2是以DUP后括號內(nèi)容重復(fù)3次Y1Y20BH0FH-0BH0FH25H05H--25H05H--25H05H--15POWERS4、在數(shù)據(jù)定義語句中,可以定義一個表或者一個字符串例定義1~5的平方值表POWERSDB1,4,9,16,25例定義一個字符串‘Good’STRINGDB‘Good’G=47Ho=6FHo=6FHd=64HSTRING01H04H09H10H19H47H6FH6FH64H字符串編譯成對應(yīng)的ASCII碼,為一個字節(jié),串定義字符串2個以上必須用DB一種是分別定義,用逗號格開;另一種是字符串前后加單引號。161、EQU等值定義語句(只允許定義一次)語句格式符號名
EQU
表達(dá)式例:PT1EQU124(PT1=124)用PT1代替124,把124這個數(shù)值賦予PT1但只能定義一次二、符號定義語句2、“=”(可以重復(fù)定義)語句格式變量名或標(biāo)號
=
表達(dá)式功能
等號偽指令的功能與EQU基本相同,只是使用等號“=”定義過的符號可以被重新定義,使其具有新的值。例:PT1=15PT1=18;PT1被重新定義
3、PURGE取消EQU定義后可以重新定義PT1EQU124PURGEPT1PT1EQU345171、段定義偽指令一般格式
段名SEGMENT(段的開始)……
段名ENDS(段的開始)例:定義段DATADATA SEGMENTDAT1 DB1,2,3,4DATA ENDS段的開始和結(jié)束段名要保持一致三、段定義的偽指令2、段的分配ASSUME用來指明段名和段寄存器DS、ES、CS、SS、的關(guān)系,即段名與哪個段相對應(yīng)要指出來。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說明一個段,但如何將DATA段首地址(段基址)賦給DS呢將段基址賦給各段而代碼段CS不需要有指令為其定義,由匯編編譯器自動生成CODEENDS ENDSTART191、ORG起始指令,用于定義偏移地址例:DATA SEGMENT
ORG 2000HX DW 0725HY DW 1204HDATA ENDS四、常用偽指令若沒有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、強制轉(zhuǎn)換PTR變量/標(biāo)號改變類型例:MOV WORDPTR[BX],10H[BX]=0010H,將10H轉(zhuǎn)化為一個字M DW1234HMOV AL,BYTEPTRMAL=34H22例:在地址偏移量為3000H的ALF單元開始,存放兩個非壓縮的BCD碼,將其轉(zhuǎn)化為ASCII碼(38H,39H),存放在接下來的BLF開始的單元中。DATASEGMENTORG3000HALFDB08H,09HBLFDB2DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,ALFMOVAL,ALF+1
ORAX,3030HMOVBLF,AXMOVAH,4CHINT21HCODEENDSENDSTART2324從程序看出,匯編語言源程序通常有幾個段構(gòu)成,每個段以SEGMENT語句開始,以ENDS語句結(jié)束,并分別有一個段名。第一段是數(shù)據(jù)段,段名DATA,用來定義變量,存放原始數(shù)據(jù)和運算結(jié)果。第二段為代碼段,段名為CODE,用來安排執(zhí)行代碼,是用戶編程實現(xiàn)各項功能的主要部分。整個源程序必須用END語句結(jié)束,它通知匯編程序停止匯編,END后面的標(biāo)號START指明該程序執(zhí)行的啟動地址。源程序中各段的名字可以任選,段的數(shù)目可以根據(jù)需要確定.如果用到堆棧段和附加段,在段的定義的時候也要定義出來。1、匯編語言源程序的格式:總結(jié)25DATASEGMENT ;定義數(shù)據(jù)段
DATAENDS ;數(shù)據(jù)段結(jié)束ES
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 開展安全教育心得體會
- 常見溫馨早安寄語170句
- 我新學(xué)期的學(xué)習(xí)計劃范文合集八篇
- 房地產(chǎn)業(yè)務(wù)員個人年度工作總結(jié)與計劃
- 家長對學(xué)校的建議書范文(6篇)
- 成人教育合作辦學(xué)協(xié)議書
- 一體化課程教學(xué)方案
- 逆作法土方開挖施工方案
- 鎳鈷礦的創(chuàng)新創(chuàng)業(yè)與產(chǎn)業(yè)升級考核試卷
- 超濾、反滲透調(diào)試方案
- s和m關(guān)系協(xié)議書
- 空分裝備安全檢查表
- 安全風(fēng)險隱患排查表國家隱患排查導(dǎo)則版
- 停車場施工方案及技術(shù)措施范本
- 分居聲明告知書范本
- 【基于杜邦分析的企業(yè)財務(wù)現(xiàn)狀探究國內(nèi)外文獻綜述5200字】
- 工程圖學(xué)(天津大學(xué))智慧樹知到答案章節(jié)測試2023年
- 江蘇省民用建筑施工圖綠色設(shè)計專篇參考樣式2021年版
- GB/T 17853-2018不銹鋼藥芯焊絲
- 初中生離父母有多遠(yuǎn)
- 腳手架拆除監(jiān)理旁站記錄
評論
0/150
提交評論