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

正文內(nèi)容

第3章匯編語言程序格式-文庫吧

2025-09-07 13:41 本頁面


【正文】 匯編程序會根據(jù)數(shù)據(jù)所在的邏輯段,在需要時自動插入段超越前綴。這是 ASSUME偽指令的主要功能。 14 ? ASSUME偽指令并不為段寄存器設(shè)定初值,所以在代碼段中還必須把段地址裝入相應(yīng)的段寄存器中。例如:定義數(shù)據(jù)段段名為 DATA,則需使用 MOV指令對 DS段寄存器進行賦值。 MOV AX, DATA MOV DS, AX ? 如果程序中有堆棧段,也需要把地址裝入 SS中 ? 代碼段不需要這樣做,代碼段的這一操作是在程序初始化時完成的。 15 例:完整的段定義偽操作 data_1 segment ? data_1 ends data_2 segment ? data_2 ends code segment assume cs:code,ds:data_1,es:data_2 start: mov ax,data_1 mov ds,ax mov ax,data_2 mov es,ax ? code ends end start 16 (1)MODEL偽操作 格式: .MODEL memory_model[,model options] ? 用來表明存儲模型,即用來說明在存儲器中是如何安放各個段的. ? 存儲模型 memory model決定一個程序的規(guī)模,確定進行子程序調(diào)用、指令轉(zhuǎn)移和數(shù)據(jù)訪問的缺省屬性 ? MASM有 7種不同的存儲模式: ① TINY ② SMALL ③ COMPACT ④ MEDIUM ⑤ LARGE ⑥ HUGE ⑦ FLAT 17 ? T iny 微型模型是 MASM ,用于創(chuàng)建 COM類型程序。 用微型模型編寫匯編語言程序時,所有的段地址寄存器都被設(shè)置為同一值,這意味著代碼段、數(shù)據(jù)段、堆棧段都在同一個段內(nèi),不大于 64KB;訪問操作數(shù)或指令都只需要使用 16位偏移地址。一般用于小程序。 ? S mall 小型模型是最常用的一種模型。在小型模型下,一個程序至多只能有一個代碼段和一個數(shù)據(jù)段,每段不大于 64KB。 這里的數(shù)據(jù)段指數(shù)據(jù)段、堆棧段和附加段的總和,它們共用同一個段基址,總長度不超過64KB;訪問操作數(shù)或指令都只需要使用 16位偏移地址;代碼和數(shù)據(jù)都是近訪問的,小模型下程序的最大長度為 128KB 18 ? C ompact 緊湊模型適合于數(shù)據(jù)量大但代碼量小的程序。在該 模型下,代碼段被限制在一個不大于64KB的段內(nèi);而數(shù)據(jù)段則可以有多個,超過 64KB。 代碼是近訪問的,而數(shù)據(jù)則可為遠訪問的。 ? M edium 中型模型是與緊湊模型互補的模型,適合于數(shù)據(jù)量小但代碼量大的程序。中型模式的代碼段可以超過 64KB,有多個;但數(shù)據(jù)段只能有一個不大于 64KB的段。數(shù)據(jù)是近訪問,而代碼可遠訪問。 ? L arge 大型模式允許的代碼段和數(shù)據(jù)段都有多個,都可以超過 64KB;但全部的靜態(tài)數(shù)據(jù)(不能改變的數(shù)據(jù))仍限制在 64K字節(jié)內(nèi) .數(shù)據(jù)和代碼都可以遠訪問。 19 ? H uge 巨型模型與大型模型基本相同,只是靜態(tài)數(shù)據(jù)不再被限制在 64K字節(jié)之內(nèi)。 ? F lat 平展模型用于創(chuàng)建一個 32位的程序,它只能運行在 32位 x86 CPU上。 DOS下不能使用FLAT模型,而編寫 32位 Windows WindowsNT的程序時,必須采用 FLAT模型。 ? DOS下編程可選擇前六種模型,一般可以選用SMALL模型, TINY模式產(chǎn)生 COM程序,其他模型產(chǎn)生 EXE程序, FLAT模型只能用于 32位程序。 20 ? Model options允許用戶指定三種選項:高級語言接口、操作系統(tǒng)和堆棧距離。 高級語言接口選項是指該匯編語言程序作為某一種高級語言程序的過程而為該高級語言程序調(diào)用時,應(yīng)該用C等來說明。 操作系統(tǒng)選項是要說明程序運行于哪個操作系統(tǒng)之下,可用 OS_DOS或 OS_OS2來說明,默認是 OS_DOS。 堆棧距離選項可用 NEARSTACK或FARSTACK來說明,基中 NEARSTACK是指堆棧段和數(shù)據(jù)段組合到一個 DGROUP段中,而FARSTACK是指堆棧段和數(shù)據(jù)段并不合并。 例如: .MODEL SMALL,C .MODEL LARGE,OS_DOS 21 (2)簡化的段定義偽操作 簡化段定義偽指令指明一個邏輯段的開始,同時自動結(jié)束前面的一個段。采用簡化段定義偽指令前,需有 .model語句。常用: .STACK [大小 ] ;堆棧段開始 .DATA ;數(shù)據(jù)段開始 .CODE [段名 ] ;代碼段開始 .STACK [大小 ] 堆棧段偽指令 .STACK創(chuàng)建一個堆棧段,段名是: stack,它的參數(shù)指定堆棧段所占存儲區(qū)的字節(jié)數(shù),默認是 1KB( = 1024 = 400h字節(jié)) 22 .DATA 數(shù)據(jù)段偽指令 .data創(chuàng)建一個數(shù)據(jù)段,段名是:_DATA。它用于定義具有初值的變量,當(dāng)然也允許定義無初值的變量。 無初值變量可以安排在另一個段中,它用 .data?偽指令創(chuàng)建,數(shù)據(jù)段名是: _BSS。 .const偽指令用于建立只讀的常量數(shù)據(jù)段(段名:CONST) .CODE [段名 ] 代碼段偽指令 .code創(chuàng)建一個代碼段,它的參數(shù)指定該代碼段的段名。如果沒有給出段名,則采用默認段名: 在 TINY、 SMALL、 COMPACT和 FLAT模式下,默認的代碼段名是: _TEXT; 在 MEDIUM、 LARGE和 HUGE模式下,默認的代碼段名是:模塊名 _TEXT。 23 (3)與簡化段定義有關(guān)的預(yù)定義符號 使用簡化段定義,各段名稱和其他用戶所需的信息可以使用 MASM預(yù)定義符號,例如: @data表示由 .data等定義的數(shù)據(jù)段的段名。 (4)簡化段定義舉例 .MODEL SMALL .STACK 100H .DATA
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1