匯編語言程序格式.ppt_第1頁
匯編語言程序格式.ppt_第2頁
匯編語言程序格式.ppt_第3頁
匯編語言程序格式.ppt_第4頁
匯編語言程序格式.ppt_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、4.1 匯編程序功能 4.2 偽操作 4.3 匯編語言程序格式 4.4 匯編語言程序的上機(jī)過程,第四章 匯編語言程序格式,4.1 匯編程序的功能,匯編語言 源文件(.ASM),匯編程序 (MASM或ASM),目標(biāo)代碼文件.BOJ,列表文件.LST,交叉索引文件.CRF,翻譯,連接程序 LINK,. EXE 文件,編輯程序 輸入,EDIT、PE、ED,可直接執(zhí)行,連接目標(biāo)文件、庫件和其它目標(biāo)文件,匯編程序的功能: 匯編程序?qū)υ闯绦蜻M(jìn)行兩遍掃視 1、檢查源程序 2、測出源程序中的語法錯(cuò)誤,并給出錯(cuò)誤信息。 3、產(chǎn)生目標(biāo)程序,也可給出列表程序和交叉索引程序 4、擴(kuò)展宏指令,4.2 偽操作(偽指令),

2、完成處理器選擇、定義程序模塊、定 義數(shù)據(jù)、分配存儲(chǔ)區(qū)、指示程序結(jié)束等,4.2.1 處理器選擇偽操作,. 8086 ;選擇8086指令 . 286 ;選擇80286指令 . 286P ;選擇8086指令 . 386 ;選擇保護(hù)方式下的80286指令 . 386P ;選擇保護(hù)方式下的80386指令 . 486 ;選擇80486指令 . 486P ;選擇保護(hù)方式下的80486指令 . 586 ;選擇Pentium指令系統(tǒng) . 586P ;選擇保護(hù)方式下的Pentium指令系統(tǒng),缺省值,段定義的一般格式:, SEGMENT 定位類型組合類型使用類型類別, ENDS,段開始語句,段結(jié)束語句,例:一個(gè)簡單

3、的程序段 CODE SEGMENT MOV AX,0 CODE ENDS,1、完整的段定義偽指令 SEGMENT,4.2.2 段定義偽操作, 定位類型(align_type),定位類型指出了對當(dāng)前段起始地址的要求,有4個(gè)選項(xiàng),PAGE 指定起始地址的低8位是0,即其值能被256整除(稱頁邊界) PARA 指定起始地址的低4為是0,即其值能被16整除(稱段邊界) WORD指定起始地址的最低位是0,即其值能被2整除(稱為字邊界) BYTE 指定起始地址是任意值 DWORD其值能被4整除(雙字邊界),缺省定位,定位類型是用來確定程序段與程序段之間的銜接,如BYTE 使得當(dāng)前段緊接前一段,而PAGE可

4、能導(dǎo)致最大的段間隔, 組合類型(combine_type),組合類型告訴連接程序本段可按某種方式連接,PUBLIC告訴連接程序本段與其它同名同類別 的段連接起來,公用一個(gè)起始點(diǎn)。 STACK 表示是堆棧段,組合類型同上。 NONE 表示本段不與任何段連接。 COMMON表示本段與同名同類別的段共用同一段地址, 即同名同類段相重疊。 MEMORY本段連接時(shí)定位在所有段之上,即高地址處。 AT 表達(dá)式表示本段定位在表達(dá)式值指定的段地址處。,隱含組合類型,一個(gè)源程序至少有一個(gè)堆棧段,返回, 使用類型(use_type),USE16 使用16位尋址方式 USE32 使用32位尋址方式,缺省值,段長度不

5、超過64KB,段長度不超過 4GB, 類別名,類別名是由程序員指定的字符串,沒有給出類別時(shí), 這個(gè)段的類別就為空。,例:某個(gè)源程序,格式:ASSUME 段寄存器:段定義名1,段寄存器:段定義名2, 功能:告訴匯編程序在匯編時(shí),段寄存器的符號基址,段寄存器說明偽指令A(yù)SSUME,4.2.3 程序開始和結(jié)束偽指令,3、 列表偽指令,格式: TITLE 標(biāo)題 ;為列表文件每頁第一行定義標(biāo)題 SUBTTL 小標(biāo)題 ;為列表文件每頁定義小標(biāo)題,大標(biāo)題之后 PAGE 行數(shù),行字?jǐn)?shù);為列表文件定義每頁行數(shù),每行字符數(shù)。,缺省值是66行,80列,NAME、TITLE偽指令不是每個(gè)程序必須的, 視需要而選擇,4

