freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

匯編語言概述32匯編語言程序結(jié)構(gòu)與語句格式33偽指令-文庫吧資料

2025-07-25 21:10本頁面
  

【正文】 文件,不可執(zhí)行。 列表偽指令就是用來控制上述兩種文件的輸出格式和方式的, 具體格式及功能見教材。 列表偽 指令 語句 匯編程序在對源程序進行匯編時,除可產(chǎn)生 目標代碼程序 (.OBJ)外,還可產(chǎn)生一個 列表文件 (.LST)和一個 交叉參考列表文件 (.CRE), 它們均能被顯示或打印,便于程序調(diào)試。 尖括號不能省 IFNB IFNB〈 參數(shù) 〉 參數(shù)不為空格 , 則條件為真 。 條件匯編偽指令語句 功能: 當條件為真時執(zhí)行匯編語句序列 1, 否則執(zhí)行匯編語句序列 2。為說明性語句,其功能由匯編程序?qū)崿F(xiàn)。 ? 引入宏操作并不會在執(zhí)行目標代碼時增加額外的時間開銷,而過程調(diào)用會延長目標程序的執(zhí)行時間(因為要保護和恢復現(xiàn)場)。 ? 宏調(diào)用并沒有縮短目標代碼的長度,目標程序占用的內(nèi)存空間不因宏操作而減少。 過程和宏定義偽指令語句 例:用宏指令定義兩個字操作數(shù)相乘,得到一個 16位的第三個操作數(shù)作為結(jié)果 MULTIPLY MACRO OPR1,OPR2,RESULT PUSH DX ; 保存 DX原值 PUSH AX ; 保存 AX原值 MOV AX, OPR1 ; 取第一個操作數(shù),存在 AX中 IMUL OPR2 ; 與第二個操作數(shù)相乘 MOV RESULT, AX ; 結(jié)果存入結(jié)果變量中 POP AX ; 恢復 AX原值 POP DX ; 恢復 DX原值 ENDM 宏調(diào)用: MULTIPLY CX, VAR, XYZ[BX] ; 第一次宏調(diào)用 MULTIPLY 240, BX, SAVE ; 第二次宏調(diào)用 宏展開: 1 PUSH DX 1 PUSH AX 1 MOV AX,CX ; 第一個操作數(shù)在 CX中 1 IMUL VAR ; 第二個操作數(shù)是變量 VAR 1 MOV XYZ[BX], AX ; 結(jié)果存入實參 XYZ[BX] 1 POP AX 1 POP DX . . 1 PUSH DX 1 PUSH AX 1 MOV AX,240 ; 第一個操作數(shù)是立即數(shù) 240 1 IMUL BX ; 第二個操作數(shù)在 BX中 1 MOV SAVE, AX ; 結(jié)果存入變量 SAVE 1 POP AX 1 POP DX 63 因此適用場合不同 :當程序執(zhí)行速度比內(nèi)存容量更重要時,或者要調(diào)用的程序段較短且調(diào)用的次數(shù)不太頻繁時,適于選用宏調(diào)用技術(shù),反之則宜用過程調(diào)用。 ③宏體可以是匯編語言所允許的任意指令和偽 指令語句序列,它決定了宏的功能。 ②形式參數(shù)表是用逗號 (或空格、或制表符 )分 隔成一個或多個形式參數(shù),它是可選項。 . . . 過程和宏定義偽指令語句 60 ④宏經(jīng)定義后,在程序中就可以通過宏名對它進行任意次的調(diào)用,但宏定義必須放在第一條調(diào)用它的指令之前。宏定義結(jié)束 功能: 定義一個宏。 說明: 59 格式: 宏名 MACRO [形式參數(shù)表 ] 。 NEAR類型為近, 即可在段內(nèi)使用; FAR類型為遠,可跨段調(diào)用。一個過程可以有多 條 RET指令,至少要執(zhí)行到一條 RET指令。 ENDP指示過程結(jié)束, 但不會產(chǎn)生 HLT或 RET指令。 ⑤過程可以嵌套,嵌套的深度只受堆棧的限制; 過程和段也可以嵌套,但不能交叉嵌套,也不 能交叉覆蓋。 過程體 [RET] … RET 過程名 ENDP 。 功能 : 定義一個過程 (子程序 )。 2)聯(lián)合變量說明與賦初值語句 格式 : 變量名 聯(lián)合名 〈域值表〉 功能 : 定義一個聯(lián)合變量,分配存儲空間并給 它的各域變量賦初值。 功能: 定義一個聯(lián)合的結(jié)構(gòu)模塊。 1)聯(lián)合類型說明語句 (UNION/ENDS) 格式: 聯(lián)合名 UNION 說明: 聯(lián)合名和域由用戶定義。定義后可通過位域名單獨訪問。 1)記錄類型說明語句 (RECORD) 說明: 記錄名和位域名為用戶自定的,但不能與其 它名相同;域?qū)挶硎鞠鄳?yīng)位域的位數(shù),必須 是常數(shù);表達式為任選項,若被選,則表示 相應(yīng)位域的初值,否則初值為 0。需特別說明 的是,域值表為可選項,如省略時,其值為 0。記錄可用于定義一個字節(jié)、字或雙字的記錄變量集合,在這些集合中,同一字節(jié)、字或雙字的不同位可能代表不同的意義。 如果某域的初值與結(jié)構(gòu)類型說明時的相同,則相應(yīng)位置可為空,但逗號不能??;若所有域的初值都采用結(jié)構(gòu)類型說明時的初值,則域值表可省略,只寫一個尖括號 〈〉 即可。 格式: 結(jié)構(gòu)名 STRUC (結(jié)構(gòu)體 ) ;由數(shù)據(jù)定義語句構(gòu)成 結(jié)構(gòu)名 ENDS . . . next 52 結(jié)構(gòu)性數(shù)據(jù)偽指令語句 ? 2)結(jié)構(gòu)變量說明與賦初值語句 說明: [變量名 ] 結(jié)構(gòu)名 〈 [域值表 ]〉 格式: 功能: 定義一個結(jié)構(gòu)變量,并對其分配存儲空間和賦初值。結(jié)構(gòu)是多字節(jié)自定義數(shù)據(jù)結(jié)構(gòu), 其最小域為字節(jié),最大長度不限,可放在 數(shù)據(jù)段前面。 字節(jié)指令 , 。 字指令 , 。 對標號、操作碼或過程,其類型為 NEAR、 FAR; 對變量,其類型為 BYTE、 WORD、 DWORD、 FWORD、 QWORD或 TBYTE。 符號 /數(shù)據(jù) /標號偽指令語句 49 說明: LABEL偽指令提供了另一種定義標號或變量名 的方法,但它并不為符號名分配存儲空間。 ●給變量賦初值可以賦確定的值 ,也可以賦不確定的值 (用 ?表示 )。 數(shù)據(jù)類型 —— 字節(jié) /字 /雙字 /長字 /四字 /十字節(jié) 偏移量 段基址 說明: 48 ●確定數(shù)可以是整數(shù)、浮點數(shù) (只允許 DD、 DQ和DT偽指令 ,并只用于 80486和 80387/80287協(xié)處理器上 )、字符、字符串或表達式。 例如, TMP EQU 5 TMP EQU TMP+1 ? TMP = 5 TMP = TMP+1 ? 47 符號 /數(shù)據(jù) /標號偽指令語句 ●與數(shù)據(jù)項相聯(lián)系的符號名稱為變量。 1)等值語句 (EQU) EQU還可給表達式賦予一個名字, EQU的用法舉例如下: DATA EQU HEIGHT + 12 ALPHA EQU 7 BETA EQU ALPHA2 ADDR EQU VAR + BETA B EQU [BP + 8] P8 EQU DS:[BP + 8] 注意: 在 EQU語句的表達式中,如果有變量或標號的表達式,則在該語句前應(yīng)該先給出它們的定義。 格式: 符號名=表達式 2)等號語句 (= ) 說明: EQU語句不能重新定義,使用時必 須先賦值。 4)公用符號說明語句 (COMM) 格式: COMM[NEAR/FAR] 符號名 :尺寸 [:元素數(shù) ],… 功能: 將語句中的符號名說明為公用符號,公用符 號既是全局的又是外部非初始化的。 2)外部符說明語句 (EXTRN) 格式: EXTRN 符號名 1:類型 [,符號名 2:類型 ,… ] 功能: 本語句中指定的符號名是在其它模塊中用 PUBLIC偽指令語句定義過的。 1)模塊開始語句 (NAME) 格式: NAME [模塊名 ] 功能: 表示源程序開始并指出模塊名 說明: 本語句一般可省略 2)模塊結(jié)束語句 (END) 格式: END [標號 /過程名 ] 功能: 表示源程序到此結(jié)束,并可指 出程序的啟動地址 說明: 一個源程序必須有且只能有一個 END 語句來指出源程序文件的結(jié)束。 當 $用在偽指令的參數(shù)字段 時,則和它用在指令中的情況不同,它所 表示的是地址計數(shù)器的當前值 。在這里,$ + 6必須是另一條指令的首地址。 程序結(jié)構(gòu)偽指令語句 back 41 程序結(jié)構(gòu)偽指令語句 back 地址計數(shù)器$ 匯編語言允許用戶直接用$來引用地址計數(shù)器的值,例如指令: JMP $ + 6 它的轉(zhuǎn)向地址是 JMP指令的首地址加上 6。偏移地址可寫成表 達式形式,但其取值范圍在 0~ 65535之間, 通常不必使用該語句,只在需要指定存儲 空間或保留一段存儲空間時才使用它。 程序結(jié)束 back 40 (ORG) 格式: ORG 偏移地址 ORG $ + 偏移地址 功能: 該偽指令以其指定的偏移地址或由 $給出 的當前地址加上指定的偏移地址作為當前 開始分配和使用的偏移地址。 數(shù)據(jù)段地址 MOV DS, AX 。 定義代碼段 START: 。 定義堆棧段及其大小 .DATA 。用于與高級語言程序連用。用于與高級語言程序連用。 初始化遠程 數(shù)據(jù)段語句 .FARDATA[名字 ] 定義一個遠程數(shù)據(jù)段。該段是近程的 ,用于與高級語言程序連接。當用于與高級語言程序連接時 ,其數(shù)據(jù)空間只能用 ?定義 ,表示不賦初值。當用于與高級語言程序連接時 ,其數(shù)據(jù)空間要賦初值。(SP)=長度 ,如省略長度 ,則 (SP)=1024。如有多個代碼段,要用名字區(qū)別。數(shù)據(jù)與代碼均允許為遠程 ,且數(shù)據(jù)語句所占內(nèi)存也可大于 64KB。但任一個數(shù)據(jù)段不可超過 64KB。 LARGE 大模式。 COMPACT 壓縮模式。 MEDIUM 中模式。 說明: 程序結(jié)構(gòu)偽指令語句 back 內(nèi)存模式類型 內(nèi)存模式 說 明 SMALL 小模式。 本語句一般放在用戶程序中其它簡化段定義語句前。 程序結(jié)構(gòu)偽指令語句 back 36 ②內(nèi)存模式語句 (.MODEL) 格式: .MODEL 模式類型 [,高級語言 ] 功能: 指定數(shù)據(jù)和代碼允許使用的長度 [高級語言 ]是可選項,可使用 C、 BASIC、 FORTRAN等關(guān)鍵字來指定與哪種高級程序設(shè)計語言接口,還可用關(guān)鍵字 OS_OS2或 OS_DOS告訴 MASM使用的是哪種操作系統(tǒng)。 程序結(jié)構(gòu)偽指令語句 back 35 2)簡化段定義偽指令 (適用于 ) ① 段次序語句 (DOSSEG) 格式: DOSSEG 功能: 各段在內(nèi)存的順序按 DOS段次序約定排列。 本語句可使定義在源程序中不同類型的段運行時共用同一個段寄存器,但這些段仍為獨立的段。 說明: 組名是指出組的始址的一種符號,必須唯一,不能與任何標號、段名及變量等同名。 ASSUME的參數(shù) NOTHING表示取消以前指定的 段寄存器的作用。 程序結(jié)構(gòu)偽指令語句 back 33 ②段寄存器說明語句 (ASSUME) 格式: ASSUME 段寄存器:段名 /組名 [,段寄存 器:段名 /組名, … ] 功能: 說明源程序中定義的段或組由哪個段寄存 器去尋址。 有兩種字長選擇: USE16該段字長為 16位,按 16位方式尋址, 最大段長為 64KB USE32該段字長為 32位,按 32位方式尋址, 最大段長為 4GB 字長選擇缺省,則在使用 .386/.486偽指令 時默認為 USE32。 31 back 32 ?字長選擇:用于定義段中使用的偏移地址和寄 存器的字長。標號 EQUIPMENT的 。段地址為 0 ORG , 410H 。一般在 AT類型的段中不定義指令或數(shù)據(jù),只說明一個
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1