程序設計基本語法PPT學習教案_第1頁
程序設計基本語法PPT學習教案_第2頁
程序設計基本語法PPT學習教案_第3頁
程序設計基本語法PPT學習教案_第4頁
程序設計基本語法PPT學習教案_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、會計學1 程序設計基本語法程序設計基本語法 EXAM.ASM ASCII 源程序 EXAM.OBJ 可選 EXAM.LST EXAM.CRF 機器碼目標程序 MASM.EXE 匯編 匯編程序 EXAM.EXE EXAM.COM LINK.EXE 連接 連接程序 可執(zhí)行程序 4.1計算機程序設計語言的演變 檢查源程序的語法錯誤,并給出出錯信息。 產(chǎn)生目標文件(.OBJ);列表文件;(.LST)和交叉索引文件 (.CRF文件)。 展開宏指令。 匯編過程 宏匯編語言及編程 第1頁/共31頁 STACK_SEG SEGMENT ;堆棧段,段名為STACK_SEG DW 256 DUP(?) ;分配堆棧

2、段的大小為256個字 TOP LABEL WORD ;堆棧棧底位置 STACK_SEG ENDS DATA_SEG SEGMENT ;數(shù)據(jù)段,段名為DATA_SEG STRING DB Let ME have a try !,$ ;定義字符串數(shù)據(jù) DATA_SEG ENDS CODE_SEG SEGMENT ;代碼段,段名為CODE_SEG ASSUME CS:CODE_SEG, DS:DATA_SEG, SS:STACK_SEG START:MOVAX, DATA_SEG ;程序執(zhí)行起始點 MOV DS, AX ;將段寄存器指向用戶數(shù)據(jù)段 MOV AX, STACK_SEG MOV SS,

3、AX ;將堆棧指針指向用戶定義堆棧 MOV SP, OFFSET TOP LEA DX,STRING MOV AH,9 ;系統(tǒng)功能調(diào)用,在CRT顯示字符串 INT 21H MOV AH, 4CH;系統(tǒng)功能調(diào)用,程序結(jié)束返回操作系統(tǒng) INT 21H CODE_SEG ENDS END START ;匯編結(jié)束,程序起始點為START 堆 棧 段 數(shù) 據(jù) 段 代 碼 段 4.2匯編語言語法 宏匯編語言的基本格式 第2頁/共31頁 宏匯編語言的基本格式 4.2匯編語言語法 START:MOVAX,DATA;入口 MOVDS,AX ;段寄存器初始化 MOVAX,EXD MOVES,AX DATA SEG

4、MENT DATA ENDS EXD SEGMENT EXD ENDS STACK SEGMENT STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ASSUME ES:EXD,SS:STACK n幾個段構(gòu)成,可由數(shù)據(jù)段、代碼 段、堆棧段或附加數(shù)據(jù)段組成,至 少要有代碼段。 n代 碼 段 必 須 有 匯 編 起 始 標 號 START;偽指令END。 nLINK能正確地設置CS和IP值、 SS和SP值 nLINK不設置DS和ES值。 MOVAH,4CH INT21H;出口 CODE ENDS ENDSTART;程序結(jié)束 第3頁/共31頁 4.2匯編語

5、言語法 宏匯編語句的基本格式 指令性語句使CPU產(chǎn)生動作、并在程序執(zhí)行時才處理的指令 標號:操作碼操作數(shù);注釋 如:START:MOV AX ,DATA;初始化數(shù)據(jù)段 指示性語句(偽指令)不產(chǎn)生CPU動作、匯編程序處理的說明性 指令 名字/變量 命令參數(shù);注釋 如:DATA SEGMENT AT 2000H;數(shù)據(jù)段地 址 偽指令與具體的處理器類型無關,但與匯編程序有關。不同 版本的匯編程序支持不同的偽指令 第4頁/共31頁 匯編語句的操作數(shù)(Operands) 寄存器(Registers) 常量(Constants) 第5頁/共31頁 存儲器操作數(shù) 標識符 長度 僅限于變量 第6頁/共31頁