6、.2.4 數(shù)據(jù)定義及存儲(chǔ)器分配偽操作,1、DB定義字節(jié)偽指令,格式:名字 DB 功能:表達(dá)式值或項(xiàng)表中的每一項(xiàng)是一個(gè)字節(jié)數(shù), 它們從符號名地址開始按字節(jié)連續(xù)存放。,例:COUNT DB 100 DB 0DH,0AH, VARW DB ?,6,?,2*3,可以使用重復(fù)操作符DUP如: BUFFER DB 8 DUP(0),2、 DW定義字偽指令,格式:名字 DW 功能:表達(dá)式值或項(xiàng)表中的每一項(xiàng)是一個(gè)字?jǐn)?shù), 它們從符號名地址開始按字連續(xù)存放。,例:FLAG DW 2FCDH,24H DW ?,3、 DD定義四字節(jié)偽指令(雙字),格式:名字 DD 功能:表達(dá)式值或項(xiàng)表中的每一項(xiàng)是四個(gè)字節(jié)數(shù),它們 從

7、符號名地址開始按四字節(jié)從低地址連續(xù)存放。,5、 DT定義10字節(jié)偽指令指令,例:,DAT DB 10,10H WORDD DW 100H,? ARRAY DB 2 DUP(2,3) AAA DD 0FFFDH,DUP可以嵌套如: ARRAY DB 100 DUP(0,2 DUP(1,2),3),變量的類型屬性(type attribute),DAT1 DB 1,5,? DAT2 DW 1234H,? ,符號地址(變量),類型是字節(jié)BYTE,類型是字WORD,屬性操作符,1、PTR,格式: type PTR expression 功能:給已分配的存儲(chǔ)器地址賦予另一種屬性,BYTE、WORD DW

8、ORD、 NEAR、FAR等,;(AX)=0501H ;(BL)=34H,4.2.5 表達(dá)式賦值偽指令EQU,格式: EQU 功能:用符號來代表表達(dá)式的內(nèi)容,1、賦值語句EQU,表達(dá)式可以是常數(shù)、數(shù)值表達(dá)式、字符串、存儲(chǔ)器符號等,例:COUNT EQU 100 ;符號COUNT代表常數(shù)100 BUFF EQU 4*COUNT ;BUFF代表400 HELLO EQU “How are you! ” ;HELLO代表How are you VARW EQU THIS WORD ;變量VARW的類型是字,注意:EQU賦值語句的符號名不能被重新賦值,2、 =等號賦值語句,格式: = 功能:用符號來代

9、表表達(dá)式的數(shù)值,數(shù)值表達(dá)式,4.2.6 地址計(jì)數(shù)器與對準(zhǔn)偽指令,1、地址計(jì)數(shù)器 $,匯編語言用符號“$”表示地址計(jì)數(shù)器的值,例2:“$”在偽指令中的應(yīng)用,DAT SEGMENT DATA1 DB 1,2,3,4,5 CNT1 EQU $-DATA1 DATA2 DW 1,2,3,4,5 CNT2 EQU ($-DATA2)/2 DAT ENDS,CNT1、CNT2的值分別為DATA1、DATA2中數(shù)據(jù)元素的個(gè)數(shù),格式:ORG 功能:把以下語句定義的內(nèi)存數(shù)據(jù)或程序,從表達(dá)式 指定的起點(diǎn)開始連續(xù)存放。,2、ORG 偽指令,3、EVEN對準(zhǔn)偽指令,格式:EVEN 功能:使下一個(gè)字的地址從偶地址開始,

10、4.2.7 基數(shù)控制偽指令,格式:RADIX 表達(dá)式 功能:改變默認(rèn)進(jìn)制數(shù),4.3 匯編語言程序格式,名字項(xiàng),操作項(xiàng),操作數(shù)項(xiàng),;注釋項(xiàng),,,標(biāo)號: 變量,常數(shù) 寄存器 標(biāo)號 變量 表達(dá)式,用來說明 某段程序 的功能或 說明某條 指令的功 能。,表達(dá)式:是由常數(shù)、寄存器、標(biāo)號、變量和 一些操作符組成的式子,有五種操作符,AND、OR、NOT、XOR SHL、SHR,例: 24H OR 0FH=2FH ORG 40H SHL 2,按位運(yùn)算,2、 邏輯與移位操作符,只用于數(shù)字運(yùn)算,100H,4、數(shù)值回送(Value_returning)操作符,TYPE、LENGTH、SIZE、OFFSET、SEG

