




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
會計學1第4章_匯編語言程序設計4.1.3數據項㈠常量⑴數值常量表
各種形式數字常量格式對照表第1頁/共43頁字符串常量是用單引號引起來的一個或多個字符。字符串常量是以各字符的ASCⅡ碼表示的。如‘A’用41H表示,‘A1B2’用41H,31H,42H,32H表示。⑵字符串常量㈡變量(或標號)變量(或標號)有三個屬性:段地址屬性、偏移地址屬性、類型屬性。第2頁/共43頁4.2表達式與運算符4.2.1算術運算符(了解)算術運算符包括:+(加)、-(減)、*(乘)、/(除)、MOD(求模)等。【例】用算術運算符進行數值表達式運算。MOVAL,25*4–50;AL=50=32HMOVBL,50/7;NUM2=7MOVDL,50MOD7 ;DL=1 ┆ 第3頁/共43頁邏輯運算符包括:AND、OR、XOR、NOT四種運算。【例】用邏輯運算符進行運算。MOV AL,34HAND0FH;04H→ALMOV BL,05HOR30H;35H→BLMOV CX,NOT00FFH;0FF00H→CXMOV DX,789AHXOR000FH;7895H→DX4.2.2邏輯運算符(了解)第4頁/共43頁4.2.3關系運算符(了解)關系運算符包括:相等(EQ),不等(NE),小于(LT),大于(GT),小于等于(LE)及大于等于(GE)。【例】用關系運算符進行數值表達式運算。MOV
DH,10LT5;DH=0MOV
CL,0AAHGT7FH;CL=0FFHMOV AX,‘A‘
EQ41H;0FFFFH→AXADD BL,5LT0101B;BL+0→BL第5頁/共43頁PTR運算符格式:類型PTR地址表達式
PTR用來對存儲單元(重新)規定類型。4.2.4屬性運算符例如:MOVBYTEPTR[1000],0;[1000]清零MOVWORDPTR[1000],0;[1000]、[1001]清零第6頁/共43頁(1)SEG運算符格式:SEG變量或標號功能:分離出其后變量或標號所在段的段基址。例如:MOV AX,SEGARRMOV DS,AX(2)OFFSET運算符格式:OFFSET變量或標號功能:分離出其后變量或標號的偏移地址。例如:
MOVBX,OFFSET
BUF4.2.5數值返回運算符第7頁/共43頁(3)TYPE運算符(了解)格式:TYPE變量或標號第8頁/共43頁4.3偽指令⑴數據定義偽指令常用的數據定義偽指令有DB,DW,DD,DQ,DT。格式:[變量名]數據定義偽指令表達式[,…]⑵段定義偽指令SEGMENT/ENDS段名
SEGMENT
…
…
本段程序內容
…
段名ENDS第9頁/共43頁【例】為數據段分配存儲單元。DATA SEGMENTA DB 11H,12H,13HB DW 1122H,3344HC DD 12345678HDATA ENDS【例】為字符串分配存儲單元。DATA SEGMENTSTR1 DB ‘1234’STR2 DW‘AB’,‘CD’,‘A’STR3 DD ‘AB’DATA ENDS第10頁/共43頁 ┆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 ┆ 【例】⑶符號定義偽指令格式:符號名EQU表達式第11頁/共43頁⑷段分配偽指令ASSUME格式:ASSUME段寄存器:段名[,段寄存器:段名]【例】用ASSUME偽指令建立代碼段、堆棧段與CS和SS的對應關系。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頁/共43頁⑸源程序結束偽指令格式:END標號⑹置匯編地址計數器偽指令ORG格式:ORG數值表達式【例】給匯編地址計數器賦值。DATA SEGMENTORG 10;置$值為10VAR1DW100H,200HORG $+5 ;置$的值為14+5,即為19VAR2DB1,2,$+1,$+2N EQU$-VAR2 ;($)=23,N=4DATAENDS第13頁/共43頁4.4常用的DOS系統功能調用⑴單字符輸入(1號調用)格式:MOV AH,1
INT 21H功能:從鍵盤輸入字符的ASCII碼送入寄存器AL中,并顯示。⑵單字符顯示(2號調用)格式:MOVDL,待顯示字符的ASCII碼
MOVAH,2
INT21H功能:將DL寄存器中的字符送顯示器顯示。第14頁/共43頁⑶結束調用(4CH號調用)格式:MOV AH,4CHINT 21H功能:終止當前程序并返回調用程序。⑷顯示字符串(9號調用)格式:LEA DX,待顯示字符串首偏移地址
MOV AH,9
INT 21H功能:將當前數據區中以‘$’結尾的字符串送顯示器顯示。第15頁/共43頁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頁/共43頁綜合舉例【例】已知一數據段中的數據為:DATA SEGMENTA DW0CHBUF DB‘AB’,0DH,0AHC EQU500HB DW0FFAAHD DDBUFM DB2DUP(1),2DUP(2,’B’)DATA ENDS請畫出該數據段數據存儲的形式。第17頁/共43頁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【例】閱讀下列程序,指出此程序所完成的功能以及在顯示器上顯示的內容。
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頁/共43頁匯編語言程序設計一般有以下幾個步驟:步驟1:分析問題,確定算法步驟2:繪制流程圖步驟3:根據流程圖編制程序步驟4:調試程序4.5.1概述4.5程序設計方法㈠匯編語言程序設計的一般步驟第19頁/共43頁①起止框㈡流程圖②判斷框
③處理框
④指向線⑤連接框
第20頁/共43頁【例】試編寫一程序計算以下表達式的值。w=50+x*(y+z)
式中x、y、z均為無符號字節數據。設x、y、z的值存放在字節變量X、Y、Z中,結果存放在字變量W之中。(y+z)<2564.5.2順序程序設計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狀態
END START源程序如下:DATA SEGMENTX DB 20Y DB 10Z DB 30W DW ?DATA ENDSCODE SEGMENTASSUMEDS:DATA,CS:CODE第21頁/共43頁4.5.3分支程序設計⑴無條件轉移指令㈠轉移指令JMP標號(MEM/REG)第22頁/共43頁⑵條件轉移指令①根據單個標志位的條件轉移指令第23頁/共43頁②無符號數條件轉移指令【例】比較無符號數大小,將較大的數存放AX寄存器。CMP AX,BX;(AX)-(BX)JNB NEXT ;若AX>=BX,轉移到NEXTXCHGAX,BX;若AX<BX,交換NEXT:…第24頁/共43頁③有符號數條件轉移指令【例】比較有符號數大小,將較大的數存放在AX寄存器。CMP AX,BX ;(AX)-(BX)JNL NEXT ;若AX>=BX,轉移到NEXTXCHGAX,BX ;若AX<BX,交換NEXT:…第25頁/共43頁㈡分支程序的設計條件程序段1程序段2
分支結構第26頁/共43頁【例】編寫計算下面函數值的程序:
1 X>0Y=0 X=0-1 X<0設輸入數據為X、輸出數據Y,且皆為字節變量。程序流程圖如圖所示。第27頁/共43頁DATA SEGMENTX DB-10Y DB?DATA ENDSCODE SEGMENT ASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXCMPX,0 ;與0進行比較
JGEA1 ;X≥0轉A1
MOVY,-1;X<0時,-1→Y
JMPEXITA1:JGA2 ;X>0轉A2
MOVY,0 ;X=0時,0→YJMPEXITA2:MOVY,1 ;X>0,1→YEXIT:MOVAH,4CHINT21HCODEENDSEND START第28頁/共43頁【例】試編一程序,求三個無符號字數據中的最大值,并將最大值存入MAX字單元中。三個數分別在三個字變量X、Y、Z中存儲。程序如下:DATA SEGMENTXDW00ABHYDW5ZDW200MAX DW?DATA ENDS第29頁/共43頁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頁/共43頁4.5.4循環程序設計㈠重復控制指令⑴循環指令LOOP語句格式:LOOP短標號功能:(CX)-1≠0,則程序轉移(循環);否則,順序執行。說明:使用LOOP指令可代替兩條指令:
DECCXJNE短標號⑵相等/為零循環指令LOOPE(自學)語句格式:LOOPE(LOOPZ)短標號功能:(CX)-1≠0且ZF=1,則程序轉移(循環);否則,順序執行。第31頁/共43頁⑶不相等/不為零循環指令LOOPNE(自學)語句格式:LOOPNE(LOOPNZ)短標號功能:(CX)-1≠0且ZF=0,則程序轉移(循環);否則,順序執行。⑷CX為零轉移指令JCXZ(自學)語句格式:JCXZ短標號功能:(CX)=0(CX不減1),則程序轉移;否則,順序執行。第32頁/共43頁循環程序的結構㈡循環程序設計第33頁/共43頁【例】已知有幾個元素存放在以BUF為首址的字節存貯區中,試統計其中正元素的個數。(計數控制)顯然,每個元素為一個8位有符號二進制數,統計其中正元素的個數可用循環程序實現。其程序流程圖如圖所示。第34頁/共43頁【例】試編一個程序將字單元BUF中所含1的個數存入COUNT單元中。(條件控制)要測出BUF字單元所含1的個數,首先將BUF中的數送給寄存器AX,然后將AX寄存器邏輯左移一次,如果CF=1,則表明AX中的最高位為1,則計數器CL計數1次,如果CF=0,表明AX最高位為0,這樣依次將最高位移入CF中去測試。移位之后,判斷AX的值是否為0,如果為0則結束循環,不為0,則繼續循環。其流程圖如圖所示。第35頁/共43頁DATA SEGMENTBUFDW0011110010101011BCOUNT DB?DATA ENDSCODE SEGMENTASSUMEDS:DATA,
CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,BUFMOVCL,0;計數器為0L1:AND AX,AX JE L2 ;(AX)=0,結束循環
SHL AX,1 ;AX左移一位
JNC L1 INC CL ;產生進位,(CL)+1→CL JMP L1L2: MOV COUNT,CL MOV AH,4CH INT 21HCODE ENDS END START第36頁/共43頁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個無符號數,將這些數按照從大到小的次序重新排序。(自學)第37頁/共43頁㈠調用和返回指令⑴調用指令
CALL標號段內調用:
SP-2,IP入棧,標號偏移地址→IP。
段間調用:SP-2,CS的內容入棧,SP-2,IP入棧,標號段地址→CS,標號偏移地址→IP。⑵返回指令RET
段內的返回把SP所指的堆棧頂部的一個內容彈回到指令指針IP中,且SP加2。段間返回:CS彈出,再加2。4.4.5子程序設計第38頁/共43頁⑴子程序的定義和調用定義:過程名PROC[NEAR/FAR]┆RET過程名ENDP㈡子程序設計CSEGSEGMENT┆CALLSUBT1┆SUBT1PROCFAR┆RETSUBT1ENDPCSEGENDSXSEGSEGMENT┆CALLSUBT1┆XSEGENDS第39頁/共43頁⑵子程序設計方法信息的保護與恢復主程序與子程序參數傳遞方式例如:PROGPROCPUSHAXPUSHBXPUSHCX;保護現場PUSHDX┆POPDXPOPCXPOPBX;恢復現場POPAXRET;返回斷點處PROGENDP①寄存器法②約定單元法③堆棧法第40頁/共43頁子程序應用舉例【例】將一個給定的二進制數(字節
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6 讓我們的學校更美好第一課時教學設計-2023-2024學年道德與法治三年級上冊(部編版)
- 14《斜面》教學設計-2023-2024學年科學五年級下冊人教鄂教版
- 九年級化學下冊 第10單元 課題1《常見的酸和堿》教學設計 (新版)新人教版
- Unit 2 No Rules No Order 大單元整體教學設計-2024-2025學年人教版英語七年級下冊
- 團隊建設與入職培訓1
- 三年級語文下冊 第三單元 12《一幅名揚中外的畫》教學設計 新人教版
- 知識付費產業發展
- 七年級地理上冊 3.3《世界的語言與宗教》教學設計 湘教版
- 七年級生物上冊 4.4.1《物質運輸的載體》教學設計 魯科版五四制
- 《8 水果拼盤》(教學設計)-2023-2024學年五年級下冊綜合實踐活動長春版
- MOOC 數字邏輯電路實驗-東南大學 中國大學慕課答案
- 2005雷克薩斯gs430gs300原廠維修手冊中文sa
- 中學生問題行為及其對策
- 風險管理師國家職業技能標準
- 電氣系統設計方案
- Python語言實用教程第10章-科學計算課件
- 入團志愿書(2016版本)(可編輯打印標準A4) (1)
- 無心磨床調整要訣
- 紅色喜慶卡通中小學期末考試頒獎典禮PPT模板
- 集裝箱整箱海運業務操作流程
- 車間員工質量意識培訓
評論
0/150
提交評論