6、4.2匯編語言語法 數(shù)字常量:直接用數(shù)字進行表示的常量。 二進制:10000100B、11110001020100B 十進制:12356D 十六進制:12ABH、0F56AH (字母打頭必須前面補0,否則將出現(xiàn)匯編語法錯誤。) 如: MOVAX,100D MOVBL,0FAH MOVCL,1010 1000B 常量、變量和標號 常量 匯編源程序翻譯成機器碼目標程序期間已經(jīng)有確定數(shù)值的量。 分為數(shù)字常量和符號常量兩類。(指令中的立即數(shù),MEM直接地址) 第7頁/共31頁 4.2匯編語言語法 符號常量:用標識符(常量名)表示的常量。 符號命名規(guī)則: 1)031個ASCII碼字符 2)AZ、az、0

7、9 、?、$及下劃線構(gòu)成。 3)?不能單獨作為標識符。 4)無獨立的保留字及運算符。 常量、變量和標號 常量 合法標識符: STA_124$ MOV_? 103 非法標識符: STA+124$ MOV ? 第8頁/共31頁 4.2匯編語言語法 常量、變量和標號 常量 定義 常量名EQU(=)數(shù)值或字母 例如:AAEQU30 BB=1000H CCEQU10001010B DD= ABC MOVAX,AA MOVAL,AA MOVBX,BB MOVBH,BB ;錯BH將產(chǎn)生溢出 改善程序的可讀性,程序的修改調(diào)試方便。 “=”可重復定義 EQU不可重復定義 第9頁/共31頁 4.2匯編語言語法 常

8、量、變量和標號 變量 內(nèi)存單元地址的符號表示,存在地址的三個屬性。 字節(jié)DB(8位)一個字節(jié)存貯單元 字DW(16位)二個連續(xù)字節(jié)存 貯單元 雙字DD(32位)四個連續(xù)字節(jié)存 貯單元 雙字DQ(64位)8個連續(xù)字節(jié)存貯 單元 雙字DT(80位)10個連續(xù)字節(jié)存 貯單元 段屬性:段地址,段寄存器的值 偏移地址:段內(nèi)地址。 變量類型:變量所在存貯單元的類型,由存貯偽指令指定。 第10頁/共31頁 4.2匯編語言語法 常量、變量和標號 變量定義 變量名存貯偽指令表達式1,表達式2, 例如: XDB0AH AAEQU1ABCH YDWAA STRDBABCD1234,12H,0ACH 重復子句表達式:

9、 NDUP(表達式) 例如: AADB10 DUP(0) BBDW5 DUP(21*5),0DH,0AH 第11頁/共31頁 4.2匯編語言語法 常量、變量和標號 標號 指令性語句存放地址的符號表示。 同變量一樣,存在三個與地址有關的屬性,常用于指令的轉(zhuǎn)移和 子程序調(diào)用。 例如: MOVSI,100H MOVDI,200H MOVCX,10H LOOP1:MOVAL,SI MOVDI,AL INCSI INCDI LOOP LOOP1;此處LOOP1不是保留字 標號定義 標號名:機器指令語句 第12頁/共31頁 表達式與運算符 由操作數(shù)(常量、變量、標號)和運算符構(gòu)成。 算術運算符 +、*、/

10、 MOD除法取余運算10 MOD 3=1 SHL左移運算 21HSHL1結(jié)果42H,相當于乘2的操作 。 SHR右移運算 84SHR2結(jié)果21H,相當于除4的操作 。 (SHL、SHR注意和相應的邏輯指令區(qū)別) 在匯編時完成相應的運算(數(shù)字常數(shù)),(OBJ)目標程序中不 存在表達式,應用程序的DEBUG調(diào)試中不可能看到任何表達式。 第13頁/共31頁 表達式與運算符 關系運算符 EQ、NE、LT、LE、GT、GE 運算的結(jié)果為真用0FFFFH表示,否則為0。 例如:MOVBX,(PORT LE 5) AND 20H) 當POTR小于5為MOVBX,20H否則為MOV BX,0H 邏輯運算符 A