11、,(1)TYPE 回送類型值,格式:TYPE expression 功能:匯編程序?qū)⒆兞康念愋鸵宰止?jié)數(shù)回送,DB為1 DW為2 DD為4 DQ為8 DT為10 變量如果 是標(biāo)號 NEAR為-1 FAR為-2,(2) LENGTH 回送DUP分配給變量的單元數(shù),格式:LENGTH Variable 功能:匯編程序?qū)⒆兞渴褂肈UP的情況回送,沒使用DUP 回送1,例: FEES DW 100 DUP(1,2) ARRY DW 1,2,3 MOV CX,LENGTH FEES MOV BX,LENGTH ARRY ,匯編后 MOV CX,100,匯編后 MOV BX,1,(3)SIZE 回送分配給變

12、量的字節(jié)數(shù),格式:SIZE Variable 功能:匯編程序回送分配給變量的字節(jié)數(shù),例: FEES DW 100 DUP(0) ARRY DW 1,2,3 MOV CX,SIZE FEES MOV BX,SIZE ARRY ,匯編后 MOV CX,200,匯編后 MOV BX,2,(4)OFFSET 回送變量或標(biāo)號的偏移地址值,格式:OFFSET Variable 或 label 功能:匯編程序?qū)⒆兞炕驑?biāo)號的偏移地址以立即數(shù)回送,例: FEES DW 100 DUP(1,2) ARRY DW 1,2,3 MOV BX,OFFSET ARRY ,相當(dāng)于 LEA BX,ARRY,(5)SEG 回送

13、變量或標(biāo)號的段地址值,格式:SEG Variable 或 label 功能:匯編程序?qū)⒆兞炕驑?biāo)號的段地址以立即數(shù)回送,例: DAT SEGMENT ARRY DW 1,2,3 DAT ENDS CSEG SEGMENT ASSUME DS:DAT,CS:CSEG MOV AX,DAT MOV DS,AX MOV BX,SEG ARRY ,( BX)=(DS),5、屬性操作符,PTR、段操作符、SHORT、THIS、HIGH、LOW、 HIGHWORD、LOWWORD,(1) PTR,格式: type PTR expression 功能:給已分配的存儲(chǔ)器地址賦予另一種屬性,BYTE、WORD D

14、WORD、 NEAR、FAR等,;(AX)=0501H ;(BL)=34H,格式: 段寄存器名直接加在地址操作數(shù)前面以說明所在段 功能:用來表示一個(gè)變量、標(biāo)號或地址表達(dá)式的段屬性,(2) 段操作符,(3)SHORT,格式: SHORT 標(biāo)號 功能:用來修飾 JMP 指令中轉(zhuǎn)向地址的屬性,轉(zhuǎn)向 地址在下一條指令地址的127個(gè)字節(jié)范圍內(nèi),例: JMP SHORT TAG TAG: ,(4)THIS 指定新類型,格式: THIS attribute 或 type 功能:為某個(gè)符號名建立新類型,并 下一個(gè)地址單元的地址相同,例: FIRST EQU THIS BYTE TABLE DW 100 DUP

15、(?) ,FIRST,TABLE,字節(jié)變量,字變量,(5)HIGH和LOW 分離操作符,格式: HIGH 表達(dá)式 功能:接收一個(gè)數(shù)或地址表達(dá)式的高位字節(jié),格式: LOW 表達(dá)式 功能:接收一個(gè)數(shù)或地址表達(dá)式的低位字節(jié),例: CONST EQU 0ABCDH MOV AL,HIGH CONST MOV AH,LOW CONST,匯編后 MOV AL,0ABH MOV AH,0CDH,(6)HIGHWORD和LOWWORD 分離操作符,格式: HIGHWORD 表達(dá)式 功能:接收一個(gè)數(shù)或地址表達(dá)式的高位字,格式: LOWWORD 表達(dá)式 功能:接收一個(gè)數(shù)或地址表達(dá)式的低位字,匯編運(yùn)算符的優(yōu)先級,括

