微機原理與應(yīng)用第5章1節(jié)2012SGQ_第1頁
微機原理與應(yīng)用第5章1節(jié)2012SGQ_第2頁
微機原理與應(yīng)用第5章1節(jié)2012SGQ_第3頁
微機原理與應(yīng)用第5章1節(jié)2012SGQ_第4頁
微機原理與應(yīng)用第5章1節(jié)2012SGQ_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論