11、ND、OR、NOT、XOR 例如:ANDAL,86H AND0FH AND是指令。 AND邏輯運算符,86H AND 0FH=06H 匯編后的指令是:AND AL,06H 與邏輯運算 指令不同, CPU不執(zhí)行 任何操作, 匯編時運算 ,在目標程 序中只是一 個常數(shù)。 4.2匯編語言語法 第14頁/共31頁 表達式與運算符 分析運算符 4.2匯編語言語法 求段基址SEG符號名 MOVAX,SEGAA SEG AA 為立即尋址是AA的段地址 求符號名的類型值TYPE符號名 MOVAL,TYPECC 返回變量CC的類型的字節(jié)數(shù)。 字節(jié)數(shù)據(jù): TYPE CC=1字數(shù)據(jù): TYPE CC=2 雙字數(shù)據(jù):

12、 TYPE CC=48字節(jié)數(shù)據(jù): TYPE CC=8 10字節(jié)數(shù)據(jù): TYPE CC=10 標號:NEAR=0FFFFHFAR=0FFFEH 求偏移地址OFFSET 符號名 MOVSI,OFFSET BB OFFSET BB 為立即尋址,是BB的偏移地址 第15頁/共31頁 表達式與運算符分析運算符 4.2匯編語言語法 變量的元素個數(shù)LENGTH 符號名 DUP定義的變量的元素個數(shù),否則=1 如,BUF DW N DUP(?),LENGTH BUF=N X DD 12345678H,LENGTH X=1 求符號名分配的總字節(jié)數(shù) SIZE 符號名 返回變量的總字節(jié)數(shù):SIZE=LENGTH*TY

13、PE 例如: BUF1DBN1,N2,N3,N10 BUF2DB10DUP(0) BUF3DW10DUP(?) OFFSET BUF1=0000H TYPE BUF1=1 LENGTH BUF1=1 SIZEBUF1=1 OFFSET BUF2=000AH TYPE BUF2=1 LENGTH BUF2=10 SIZEBUF2=10 OFFSET BUF3=0014H TYPE BUF3=2 LENGTH BUF3=10 SIZEBUF3=20 第16頁/共31頁 表達式與運算符 屬性運算符 4.2匯編語言語法 定義類型算符 PTR 格式:類型PTR表達式 類型BYTEWORD DWORD 例

14、如: MOVBYTE PTR DI,12H ;將DI定義為字節(jié)類型。 MOVDI,12H;非法指令 INCWORD PTRBX;字加1 INCBYTE PTRBX;字節(jié)加1,當( BX)=1FFH時結(jié)果 ;不相同 INCBX;非法指令 BUFWDW1234H;BUF為字類型。 MOVAH,BYTE PTR BUFW;將BUFW指定為字節(jié) 類型 ;AH=34H 第17頁/共31頁 指示性語句(偽指令) 4.2匯編語言語法 符號定義偽指令:EQU (=) 格式:符號名EQU(=)表達式 例如: COUNT EQU20 ABC=21H+4 MOVAL,COUNT;將20送AL MOVAL,ABC;將

15、25H送AL B EQU10 ;非法定義 如:A=3 B EQU5;定義 B=5 A=10;重定義 A為10 EQU不能重復定義,=可任意重復定義。 第18頁/共31頁 指示性語句(偽指令) 4.2匯編語言語法 段定義偽指令 格式:段名SEGMENT定位方式組合方式類別 名 段名ENDS 定義了以段名命名的存貯段。匯編時給該段名分配一個段基值。 例如: DATA SEGMENT DATAENDS CODESEGMENT CODEENDS 定義了二個段,段名分別為DATA、CODE。 第19頁/共31頁 指示性語句(偽指令) 4.2匯編語言語法 段定義偽指令的參數(shù) 格式:段名 SEGMENT定位