16、號 LENGTH、SIZE PTR、OFFSET、SEG、TYPE、THIS、段操作符 HIGH、LOW *、/、MOD +、- EQ、NE、LT、LE、GT、GE NOT AND OR、XOR SHORT,4.4 匯編語言程序的上機(jī)過程,4.4.1 建立匯編語言的工作環(huán)境,EDIT.COM 或 PE.COM 或 ASM.EXE 或 MASM.EXE LINK.EXE DEBUG.COM EXE2BIN.EXE,小匯編 不支持 宏指令,宏匯編,4.4.2 建立ASM文件,例:請把40個(gè)字母a的字符串從源緩沖區(qū)傳送 到目的緩沖區(qū),4.4.3 用MASM程序產(chǎn)生OBJ文件,MASM 文件名 或 M

17、ASM 文件名;,4.4.4 用LINK程序產(chǎn)生EXE文件,LINK 文件名;,4.4.5 程序的執(zhí)行,文件名,DEBUG程序命令(1),A命令(匯編命令) 格式:A 地址 功能:從指定地址把編語言語句直接匯編入內(nèi)存,2. D命令(顯示命令) 格式:D 地址 或 D 范圍 功能:從指定地址開始顯示內(nèi)存中40字節(jié)的內(nèi)容, 或顯示指定范圍的內(nèi)容,DEBUG中所寫入的數(shù), 直接就是十六進(jìn)制數(shù),DEBUG程序命令(2),G命令(執(zhí)行命令) 格式:G =起始地址斷點(diǎn)地址表 功能:從當(dāng)前地址或指定地址執(zhí)行遇到斷點(diǎn)停止執(zhí)行,R命令(寄存器命令) 格式:R ;顯示所有寄存器的內(nèi)容 R 寄存器名 ;顯示并可修改

18、寄存器的內(nèi)容 RF ;顯示并可修改標(biāo)志寄存器的內(nèi)容,Q命令(停止命令) 格式:Q 功能:退出DEBUG程序,不保存內(nèi)存中調(diào)試的文件,沒有指定,從當(dāng)前IP開始,DEBUG程序命令(3),T命令(跟蹤命令) 格式:T =地址數(shù)值 功能:從當(dāng)前地址或指定地址執(zhí)行一條或指定的條數(shù)指令 并顯示各寄存器的內(nèi)容及下一條要執(zhí)行的指令,U命令(反匯編命令) 格式:U 范圍 或 U 地址 功能:把指定范圍的內(nèi)容反匯編或從指定地址開始反匯 編16條,1. 編輯程序,EDIT 文件名.ASM 回車,在DOS方式下,輸入程序 存盤,上機(jī)步驟:,第五章 循環(huán)與分支程序設(shè)計(jì),5.1 循環(huán)程序設(shè)計(jì) 5.2 分支程序設(shè)計(jì) 5.

19、3 如何在實(shí)模式下發(fā)揮80386及 后繼機(jī)型的優(yōu)勢,DOS系統(tǒng)功能調(diào)用,DOS 系統(tǒng)功能調(diào)用的方法: 1、在AH寄存器中存入所要調(diào)用功能的功能號 2、根據(jù)所調(diào)用功能的規(guī)定設(shè)置入口參數(shù) 3、用INT 21H 指令轉(zhuǎn)入子程序入口 4、取出口參數(shù)歸己用,1. 鍵盤輸入單字符01H號功能調(diào)用,功能:從鍵盤讀一字符,并將該字符回顯在顯示器上 入口參數(shù):無 出口參數(shù):AL=輸入字符的ASCII碼 說明:如果讀到的字符是Ctrl+c或Ctrl+Break則結(jié)束程序,例: MOV AH,1 INT 21H ,2. 鍵盤輸入字符串0AH號功能調(diào)用,功 能:從鍵盤讀一字符串。 入口參數(shù): DS:DX=緩沖區(qū)首址,

20、緩沖區(qū)的第 一個(gè)字節(jié)放緩沖區(qū)最大容量數(shù) 出口參數(shù):接收到的字符串在緩沖 區(qū)中第三個(gè)字節(jié)開始 說 明: 緩沖區(qū)第二個(gè)字節(jié)存放實(shí)際讀入 的字符數(shù)。 字符串以回車結(jié)束 如果輸入字符串超過了緩沖的區(qū)容 量, 超出的部分丟失,同時(shí)響鈴 如果在輸入時(shí)按Ctrl+C或Ctrl+Break, 則結(jié)束程序,例: BUF DB 20 DB ? DB 20 DUP(?) MOV DX,OFFSET BUF MOV AH,0AH INT 21H ,3. 輸出單字符02H號功能調(diào)用,功能:寄存器DL中的字符從屏幕上顯示輸出 入口參數(shù):DL=要輸出字符的ASCII碼 出口參數(shù):無,例: MOV DL,A MOV AH,2

