![第4章-匯編語言程序設(shè)計(jì)_第1頁(yè)](http://file4.renrendoc.com/view/ec3ee3855a4c0d17497c3ab05a988ba1/ec3ee3855a4c0d17497c3ab05a988ba11.gif)
![第4章-匯編語言程序設(shè)計(jì)_第2頁(yè)](http://file4.renrendoc.com/view/ec3ee3855a4c0d17497c3ab05a988ba1/ec3ee3855a4c0d17497c3ab05a988ba12.gif)
![第4章-匯編語言程序設(shè)計(jì)_第3頁(yè)](http://file4.renrendoc.com/view/ec3ee3855a4c0d17497c3ab05a988ba1/ec3ee3855a4c0d17497c3ab05a988ba13.gif)
![第4章-匯編語言程序設(shè)計(jì)_第4頁(yè)](http://file4.renrendoc.com/view/ec3ee3855a4c0d17497c3ab05a988ba1/ec3ee3855a4c0d17497c3ab05a988ba14.gif)
![第4章-匯編語言程序設(shè)計(jì)_第5頁(yè)](http://file4.renrendoc.com/view/ec3ee3855a4c0d17497c3ab05a988ba1/ec3ee3855a4c0d17497c3ab05a988ba15.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
會(huì)計(jì)學(xué)1第4章_匯編語言程序設(shè)計(jì)4.1.3數(shù)據(jù)項(xiàng)㈠常量⑴數(shù)值常量表
各種形式數(shù)字常量格式對(duì)照表第1頁(yè)/共43頁(yè)字符串常量是用單引號(hào)引起來的一個(gè)或多個(gè)字符。字符串常量是以各字符的ASCⅡ碼表示的。如‘A’用41H表示,‘A1B2’用41H,31H,42H,32H表示。⑵字符串常量㈡變量(或標(biāo)號(hào))變量(或標(biāo)號(hào))有三個(gè)屬性:段地址屬性、偏移地址屬性、類型屬性。第2頁(yè)/共43頁(yè)4.2表達(dá)式與運(yùn)算符4.2.1算術(shù)運(yùn)算符(了解)算術(shù)運(yùn)算符包括:+(加)、-(減)、*(乘)、/(除)、MOD(求模)等?!纠坑盟阈g(shù)運(yùn)算符進(jìn)行數(shù)值表達(dá)式運(yùn)算。MOVAL,25*4–50;AL=50=32HMOVBL,50/7;NUM2=7MOVDL,50MOD7 ;DL=1 ┆ 第3頁(yè)/共43頁(yè)邏輯運(yùn)算符包括:AND、OR、XOR、NOT四種運(yùn)算。【例】用邏輯運(yùn)算符進(jìn)行運(yùn)算。MOV AL,34HAND0FH;04H→ALMOV BL,05HOR30H;35H→BLMOV CX,NOT00FFH;0FF00H→CXMOV DX,789AHXOR000FH;7895H→DX4.2.2邏輯運(yùn)算符(了解)第4頁(yè)/共43頁(yè)4.2.3關(guān)系運(yùn)算符(了解)關(guān)系運(yùn)算符包括:相等(EQ),不等(NE),小于(LT),大于(GT),小于等于(LE)及大于等于(GE)?!纠坑藐P(guān)系運(yùn)算符進(jìn)行數(shù)值表達(dá)式運(yùn)算。MOV
DH,10LT5;DH=0MOV
CL,0AAHGT7FH;CL=0FFHMOV AX,‘A‘
EQ41H;0FFFFH→AXADD BL,5LT0101B;BL+0→BL第5頁(yè)/共43頁(yè)P(yáng)TR運(yùn)算符格式:類型PTR地址表達(dá)式
PTR用來對(duì)存儲(chǔ)單元(重新)規(guī)定類型。4.2.4屬性運(yùn)算符例如:MOVBYTEPTR[1000],0;[1000]清零MOVWORDPTR[1000],0;[1000]、[1001]清零第6頁(yè)/共43頁(yè)(1)SEG運(yùn)算符格式:SEG變量或標(biāo)號(hào)功能:分離出其后變量或標(biāo)號(hào)所在段的段基址。例如:MOV AX,SEGARRMOV DS,AX(2)OFFSET運(yùn)算符格式:OFFSET變量或標(biāo)號(hào)功能:分離出其后變量或標(biāo)號(hào)的偏移地址。例如:
MOVBX,OFFSET
BUF4.2.5數(shù)值返回運(yùn)算符第7頁(yè)/共43頁(yè)(3)TYPE運(yùn)算符(了解)格式:TYPE變量或標(biāo)號(hào)第8頁(yè)/共43頁(yè)4.3偽指令⑴數(shù)據(jù)定義偽指令常用的數(shù)據(jù)定義偽指令有DB,DW,DD,DQ,DT。格式:[變量名]數(shù)據(jù)定義偽指令表達(dá)式[,…]⑵段定義偽指令SEGMENT/ENDS段名
SEGMENT
…
…
本段程序內(nèi)容
…
段名ENDS第9頁(yè)/共43頁(yè)【例】為數(shù)據(jù)段分配存儲(chǔ)單元。DATA SEGMENTA DB 11H,12H,13HB DW 1122H,3344HC DD 12345678HDATA ENDS【例】為字符串分配存儲(chǔ)單元。DATA SEGMENTSTR1 DB ‘1234’STR2 DW‘AB’,‘CD’,‘A’STR3 DD ‘AB’DATA ENDS第10頁(yè)/共43頁(yè) ┆NUM1 EQU 25*4–50 ;NUM1=50NUM2 EQU NUM1/7 ;NUM2=7NUM3 DB NUM1MOD7 ;(NUM3)=1VAR1 DB 1,2,3,4,5VAR2 DB ‘12345’NUM4 EQU VAR2-VAR1 ;NUM4=5NUM5 EQU 0FH ┆ 【例】⑶符號(hào)定義偽指令格式:符號(hào)名EQU表達(dá)式第11頁(yè)/共43頁(yè)⑷段分配偽指令A(yù)SSUME格式:ASSUME段寄存器:段名[,段寄存器:段名]【例】用ASSUME偽指令建立代碼段、堆棧段與CS和SS的對(duì)應(yīng)關(guān)系。DATA1 SEGMENTA DB1,2,3DATA1 ENDSSTACK SEGMENTSTACKDB 200DUP(0)STACK ENDSDATA2 SEGMENTB DB
‘123ABC’DATA2 ENDSDATA3 SEGMENTC DB?,?,?DATA3 ENDSCODE SEGMENTASSUME DS:DATA1,ES:DATA3,CS:CODE,SS:STACKSTART:MOV AX,DATA1 MOV DS,AX ;DATA1→DS MOV AX,DATA3 MOV ES,AX ;DATA3→ES ┆CODE ENDS END START第12頁(yè)/共43頁(yè)⑸源程序結(jié)束偽指令格式:END標(biāo)號(hào)⑹置匯編地址計(jì)數(shù)器偽指令ORG格式:ORG數(shù)值表達(dá)式【例】給匯編地址計(jì)數(shù)器賦值。DATA SEGMENTORG 10;置$值為10VAR1DW100H,200HORG $+5 ;置$的值為14+5,即為19VAR2DB1,2,$+1,$+2N EQU$-VAR2 ;($)=23,N=4DATAENDS第13頁(yè)/共43頁(yè)4.4常用的DOS系統(tǒng)功能調(diào)用⑴單字符輸入(1號(hào)調(diào)用)格式:MOV AH,1
INT 21H功能:從鍵盤輸入字符的ASCII碼送入寄存器AL中,并顯示。⑵單字符顯示(2號(hào)調(diào)用)格式:MOVDL,待顯示字符的ASCII碼
MOVAH,2
INT21H功能:將DL寄存器中的字符送顯示器顯示。第14頁(yè)/共43頁(yè)⑶結(jié)束調(diào)用(4CH號(hào)調(diào)用)格式:MOV AH,4CHINT 21H功能:終止當(dāng)前程序并返回調(diào)用程序。⑷顯示字符串(9號(hào)調(diào)用)格式:LEA DX,待顯示字符串首偏移地址
MOV AH,9
INT 21H功能:將當(dāng)前數(shù)據(jù)區(qū)中以‘$’結(jié)尾的字符串送顯示器顯示。第15頁(yè)/共43頁(yè)DATASEGMENTSTR DB0DH,0AH,'Exampleofstringdisplay!$'DATA ENDSCODESEGMENT ASSUMEDS:DATA,CS:CODEBEGIN:MOV AX,DATA MOV DS,AX LEA DX,STR MOV AH,9 INT 21H MOV AH,4CH INT 21HCODE ENDS END BEGIN【例】若要在屏幕上顯示字符串“Exampleofstringdisplay!”,則程序如下:第16頁(yè)/共43頁(yè)綜合舉例【例】已知一數(shù)據(jù)段中的數(shù)據(jù)為:DATA SEGMENTA DW0CHBUF DB‘AB’,0DH,0AHC EQU500HB DW0FFAAHD DDBUFM DB2DUP(1),2DUP(2,’B’)DATA ENDS請(qǐng)畫出該數(shù)據(jù)段數(shù)據(jù)存儲(chǔ)的形式。第17頁(yè)/共43頁(yè)DATA SEGMENTNUM DB01000101BBUF DB0DH,0AH,'NUM='STR DB4DUP(?)DATA ENDSCODE SEGMENTASSUMEDS:DATA,CS:CODESTART:MOV
AX,DATA
MOV DS,AX LEA DI,STR MOV AL,NUM MOV CL,4 SHR AL,CLOR AL,30H【例】閱讀下列程序,指出此程序所完成的功能以及在顯示器上顯示的內(nèi)容。
MOV [DI],AL
INC DI
MOV AL,NUM
AND AL,0FH
OR AL,30H
MOV [DI],AL
INCDI
MOV BYTEPTR[DI],'H'
INC DI
MOV BYTEPTR[DI],'$'
LEA DX,BUF
MOV AH,9
INT 21H
MOV AH,4CH INT 21HCODEENDS END START第18頁(yè)/共43頁(yè)匯編語言程序設(shè)計(jì)一般有以下幾個(gè)步驟:步驟1:分析問題,確定算法步驟2:繪制流程圖步驟3:根據(jù)流程圖編制程序步驟4:調(diào)試程序4.5.1概述4.5程序設(shè)計(jì)方法㈠匯編語言程序設(shè)計(jì)的一般步驟第19頁(yè)/共43頁(yè)①起止框㈡流程圖②判斷框
③處理框
④指向線⑤連接框
第20頁(yè)/共43頁(yè)【例】試編寫一程序計(jì)算以下表達(dá)式的值。w=50+x*(y+z)
式中x、y、z均為無符號(hào)字節(jié)數(shù)據(jù)。設(shè)x、y、z的值存放在字節(jié)變量X、Y、Z中,結(jié)果存放在字變量W之中。(y+z)<2564.5.2順序程序設(shè)計(jì)START:MOVAX,DATAMOVDS,AX;DATA→AXMOVAL,YMOVBL,ZADDAL,BL;Y+Z→AL MOV CL,X MULCL;AL*X→AX MOVW,AXMOVAH,4CHINT 21HCODE ENDS ;退出DOS狀態(tài)
END START源程序如下:DATA SEGMENTX DB 20Y DB 10Z DB 30W DW ?DATA ENDSCODE SEGMENTASSUMEDS:DATA,CS:CODE第21頁(yè)/共43頁(yè)4.5.3分支程序設(shè)計(jì)⑴無條件轉(zhuǎn)移指令㈠轉(zhuǎn)移指令JMP標(biāo)號(hào)(MEM/REG)第22頁(yè)/共43頁(yè)⑵條件轉(zhuǎn)移指令①根據(jù)單個(gè)標(biāo)志位的條件轉(zhuǎn)移指令第23頁(yè)/共43頁(yè)②無符號(hào)數(shù)條件轉(zhuǎn)移指令【例】比較無符號(hào)數(shù)大小,將較大的數(shù)存放AX寄存器。CMP AX,BX;(AX)-(BX)JNB NEXT ;若AX>=BX,轉(zhuǎn)移到NEXTXCHGAX,BX;若AX<BX,交換NEXT:…第24頁(yè)/共43頁(yè)③有符號(hào)數(shù)條件轉(zhuǎn)移指令【例】比較有符號(hào)數(shù)大小,將較大的數(shù)存放在AX寄存器。CMP AX,BX ;(AX)-(BX)JNL NEXT ;若AX>=BX,轉(zhuǎn)移到NEXTXCHGAX,BX ;若AX<BX,交換NEXT:…第25頁(yè)/共43頁(yè)㈡分支程序的設(shè)計(jì)條件程序段1程序段2
分支結(jié)構(gòu)第26頁(yè)/共43頁(yè)【例】編寫計(jì)算下面函數(shù)值的程序:
1 X>0Y=0 X=0-1 X<0設(shè)輸入數(shù)據(jù)為X、輸出數(shù)據(jù)Y,且皆為字節(jié)變量。程序流程圖如圖所示。第27頁(yè)/共43頁(yè)DATA SEGMENTX DB-10Y DB?DATA ENDSCODE SEGMENT ASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXCMPX,0 ;與0進(jìn)行比較
JGEA1 ;X≥0轉(zhuǎn)A1
MOVY,-1;X<0時(shí),-1→Y
JMPEXITA1:JGA2 ;X>0轉(zhuǎn)A2
MOVY,0 ;X=0時(shí),0→YJMPEXITA2:MOVY,1 ;X>0,1→YEXIT:MOVAH,4CHINT21HCODEENDSEND START第28頁(yè)/共43頁(yè)【例】試編一程序,求三個(gè)無符號(hào)字?jǐn)?shù)據(jù)中的最大值,并將最大值存入MAX字單元中。三個(gè)數(shù)分別在三個(gè)字變量X、Y、Z中存儲(chǔ)。程序如下:DATA SEGMENTXDW00ABHYDW5ZDW200MAX DW?DATA ENDS第29頁(yè)/共43頁(yè)MOVAX,XCMPAX,Y;X>Y?
JAL1MOVAX,Y L1:CMPAX,Z;>Z?
JAEXITMOVAX,ZEXIT:MOVMAX,AXMOVAH,4CHINT21HCODEENDSENDSTARTCODE SEGMENTASSUMEDS:DATA,CS:CODESTART:MOV AX,DATAMOV DS,AX第30頁(yè)/共43頁(yè)4.5.4循環(huán)程序設(shè)計(jì)㈠重復(fù)控制指令⑴循環(huán)指令LOOP語句格式:LOOP短標(biāo)號(hào)功能:(CX)-1≠0,則程序轉(zhuǎn)移(循環(huán));否則,順序執(zhí)行。說明:使用LOOP指令可代替兩條指令:
DECCXJNE短標(biāo)號(hào)⑵相等/為零循環(huán)指令LOOPE(自學(xué))語句格式:LOOPE(LOOPZ)短標(biāo)號(hào)功能:(CX)-1≠0且ZF=1,則程序轉(zhuǎn)移(循環(huán));否則,順序執(zhí)行。第31頁(yè)/共43頁(yè)⑶不相等/不為零循環(huán)指令LOOPNE(自學(xué))語句格式:LOOPNE(LOOPNZ)短標(biāo)號(hào)功能:(CX)-1≠0且ZF=0,則程序轉(zhuǎn)移(循環(huán));否則,順序執(zhí)行。⑷CX為零轉(zhuǎn)移指令JCXZ(自學(xué))語句格式:JCXZ短標(biāo)號(hào)功能:(CX)=0(CX不減1),則程序轉(zhuǎn)移;否則,順序執(zhí)行。第32頁(yè)/共43頁(yè)循環(huán)程序的結(jié)構(gòu)㈡循環(huán)程序設(shè)計(jì)第33頁(yè)/共43頁(yè)【例】已知有幾個(gè)元素存放在以BUF為首址的字節(jié)存貯區(qū)中,試統(tǒng)計(jì)其中正元素的個(gè)數(shù)。(計(jì)數(shù)控制)顯然,每個(gè)元素為一個(gè)8位有符號(hào)二進(jìn)制數(shù),統(tǒng)計(jì)其中正元素的個(gè)數(shù)可用循環(huán)程序?qū)崿F(xiàn)。其程序流程圖如圖所示。第34頁(yè)/共43頁(yè)【例】試編一個(gè)程序?qū)⒆謫卧狟UF中所含1的個(gè)數(shù)存入COUNT單元中。(條件控制)要測(cè)出BUF字單元所含1的個(gè)數(shù),首先將BUF中的數(shù)送給寄存器AX,然后將AX寄存器邏輯左移一次,如果CF=1,則表明AX中的最高位為1,則計(jì)數(shù)器CL計(jì)數(shù)1次,如果CF=0,表明AX最高位為0,這樣依次將最高位移入CF中去測(cè)試。移位之后,判斷AX的值是否為0,如果為0則結(jié)束循環(huán),不為0,則繼續(xù)循環(huán)。其流程圖如圖所示。第35頁(yè)/共43頁(yè)DATA SEGMENTBUFDW0011110010101011BCOUNT DB?DATA ENDSCODE SEGMENTASSUMEDS:DATA,
CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,BUFMOVCL,0;計(jì)數(shù)器為0L1:AND AX,AX JE L2 ;(AX)=0,結(jié)束循環(huán)
SHL AX,1 ;AX左移一位
JNC L1 INC CL ;產(chǎn)生進(jìn)位,(CL)+1→CL JMP L1L2: MOV COUNT,CL MOV AH,4CH INT 21HCODE ENDS END START第36頁(yè)/共43頁(yè)DSEGSEGMENTDATADB80,85,86,71,79,96DB83,56,32,66,78,84DSEG ENDSCODE SEGMENTASSUMEDS:DSEG,CS:CODESTART:MOVAX,DSEGMOVDS,AXMOVBX,OFFSETDATAMOVCX,9L1:MOVAL,[BX]MOVSI,1MOVDX,CXL2:CMPAL,[BX][SI]JAEA1XCHGAL,[BX][SI]A1:INCSIDECDXJNZL2MOV[BX],ALINCBXLOOPL1CODEENDSENDSTART【例2】DATA中有10個(gè)無符號(hào)數(shù),將這些數(shù)按照從大到小的次序重新排序。(自學(xué))第37頁(yè)/共43頁(yè)㈠調(diào)用和返回指令⑴調(diào)用指令
CALL標(biāo)號(hào)段內(nèi)調(diào)用:
SP-2,IP入棧,標(biāo)號(hào)偏移地址→IP。
段間調(diào)用:SP-2,CS的內(nèi)容入棧,SP-2,IP入棧,標(biāo)號(hào)段地址→CS,標(biāo)號(hào)偏移地址→IP。⑵返回指令RET
段內(nèi)的返回把SP所指的堆棧頂部的一個(gè)內(nèi)容彈回到指令指針I(yè)P中,且SP加2。段間返回:CS彈出,再加2。4.4.5子程序設(shè)計(jì)第38頁(yè)/共43頁(yè)⑴子程序的定義和調(diào)用定義:過程名PROC[NEAR/FAR]┆RET過程名ENDP㈡子程序設(shè)計(jì)CSEGSEGMENT┆CALLSUBT1┆SUBT1PROCFAR┆RETSUBT1ENDPCSEGENDSXSEGSEGMENT┆CALLSUBT1┆XSEGENDS第39頁(yè)/共43頁(yè)⑵子程序設(shè)計(jì)方法信息的保護(hù)與恢復(fù)主程序與子程序參數(shù)傳遞方式例如:PROGPROCPUSHAXPUSHBXPUSHCX;保護(hù)現(xiàn)場(chǎng)PUSHDX┆POPDXPOPCXPOPBX;恢復(fù)現(xiàn)場(chǎng)POPAXRET;返回?cái)帱c(diǎn)處PROGENDP①寄存器法②約定單元法③堆棧法第40頁(yè)/共43頁(yè)子程序應(yīng)用舉例【例】將一個(gè)給定的二進(jìn)制數(shù)(字節(jié)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年天翼云高級(jí)運(yùn)維工程師認(rèn)證參考試題庫(kù)(含答案)
- “非物質(zhì)文化遺產(chǎn)”知識(shí)競(jìng)賽參考試題庫(kù)300題(含答案)
- 2025年武漢城市職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 合同外包項(xiàng)目服務(wù)協(xié)議
- 銷售產(chǎn)品電子合同
- 氫能源行業(yè)的投資機(jī)會(huì)分析
- 社工勞動(dòng)合同范本
- 標(biāo)準(zhǔn)正式個(gè)人借款合同
- 上海二手房屋買賣房屋合同
- 房地產(chǎn)開發(fā)合同
- 2025年中國(guó)南方航空股份有限公司招聘筆試參考題庫(kù)含答案解析
- 商務(wù)部發(fā)布《中國(guó)再生資源回收行業(yè)發(fā)展報(bào)告(2024)》
- 2025年福建新華發(fā)行(集團(tuán))限責(zé)任公司校園招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
- 江蘇省駕??荚嚳颇恳豢荚囶}庫(kù)
- 四川省成都市青羊區(qū)成都市石室聯(lián)合中學(xué)2023-2024學(xué)年七上期末數(shù)學(xué)試題(解析版)
- 咨詢公司績(jī)效工資分配實(shí)施方案
- 2025新人教版英語七年級(jí)下單詞表
- 中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)-氣管切開非機(jī)械通氣患者氣道護(hù)理
- 未成年入職免責(zé)協(xié)議書
- 光伏電站巡檢專項(xiàng)方案
- 2024年山東省東營(yíng)市中考數(shù)學(xué)試題 (原卷版)
評(píng)論
0/150
提交評(píng)論