請問彙編中保護psp偏移地址和保護返回的dos地址是什麼意思?還有什麼是dos呼叫

2023-01-15 01:05:54 字數 3070 閱讀 6878

1樓:匿名使用者

program segment prefix ,簡稱psp(程式段的字首)

當輸入一個外部命令或通過exec子功能(系統功能呼叫inf 21h的子功能號為4bh)載入一子程式時,command確定當時記憶體可用空間的最低端作為程式段起點。在程式所佔記憶體空間的前256個位元組中,系統會為程式建立程式的字首(psp)的資料區,dos要利用psp來和被載入程式進行通訊;psp內有程式返回、程式檔名等資訊,可以通過研究psp定位檔名資訊,進而獲取檔名。 從這段記憶體區的256位元組處開始(在psp的後面),將程式裝入,程式的地址被設為sa+10h:

0 (其中sa為系統為程式分配記憶體的起始位置的段地址即當前暫存器ds的內容); (注意:psp區和程式區雖然實體地址連續,卻有不同的段地址。)

該psp中包含以下三部分資訊:

(1)供被載入程式使用的dos入口,如psp+0、+2、+5和+2ch欄位;

(2)供dos本身使用的dos入口,如psp+0ah、+0eh、+12h和+2ch欄位;

(3)供被載入程式使用傳遞引數,如psp+5ch,+6ch和80h欄位。

保護返回dos地址是說你在編寫程式時,在程式結束後需要你來返回到dos系統中,這是因為dos是單任務作業系統,一次只能執行一個程式,具體操作就是使用4ch功能呼叫,如

mov ah,4ch

int 21h

至於dos功能呼叫比如上邊的int 21h 就是一個系統功能呼叫,意思是說有人提前編號的一些功能如int 21h 的9號功能呼叫能夠輸出字串,

具體:buff db "this is hello world!"

mov dx,offset buff

mov ah,9h

int 21h

程式就可以輸出「this is hello world!」

就相當於windows的api 和c語言中的printf函式,就是呼叫系統函式的意思

2樓:匿名使用者

這個還真不知道啊!如果你也玩真三國無雙,就交流交流

組合語言的dos系統psp段偏移地址

3樓:匿名使用者

sa+10h:0 段地址多10h,就是多100h位元組(段地址*16+偏移地址),轉換成十進位制就是256位元組

4樓:可軒

在256位元組的psp之後,將程式裝入,程式的地址被設為sa+10h:0

(其中sa為系統為程式分配記憶體的起始位置的段地址,即當前暫存器ds的內容);

(注意:psp區和程式區雖然實體地址連續,卻有不同的段地址。)

組合語言中轉移的偏移地址是什麼意思

5樓:

舉個例子,你要告訴別人你藏的東西埋在樹林裡哪個地方,會這麼說: 從這兒過去,第5棵大樹再向前2米。

這裡,「第5棵大樹」是一個粗的框架,「向前2米」則是在這個框架內以框架為基準的一個偏移量。

8086/8088 cpu 訪問記憶體時,記憶體地址由兩個十六位的二進位制數構成,即:段地址+偏移地址。

段地址就是上面例子中的框架,偏移地址就是框架內相對框架基準的一個區域性偏移量。

「段地址+偏移地址」這種地址表示方式,稱為邏輯地址表示。若要轉換成真實的記憶體實體地址,方法是:段地址x16+偏移地址。

8086/8088中之所以要用邏輯地址,是因為實體地址的長度(20位)超過了處理器的字長(16位),無法一次完整表示,不得不分成兩部分。同時這樣處理還帶來了可以方便程式動態記憶體定位的好處。

6樓:匿名使用者

就是轉移時目標地址相對現在地址的偏移量啊

組合語言中proc far是什麼意思

7樓:

你說的大概是這麼一種程式框架:

main proc far

push ds

xor ax, ax

push ax

......

retmain endp

end main

這是一種最原始的dos下exe程式的框架。

那時候,dos的版本很低,dos還沒有提供4ch號dos功能呼叫,結束程式只能用int 20h完成。

而 int 20h結束程式要求執行時cs指向程式段字首(psp)所在的段地址。

所以,程式需要將主程式定義成遠呼叫過程(proc far),這樣就會將 ret指令彙編成遠呼叫返回(retf)。而**開始的三條指令是將psp段地址入棧,再將0入棧。這樣,執行ret的時候就會執行到psp段偏移地址為0處的一條int 20h指令,保證正確返回dos。

後來稍高一點版本的dos有了4ch號功能呼叫,就不需要這種程式框架了。

教科書上很多程式是抄來的,所以人們還常常會看到這種早就過時被淘汰了的**。

8樓:匿名使用者

是指函式的範圍吧,就像跳轉指令有jmp和ljmp他們的跳轉範圍不一樣

如果proc far的話,印象裡函式的位置在2k外什麼的

9樓:匿名使用者

proc是子程式定義偽指令, far是該子程式的屬性,決定呼叫程式和子程式是否在同一**段如下:為子程式定義及說明 子程式名 proc near ( 或 far ) …… ret子程式名 endp 子程式名為符合語法的識別符號near屬性(段內近呼叫): 呼叫程式和子程式在同一**段中,只能被相同**段的其他程式呼叫;far屬性(段間遠呼叫):

呼叫程式和子程式不在同一**段中,可以被相同或不同**段的程式呼叫.

10樓:nix張

使用proc far定義的函式可被**段外的函式呼叫

相當於c中的extern吧

組合語言中有效地址和偏移地址的區別?

11樓:傳說西西里

在80x86裡,把運算元的偏移地址稱為有效地址即「ea」

表示式為:ea=基址+(變址*比例因子)+位移量。

12樓:匿名使用者

偏移地址就是相對位移

怎樣在滑冰的過程中保護自己,輪滑過程中怎樣安全保護自己

初次上冰前先要佩戴護肘 護膝 手套,頭盔等防護用具,選擇好合適的冰鞋。a 穿冰鞋 初學滑冰的人穿冰鞋時,前兩三個釦眼的鞋帶可系得稍微鬆一點兒,後面的鞋帶要繫緊,腳腕子在鞋裡不晃動,才好向兩側傾斜使勁蹬冰。b.著裝要點 初學滑冰的人應穿長袖衣褲,戴上手套,以免摔倒時擦傷 兒童可以戴上護膝 護肘 頭盔等...

請問此彙編程式如何做到螢幕顯示

我除錯了能用,你自己拿去除錯了看下 幫你加了輸出語句 data1 segment x dw 2 y dw 4 result dw data1 ends stack1 segment para stackdw 20 dup 0 stack1 ends code segment assume cs co...

請問用PS怎麼做這種效果,請問用PS怎麼做這種效果?

我可以很負責的告訴樓主 這個不是單一的ps或者ai軟體做的 因為那是非常版耗時間 要耐心的一權件事 有人要用單一的ps 或者ai做的話也是磨練技術 一般情況下使用3d軟體做的白模稿子 房子就是白模型的 上的顏色 然後結合ps等修圖軟體美化效果 我想這兩種一點點畫都挺複雜的,不如用3d建模和粒子特效進...