21、 INT 21H ,4. 輸出字符串09H號功能調(diào)用,功 能:將指定緩沖區(qū)中的字符串從屏幕上顯示輸出 入口參數(shù):DS:DX=要輸出字符的首址,字符串以字符 為結(jié)束標(biāo)志 出口參數(shù):無,功 能:從鍵盤上讀一個(gè)字符到AL 入口參數(shù):無 出口參數(shù):AL=讀到字符的代碼,5、無回顯鍵盤輸入單字符08H,6、 返回操作系統(tǒng)4CH號功能調(diào)用,功 能:結(jié)束當(dāng)前正在執(zhí)行的程序,并返回操作系統(tǒng) 入口參數(shù):無 出口參數(shù):無,如:出現(xiàn)提示符C:,例: MOV AH,4CH INT 21H ,程序設(shè)計(jì)步驟, 分析問題、確定算法 根據(jù)算法畫出程序框圖 根據(jù)框圖編寫程序 上機(jī)調(diào)試程序,程序:是計(jì)算機(jī)命令(語句)的有序集合。

22、,匯編語言程序設(shè)計(jì)步驟:,開始,分支,處理,處理,結(jié)束,處理,Y,N,5.1.1 循環(huán)程序的結(jié)構(gòu)形式,循環(huán)控制條件,循環(huán)體,Y,循環(huán)控制條件,循環(huán)體,Y,DO UNTIL 結(jié)構(gòu),DO WHILE結(jié)構(gòu),循環(huán)初始狀態(tài),N,循環(huán)初始狀態(tài),循環(huán)程序舉例,例: 求兩個(gè)多字節(jié)數(shù)之和。 這兩個(gè)數(shù)在10050H 開始的單元中, 連續(xù)存放,低位 在小地址一端, 結(jié)果放在兩個(gè)數(shù) 之后。設(shè)這兩個(gè) 多字節(jié)數(shù)均為 八個(gè)字節(jié)長。,5.1.2 循環(huán)程序設(shè)計(jì)方法,例 5.1 試編制一個(gè) 程序把BX 寄存器內(nèi)的 二進(jìn)制數(shù)用 十六進(jìn)制數(shù) 的形式在屏 幕上顯示出 來,例 5.2 在 ADDR 單元中 存放著數(shù) Y 的地 址,試編制

23、一程 序把 Y 中 1 的個(gè) 數(shù)存入 COUNT 單元中(Y是16位 二進(jìn)制數(shù)),例:5.3 在附加段有一個(gè)首地址 為LIST和未經(jīng)排序的字 數(shù)組,在數(shù)組的第一個(gè) 字中存放著該數(shù)組的長 度,數(shù)組的首地址已存 放在DI寄存器中。AX 寄存器中存放著一個(gè)數(shù)。 要求編一程序,在數(shù)組 中查找該數(shù),如果找到 此數(shù)則把它從數(shù)組中刪 除。,例5.4 將正數(shù) N 插入一個(gè) 已整序的字?jǐn)?shù)組的 正確位置。該數(shù)組 的首地址和末地址 分別為 ARRYHEAD 和ARRYEND, 其中所有的數(shù)均為 正數(shù)且已按遞增的 次序排列。,例 5.5 設(shè)有數(shù)組X和Y。X數(shù)組中有X1,X10;Y數(shù)組中 有Y1,Y10。試編制程序計(jì)算

24、 Z1=X1+Y1 Z5=X5-Y5 Z8=X8-Y8 Z2=X2+Y2 Z6=X6+Y6 Z9=X9+Y9 Z3=X3-Y3 Z7=X7-Y7 Z10=X10+Y10 Z4=X4-Y4,開始,DX=0,測試 邏輯尺第I位的 值,Zi 結(jié)果,DX+1,Xi+Yi,結(jié)束,=0,0,初始化循環(huán)計(jì)數(shù)值CX,XiYi,循環(huán)計(jì)數(shù)值 CX=0?,Y,N,數(shù)組下標(biāo),32 8,84,5.1.3 多重循環(huán)程序設(shè)計(jì),例5.7 有一個(gè)首地址為 A 的 N 字?jǐn)?shù)組, 請編制程序使該 數(shù)組中的數(shù)從大 到小的次序排序,16,84,8,16,32 5,第1遍比較了N-1次,84,5 5 5,8 8,第2遍比較了 N-2次,

