![匯編_第4章 偽指令及程序格式_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/971a31d0-aeb2-4deb-89ad-5638bd668e14/971a31d0-aeb2-4deb-89ad-5638bd668e141.gif)
![匯編_第4章 偽指令及程序格式_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/971a31d0-aeb2-4deb-89ad-5638bd668e14/971a31d0-aeb2-4deb-89ad-5638bd668e142.gif)
![匯編_第4章 偽指令及程序格式_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/971a31d0-aeb2-4deb-89ad-5638bd668e14/971a31d0-aeb2-4deb-89ad-5638bd668e143.gif)
![匯編_第4章 偽指令及程序格式_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/971a31d0-aeb2-4deb-89ad-5638bd668e14/971a31d0-aeb2-4deb-89ad-5638bd668e144.gif)
![匯編_第4章 偽指令及程序格式_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/12/971a31d0-aeb2-4deb-89ad-5638bd668e14/971a31d0-aeb2-4deb-89ad-5638bd668e145.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、偽操作(偽指令) 偽操作是匯編程序?qū)υ闯绦蜻M(jìn)行匯編時處理的操作,完成處理器選擇、存儲模式定義、數(shù)據(jù)定義、存儲器分配、指示程序開始結(jié)束等功能。l 處理器選擇偽操作l 段定義偽操作l 程序開始和結(jié)束偽操作l 數(shù)據(jù)定義及存儲器分配偽操作l 表達(dá)式賦值偽操作l 地址計數(shù)器與對準(zhǔn)偽操作l 基數(shù)控制偽操作語句類型指令(性)語句完成一定操作功能,能夠翻譯成機(jī)器代碼的語句指示性語句(偽指令語句)為匯編程序在翻譯匯編語言源程序時提供有關(guān)信息,并不翻譯成機(jī)器代碼語句類型及格式語句類型#include stdafx.h #include stdio.h int main(int argc, char* argv)
2、int a=1,b=2,c; c=a+b; printf(“c=%dn,c); return 0; 用C語言編程實現(xiàn) c = a + b,并在屏幕上顯示出結(jié)果。 例:C語言編程的格式指示性語句指令性語句例:完成兩個字節(jié)數(shù)據(jù)相加。DATA SEGMENT ;段定義開始(DATA段) BUF1 DB 34H ;第1個加數(shù) BUF2 DB 2AH ;第2個加數(shù) SUM DB ? ;準(zhǔn)備用來存放和數(shù)的單元DATA ENDS ;段定義結(jié)束(DATA段)CODE SEGMENT ;段定義開始(CODE段) ASSUME CS:CODE,DS:DATA ;規(guī)定DATA、CODE分別為數(shù)據(jù)段和代碼段 STAR
3、T: MOV AX,DATA MOV DS,AX ;給數(shù)據(jù)段寄存器DS賦值 MOV AL,BUF1 ;取第1個加數(shù) ADD AL,BUF2 ;和第2個加數(shù)相加 MOV SUM,AL ;存放結(jié)果 MOV AH,4CH INT 21H ;返回DOS狀態(tài)CODE ENDS ;段定義結(jié)束(CODE段) END START ;整個源程序結(jié)束 偽指令語句指令語句一個完整的匯編程序語句格式指令性語句:格式:名字: 操作碼 操作數(shù),操作數(shù) ;注釋偽指令語句:格式:名字 偽操作 操作數(shù),操作數(shù), ;注釋含義:由用戶按一定規(guī)則定義的標(biāo)識符組成:英文字母、數(shù)字、特殊符號形式:標(biāo)號和變量名字定義滿足的規(guī)則(1)數(shù)字不
4、能作為第一個字符(2)單獨的問號(?)不能作為名字(3)最大有效長度為31(4)保留字不能作為名字使用語句的說明部分操作碼 含義:指明操作的性質(zhì)或功能。書寫規(guī)則:操作碼與操作數(shù)之間用空格分開。操作數(shù)含義:指定參與操作的數(shù)據(jù)。個數(shù):一般指令,1個或2個,也可以沒有; 偽指令和宏指令,可以有多個。書寫規(guī)則:操作數(shù)多于1個時,操作數(shù)之間用 逗號分開 段定義偽操作:完整的段定義格式 data segment ; 定義數(shù)據(jù)段 data ends;-extra segment ; 定義附加段 extra ends;-code segment ; 定義代碼段 assume cs:code, ds:data,
5、 es:extrastart: mov ax, data mov ds, ax ; 段地址 段寄存器 code ends end startPSPDSESSSCSEXE程序的內(nèi)存映象圖裝入模塊文件頭方式二:code segmentmain proc far assume start: push ds mov ax, 0 push ax retmain endpcode ends end start方式一:code segment assume start: mov ah,4ch int 21hcode ends end start代碼段中程序結(jié)束的兩種方式段名 SEGMENT 定位類型 組合類
6、型 使用類型 類別 ; 語句序列段名 ENDS定位類型 align_type PARA BYTE WORD DWORD PAGE組合類型 combine_type PRIVATE PUBLIC COMMON STACK AT exp使用類型 use_type USE16 USE32(4) 類別 classu 指定段址偽指令 格式: ASSUME :,:功能:建立段寄存器與段的缺省關(guān)系注意: ASSUME偽指令并不為段寄存器設(shè)定初值例: assume cs:code, ds:data, es:extra其中:code是代碼段的段名,data是數(shù)據(jù)段的段名,extra是擴(kuò)展段的段名u 設(shè)置段地址值
7、 含義:在程序的代碼段開始處進(jìn)行DS、SS、ES的段基址 裝填。 例:MOV AX, DATA MOV DS, AX程序裝入內(nèi)存后,段寄存器的指向PSP程序代碼DS、SS 、 ES文件頭CSEND label 表示匯編程序的結(jié)束 結(jié)束偽操作code segment ; 定義代碼段 assume cs:code, ds:data, es:extrastart: mov ax, data mov ds, ax ; 段地址 段寄存器 code ends end start例: 數(shù)據(jù)定義及存儲器分配偽操作變量 助記符 操作數(shù) , 操作數(shù) , ; 注釋 助記符:DB,DW,DD,DF,DQ(64位),D
8、T(80位)DATA_BYTE DB 10,4,10H,?DATA_WORD DW 100,100H,-5,?- 0AH 04H 10H - 64H 00H 00H 01H FBH FFHDATA_BYTE DATA_WORD 例:DB: 定義字節(jié)DW:定義字DD: 定義雙字ARRAY DB HELLO DB AB DW AB 48H 45H 4CH 4CH 4FH 41H 42H 42H 41H ARRAY VAR DB 100 DUP (?) DB 2 DUP (0,2 DUP(1,2),3)存儲單元分配實例: PAR1 DB 100,20H PAR2 DW 300H,400H ADDR_
9、TABL1 DW PAR1,PAR2;存放偏移地址 ADDR_TABL2 DD PAR1,PAR2;存放偏移和段地址 64H 20H 00H 03H 00H 04H 偏低 偏高 偏低 PAR1 偏低偏高段低段高偏低偏高段低段高 PAR2 ADDR_TABL1 偏高PAR1的偏移地址PAR2的偏移地址ADDR_TABL2 PAR1的偏移地址PAR1的段地址PAR2的偏移地址PAR2的段地址存儲單元分配實例:操作數(shù)常數(shù)代表數(shù)據(jù)字節(jié)數(shù)據(jù)例:DATAB DB 18H,-1,30字?jǐn)?shù)據(jù)例:DATAW DW 18H,2A45H 雙字?jǐn)?shù)據(jù)例:DATAD DD 18H,2F3A124BH表達(dá)式代表內(nèi)存單元地址
10、例: ADDR1 DW NEXT ;存放偏移地址 ADDR2 DD NEXT ;存放偏移和段地址NEXT:MOV AL,34H ;NEXT為一條指令的標(biāo)號段地址高字節(jié)偏移地址高字節(jié)偏移地址低字節(jié)偏移地址高字節(jié)段地址低字節(jié)偏移地址低字節(jié)ADDR1ADDR2字符串存放各字符的ASCII碼例:STR1 DB ABCD STR1 DB A, B, C, D STR1 DB 41H,42H,43H,44H ?只分配單元,不定義初值例:BUF1 DB 5,6,7,? BUF2 DW 56H,78H,?,345FH例:操作數(shù)用復(fù)制操作符DUP,表示操作數(shù)重復(fù)若干次 BUF1 DB 2 DUP(2,3,4)
11、BUF2 DW 1,2,3 DUP(6)FF1E180045001800182A004B123A2FDATABDATABDATAWDATAWDATADDATAD例(字節(jié)或字的賦值):OPER1 DB ?, ?OPER2 DW ?, ? MOV OPER1, 0 ;字節(jié)指令 MOV OPER2, 0 ;字指令結(jié)果為:(AX)=3402H (AL)=34H例(錯誤的賦值語句):OPER1 DB 1, 2OPER2 DW 1234H, 5678H MOV AX, OPER1+1 類型不匹配 MOV AL, OPER2 類型不匹配 修改成:MOV AX, WORD PTR OPER1+1MOV AL,
12、 BYTE PTR OPER2 表達(dá)式賦值偽操作表達(dá)式名 EQU 表達(dá)式ALPHA EQU 9BETA EQU ALPHA+18“ = ” 偽操作 (允許重復(fù)定義)EMP = 7EMP = EMP+1解除定義偽指令PURGE格式:PURGE 功能:解除指定符號的定義例:Y1 EQU 7 PURGE Y1 Y1 EQU 128 EQU與=的差異:同一個程序中 = 可以對一個符號重復(fù)定義,EQU不能對同一個符號重復(fù)定義例:Y1=7 Y1=128 的定義是正確的 Y1 EQU 7 Y1 EQU 128 的定義是錯誤的 地址計數(shù)器與對準(zhǔn)偽操作地址計數(shù)器 $ :保存當(dāng)前正在匯編的指令的地址 ORG $+
13、8 ; 跳過8個字節(jié)的存儲區(qū) JNE $+6 ; 轉(zhuǎn)向地址是 JNE 的地址 +6 JMP $+2 ; 轉(zhuǎn)向下一條指令$ 用在偽操作的參數(shù)字段:表示地址計數(shù)器的當(dāng)前值 例:ARRAY DW 1, 2 , $+4 , 3 , 4 , $+4 00H 01H 00H 02H 00H 7CH 00H 03H 00H 04H 00H 82H ARRAY 007E00780074地址計數(shù)器$的常用使用方法應(yīng)用:常用來確定數(shù)組中元素的個數(shù)例:BUF1 DB 1,2,3,4,5 CNT1 EQU $-BUF1 (常用) BUF2 DW 1,2,3,4,5 CNT2 EQU ($-BUF2)/2 CNT1、C
14、NT2的值分別為數(shù)組BUF1、BUF2中數(shù)據(jù)元素的個數(shù) 例:SEG1 SEGMENT ORG 10 VAR1 DW 1234H ORG 20 VAR2 DW 5678H ORG $+8 VAR3 DW 1357HSEG1 ENDS例: ORG 100HSTART: u ORG 偽操作 定義偏移量表達(dá)式操作符:(1) 算術(shù)操作符: 、 、 、Mod VIDEO_BUF DB 25*80*2 DUP(?)ARRAY DW 1,2,3,4,5,6,7ARYEND DW ?MOV CX, (ARYEND-ARRAY)/2ADD AX, BLOCK+2 ; 符號地址常數(shù) 有意義 ; 時意義不明確MOV
15、AX, BX+1 ; MOV AX, BX+1 ; 寄存器間接尋址OPR1 EQU 25 ;0001001BOPR2 EQU 7 ;00000111BAND AX, OPR1 AND OPR2(2) 邏輯和移位操作符: AND、OR、XOR、NOT、SHL、SHR;AND AX,1MOV AX, 0FFFFH SHL 2;MOV AX,0FFFCH(3) 關(guān)系操作符: EQ、NE、LT、LE、GT、GE計算結(jié)果為邏輯值:真 0FFFFH 假 0000HX: Y: 若 128 (真) 匯編結(jié)果: MOV FID, -1若 128 (假) 匯編結(jié)果: MOV FID, 0MOV FID, (OFF
16、SET Y - OFFSET X) LE 128(4) 數(shù)值回送操作符: OFFSET、SEG、LENGTH、SIZE SIZE 變量功能:LENGTH * TYPEOFFSET / SEG 變量 / 標(biāo)號功能:回送變量或標(biāo)號的偏址 / 段址LENGTH 變量功能:回送由DUP定義的變量的單元數(shù),其它情況回送1TYPE 變量功能:指出變量的類型。字節(jié):TYPE=1,字:TYPE=2,雙字:TYPE=4例:ARRAY DW 100 DUP (?)TABLE DB ABCDMOV CX, LENGTH ARRAY ; MOV CX, 100MOV CX, LENGTH TABLE ; MOV CX
17、, 1MOV CX, SIZE ARRAY ; MOV CX, 200MOV CX, SIZE TABLE ; MOV CX, 1(5) 屬性操作符: PTR類型 PTR 表達(dá)式 MOV WORD PTR BX, 5PTR運算符實例 用于暫時改變變量或標(biāo)號的原有屬性。格式為: 新屬性 PTR 表達(dá)式例:F1 DW 1234H MOV AL,BYTE PTR F1 ;AL=34H例:F2 DB 23H,56H,18H MOV BX,WORD PTR F2 ;BX=5623H例:CALL DWORD PTR BX ;遠(yuǎn)程調(diào)用匯編語言源程序結(jié)構(gòu) 完整段定義結(jié)構(gòu):用段定義偽指令,對用到的邏輯段分別定義
18、典型的結(jié)構(gòu):數(shù)據(jù)段名 SEGMENT 數(shù)據(jù)段名 ENDS堆棧段名 SEGMENT 堆棧段名 ENDS代碼段名 SEGMENT ASSUME START:段地址裝填 MOV AH,4CH INT 21H代碼段名 ENDS END START例:求字存儲單元中兩個數(shù)之差,結(jié)果存入下一個相鄰的字單元中。DATA SEGMENT BUF DW 3483H,4596H RES DW ? DATA ENDSSTACK SEGMENT STACK STACK STA DW 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE.DS:DATASTART: MOV AX
19、,DATA MOV DS,AX MOV AX,BUF SUB AX,BUF+2 MOV RES,AX MOV AH,4CH INT 21H CODE ENDS END START例:三個數(shù)相加并把結(jié)果存放在SUM單元中 DATA SEGMENT BUF DB 35H,78H,0A5H SUM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ASUM PROC FAR START:PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX程序段前綴結(jié)構(gòu)含義:把整個程序定義成一個FAR型過程 MOV AL,0 MOV SI,OFFSET BUF ADD AL,SI INC SI ADD AL,SI INC SI ADD AL,SI MOV SUM,AL RET ASUM ENDP CODE ENDS END STARTEXE文件:分別定義了數(shù)據(jù)段,代碼段和堆棧段COM文件:只定義了一個段.1. 程序運行步驟及生成的文件myfile.asm編輯程序匯編程序連接程序myfile.crfot
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年五年級數(shù)學(xué)下冊 五 分?jǐn)?shù)除法練習(xí)五說課稿 北師大版001
- Unit 3 Amazingt animals Part A Letters and sounds(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- Unit 3 Weather B learn(說課稿)-2023-2024學(xué)年人教PEP版英語四年級下冊
- 2023八年級數(shù)學(xué)上冊 第15章 數(shù)據(jù)的收集與表示15.1數(shù)據(jù)的收集 1數(shù)據(jù)有用嗎說課稿 (新版)華東師大版
- 2023八年級道德與法治上冊 第二單元 遵守社會規(guī)則 第三課 社會生活離不開規(guī)則第2課時 遵守規(guī)則說課稿 新人教版
- 2024八年級英語下冊 Unit 1 Spring Is ComingLesson 4 The Spring City說課稿(新版)冀教版
- 17 要是你在野外迷了路(說課稿)-2023-2024學(xué)年統(tǒng)編版語文二年級下冊
- 2025回遷房買賣合同模板
- 2025勞動合同書的范本
- Unit 8 What's his job單元整體(說課稿)-2024-2025學(xué)年接力版(2024)英語三年級上冊
- 綠色能源項目融資計劃書范文
- 大樹扶正施工方案
- 《造血干細(xì)胞移植護(hù)理》課件
- 課題申報參考:全齡友好視角下的社區(qū)語言景觀評估及空間優(yōu)化研究
- 中央2025年公安部部分直屬事業(yè)單位招聘84人筆試歷年參考題庫附帶答案詳解
- 五年級下冊語文四大名著??贾R點
- 光伏發(fā)電項目施工組織設(shè)計方案及技術(shù)措施
- 2025年1月日歷表(含農(nóng)歷-周數(shù)-方便記事備忘)
- 2024年同等學(xué)力人員申請碩士學(xué)位英語試卷與參考答案
- 臨床用血管理培訓(xùn)
- 介入手術(shù)室護(hù)理風(fēng)險
評論
0/150
提交評論