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建模和粒子特效進...