25、32 16,16,84 32,第3遍比較了N-3次,第4遍比較了N-4次(1次),共比較了N-1遍,開始,(COUNT1)N-1,(COUNT2)(COUNT1),I0,AiAi+1?,I+1,(COUNT2)1,(COUNT2)=0?,(COUNT1)1,(COUNT1)=0?,結(jié)束,比較遍數(shù),外循環(huán),每遍比較次數(shù),內(nèi)循環(huán),Y,N,N,Y,N,Y,34 ,84,23,18,7,開始,(COUNT1)N,(COUNT2)(COUNT1),I0,AiAi+1?,I+1,(COUNT2)1,(COUNT2)=0?,交換標(biāo)志=0?,結(jié)束,比較遍數(shù),每遍比較次數(shù),Y,N,N,Y,N,Y,交換標(biāo)志=1,

26、交換標(biāo)志=0,(COUNT1)-1,如果為0就結(jié)束,5.2 分支程序設(shè)計(jì),判定條件,語句系列1,語句系列2,Y,N,5.2.1 分支程序的結(jié)構(gòu)形式,判定條件,IF THEN ELSE 結(jié)構(gòu),CASE 結(jié)構(gòu),例5.9 在附加段中,有一個(gè)按從小到大順序排列的無符號數(shù), 其首地址存放在DI寄存器中,數(shù)組中的第一個(gè)單元存 放著數(shù)組長度。在AX中有一個(gè)無符號數(shù),要求在數(shù)組 中查找(AX),如找到則使CF=0,并在SI中給出該 元素在數(shù)組中的偏移地址;如未找到則使CF=1,5.2.2 分支程序設(shè)計(jì)方法,SEARCH,STARTADDR(DI),(SI)=下標(biāo),(SI)取偶,(DI)=(DI)+(SI),(

27、AX)=DI?,(SI)=2 ?,(DI)=(DI)(SI),(SI)取偶,(SI)=(SI)/2,(SI)(DI),(DI) STARTADDR,退出,(SI)=2 ?,(SI)=(SI)/2,CF=1,1,1,=,已知DI存放數(shù)組的開始地址,數(shù)組長度,5.2.3 跳躍表法,例5.10 試根據(jù)AL寄存器中的哪一位為1(從低位到高位)把 程序轉(zhuǎn)移到8個(gè)不同的程序分支去。,5.3 如何在實(shí)模式下發(fā)揮 80386及后繼機(jī)型的優(yōu)勢,5.3.1 充分利用高檔機(jī)的 32位字長特性,Data segment dat1 dd 12345678h dat2 dd 0fedcba98h dat3 dd ? Da

28、te ends Code segment assume ds:data,cs:code Start: mov ax,data mov ds,ax lea si,dat1 lea di,dat2 lea bx,dat3 mov eax,si add eax,di mov bx,eax mov ah,4ch int 21h Code ends end start,5.3.2 通用寄存器可作為指針寄存器,5.3.3 與比例因子有關(guān)的尋址方式,第六章 子程序結(jié)構(gòu),6.1 子程序的設(shè)計(jì)方法 6.2子程序的嵌套 6.3 子程序舉例,6.1 子程序的設(shè)計(jì)方法,6.1.1 過程定義偽指令(PROC ENDP)

29、,功能:定義一個(gè)過程,格式:過程名 PROC 過程屬性 過程名 ENDP,段間為FAR 段內(nèi)為NEAR,用戶定義的,是子程序的符號地址,標(biāo)志著過程的結(jié)束,XXX SEGMENT main proc far call subr1 ret main endp subr1 proc near ret subr1 endp XXX ENDS,XXX SEGMENT main proc far call subr1 ret subr1 proc near ret subr1 endp main endp XXX ENDS,例 6.1 調(diào)用程序和子程序在同一代碼段中,一個(gè)過程,一個(gè)過程,例6.2 調(diào)用過程和 子過程不在 同一個(gè)代碼 段內(nèi),SEGX SEGMENT subt proc far ret subt endp call subt SEGX ENDS SEGY SEGMENT call subt SEGY ENDS,所以過程屬性為FAR,6.1.2 子程序的調(diào)用和返回,CALL 子程序名,匯編程序根據(jù)子程序的屬性, 確定把下一條指令的 IP 入棧, 還是IP和CS入棧保存,RET,返回指令也是由匯編程序根據(jù) 子程序的屬性(FAR或NEAR) 確定堆棧的內(nèi)容彈出到IP, 還是彈出到IP和CS,6.

溫馨提示

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

最新文檔

評論

0/150

提交評論