16、類型組合方式類別 名 定位方式:段的起始地址邊界規(guī)則 PAGE指定起始地址的低8位是0,稱頁邊界 XXXX XXXX XXXX 0000 0000B PARA指定起始地址的低4位是0,稱段邊界(缺?。?XXXX XXXX XXXX XXXX 0000B WORD指定起始地址的低2位是0,稱字邊界 XXXX XXXX XXXX XXXX XX00B BYTE指定起始地址為任意值。 XXXX XXXX XXXX XXXX XXXXB (PARA缺省方式下可以省略) 第20頁/共31頁 指示性語句(偽指令) 4.2匯編語言語法 段定義偽指令的參數(shù) 格式:段名 SEGMENT定位類型組合類型類別 名

17、組合方式:連接程序時設定本段與其它同名段的連接方式。(模 塊化程序設計) PUBLIC:同名段依次連接起來,形成一個連續(xù)的段。 COMMON:同名段共用同一段起始地址,相互重疊段的長度, 為最長的段的長度。 AT 表達式:定位在表達式所指定的段地址。(代碼段例外) STACK:同名段構(gòu)成一個連續(xù)的堆棧段,自動初始化SP。 MEMORY:表示本段定位在所有段的地址之上,高地址處。 空缺(NONE)不與任何段相連接。各段有獨立段基址。 (缺省方式) 第21頁/共31頁 指示性語句(偽指令) 4.2匯編語言語法 段定義偽指令的參數(shù) 格式:段名 SEGMENT 定位類型組合方式類別名 類別名:用單引號

18、括起來的字符串。類別名相同的段按先后順序 存放在一個連續(xù)的存貯區(qū)中,形統(tǒng)一的物理段。(模塊化程序設計) 第22頁/共31頁 指示性語句(偽指令) 段寄存器說明偽指令 格式:ASSUME段寄存器:段名1,段寄存器:段名 2 在代碼段,告訴匯編程序CS、DS、ES、SS應具有的符號段基址 ,但是段寄存器(CS除外)還必須用傳送指令賦值。一般緊跟在 SEGMENT語句之后 例如:CODESEGMENT PARA ASSUME CS:CODE,DS:DATA MOVAX,DATA MOVDS,AX;傳送指令賦值 CODEENDS DATASEGMENT DATAENDS 4.2匯編語言語法 第23頁/

19、共31頁 指示性語句(偽指令) 過程(子程序)定義偽指令 格式:過程名 PROCNEARFAR RET;返回指令 過程名 ENDP 過程名:過程的起始地址,如子程序定義。 類型:NEAR近過程(主、子同段) FAR遠過程(主、子在兩個不同的代碼段) 程序結(jié)束偽指令 END 格式:END標號 標號為程序中第一條指令性指令標號。 4.2匯編語言語法 第24頁/共31頁 DATASEGMENT varB DB 63,63H,ABCD,3 DUP (?),2 DUP (1,3) varW DW 1234H,5,AB,CD,?,2 DUP (1,3) DATAENDS CODESEGMENT ASSUM

20、ECS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,varB MOV BL,varB+1 MOV CL,varB+5 MOV DX,varW MOV SI,varW+2 MOV DI,varW+4 MOV AH,04CH INT21H CODEENDS ENDSTART 驗證ARRA.ASM AL=63(3F) BL=63H CL=44H DX=1234H DX=5 DX=4241H 4.2匯編語言語法 第25頁/共31頁 例:數(shù)據(jù)段的數(shù)據(jù)如下所示,圖示其存貯情況。及指令執(zhí)行結(jié)果。(DS)=2003H DATASEGMENT BUF1DB

21、123 BUF2DB1,2,3 AEQU100H XEQUTHISBYTE NUMDW2 DUP(12H),0F23H DATA ENDS MOVAH,4CH INT21H CODE ENDS ENDSTA 31H 32H 33H XXH 2003H:0000H 2003H:0001H 2003H:0002H BUF1 01H 02H 03H 2003H:0003H 2003H:0004H 2003H:0005H BUF2 12H 00H 12H 00H 23H 0FH XXH XXH 2003H:0006H 2003H:0007H 2003H:0008H 2003H:0009H 2003H:000AH 2003H:000BH 2003H:000CH 2003H:000DH NUM(X) SI=3 AX=2003H BL=12H AX=0012H CODESEGMENT ASSUME CS:CODE,DS:DATA STA: MO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論