1樓:匿名使用者
cs、ds、ss 分別是 **段暫存器、資料段暫存器、棧段暫存器。
簡單的8086彙編程式可以直接使用系統棧(或者預設的棧),所以 可以不用 ss 暫存器。
即簡單的程式通常包括一個**段和一個資料段。資料通常放在資料段中,一般只需在程式的開始對資料段暫存器ds賦值(mov ax, seg data/ mov ds,ax),以後ds就不再出現了。但要使用 di 暫存器又沒有定義 es(附加資料段暫存器)時,可以這樣用:
mov ax,ds:[di]。
也就是說: si 應和 ds 暫存器、di 應和 es 暫存器、bp 應和 ss 暫存器 配合使用,當直接使用[si]時即隱含指ds暫存器。否則就要在偏移地址前加字首,如 ds:
[di]。
...........
再多的知識請看相關組合語言的教程吧!
2樓:匿名使用者
組合語言中cs,ds,ss還有一個es定義如下:
cs(code segment):**段暫存器;
ds(data segment):資料段暫存器;
ss(stack segment):堆疊段暫存器;
es(extra segment):附加段暫存器。
當一個程式要執行時,就要決定程式**、資料和堆疊各要用到記憶體的哪些位置,通過設定段暫存器 cs,ds,ss 來指向這些起始位置。通常是將ds固定,而根據需要修改cs。
3樓:北京歡迎你迎你
cs **段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,你一般不能隨意修改它
ss 堆疊段地址 聯合sp定義一個堆疊,一旦你確定了堆疊地址,ss也不能隨便改變了
ds 資料段地址 定義一個資料段
如果你是新手的話,有需要的時候,你可以用ds和es,隨著更加深入的學習你會了解具體怎麼用的。
組合語言中 cs、ds、ss的區別是什麼?
4樓:丶看清就看輕丶
cs:**段暫存器
;ds:資料段暫存器;ss:堆疊段暫存器;當一個程式要執行時,就要決定回程式**、資料答和堆疊各要用到記憶體的哪些位置,通過設定段暫存器 cs,ds,ss 來指向這些起始位置。
通常是將ds固定,而根據需要修改cs。cs **段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,你一般不能隨意修改它ss 堆疊段地址 聯合sp定義一個堆疊,一旦你確定了堆疊地址,ss也不能隨便改變了ds 資料段地址,定義一個資料段如果你是新手的話,有需要的時候,你可以用ds和es,隨著更加深入的學習你會了解具體怎麼用的。
**段暫存器cs:存放當前正在執行的程式**所在段的段基值,表示當前用的指令**可以從該段暫存器指定的儲存器段中取得,相應的偏移值則由ip提供。
資料段暫存器ds:指出當前程式用的資料所存放段的最低地址,即存放資料段的段基值。
堆疊段暫存器ss:指出當前堆疊的底部地址,即存放堆疊段的段基值。
組合語言中 cs,ds,ss,es分別是那些英文單詞的縮寫?
5樓:陳mc樂園
cs: **段暫存器,是 code segment 的縮寫;
ds:資料段暫存器,是 data segment 的縮寫;
ss:堆疊段暫存器, 是 stack segment 的縮寫;
es:附加段暫存器,是 extra segment 的縮寫;
想知道他們怎麼用,就必須瞭解他們的用途。
他們和其他暫存器如何合作,暫存器定址和儲存器定址如何完成?單說這幾個段暫存器,不涉及其他暫存器,是不能真正瞭解掌握他們的。
暫存器是**處理器內的組成部份。
暫存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、資料和位址。在**處理器的控制部件中,包含的暫存器有指令暫存器(ir)和程式計數器(pc)。在**處理器的算術及邏輯部件中,包含的暫存器有累加器(acc)。
暫存器是記憶體階層中的最頂端,也是系統獲得操作資料的最快速途徑。暫存器通常都是以他們可以儲存的位元數量來估量,舉例來說,一個 「8 位元暫存器」或 「32 位元暫存器」。暫存器現在都以暫存器檔案的方式來實作,但是他們也可能使用單獨的正反器、高速的核心記憶體、薄膜記憶體以及在數種機器上的其他方式來實作出來。
暫存器通常都用來意指由一個指令之輸出或輸入可以直接索引到的暫存器群組。更適當的是稱他們為 「架構暫存器」。
例如,x86 指令及定義八個 32 位元暫存器的集合,但一個實作 x86 指令集的 cpu 可以包含比八個更多的暫存器。
暫存器是cpu內部的元件,暫存器擁有非常高的讀寫速度,所以在暫存器之間的資料傳送非常快。
6樓:
ds(data segment):資料段暫存器ss(stack segment):堆疊段暫存器es(extra segment):
附加段暫存器。cs(code segment):**段暫存器
7樓:
cs表示code segment;ds表示data segment;ss表示stack segment;es表示external segment
8樓:北京歡迎你迎你
cs **段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,你一般不能隨意修改它
ss 堆疊段地址 聯合sp定義一個堆疊,一旦你確定了堆疊地址,ss也不能隨便改變了
ds 資料段地址 定義一個資料段
如果你是新手的話,有需要的時候,你可以用ds和es,隨著更加深入的學習你會了解具體怎麼用的。
9樓:匿名使用者
遙無可奈何花落去 有枯
組合語言中cs.ds.es.ss都怎麼用啊
10樓:北京歡迎你迎你
cs **段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,你一般不能隨意修改它
ss 堆疊段地址 聯合sp定義一個堆疊,一旦你確定了堆疊地址,ss也不能隨便改變了
ds 資料段地址 定義一個資料段
如果你是新手的話,有需要的時候,你可以用ds和es,隨著更加深入的學習你會了解具體怎麼用的。
11樓:
簡單地說:
cs **段暫存器;
ds 資料段暫存器;
es 附加段暫存器。(使用時與資料段暫存器基本相同)ss 堆疊段暫存器;
組合語言和反彙編的區別
12樓:好程式設計師
反彙編是分析已經有的程式的過程。
就是看這些程式的彙編**,看看這些程式是怎麼執行的。
因為是逆向過程,所以加了反字。
組合語言中cs和ds有什麼區別?前者是用來放指令的段地址的嗎?後者是資料的段地址的嗎?
13樓:
cs中的內容無法被顯式的更改。
但可以用例如jmp oper ,loop oper,等指令來隱式的更改。(ip)同理。
如果你學過作業系統這門課的話,應該不難理解。
cs中的指令**是(當然也可以有資料)是被存放到系統程序空間裡面的。(程序空間=使用者程序空間+系統程序空間)。
而ds中的資料是被放到使用者程序空間裡的。
指令最少佔用一個位元組。
組合語言中 cs, ds,ss 的區別
14樓:肥仙女
一、暫存器位置不同:
1、cs:**段暫存器;
2、ds:資料段暫存器;
3、ss:堆疊段暫存器。
二、存放位置不同:
1、**段暫存器cs:存放當前正在執行的程式**所在段的段基值。
2、資料段暫存器ds:存放資料段的段基值。
3、堆疊段暫存器ss:存放堆疊段的段基值。
1、cs**段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,不能隨意修改它。
2、ss堆疊度段地址問聯合sp定義一個答堆疊,一旦你確定了堆疊地址,ss也不能隨便改變了。
3、ds資料段地址定義一個資料段。
15樓:匿名使用者
組合語言中cs,ds,ss還有一個es定義如下:
cs(code segment):**段暫存器;
ds(data segment):資料段暫存器;
ss(stack segment):堆疊段暫存器;
es(extra segment):附加段暫存器。
當一個程式要執行時,就要決定程式**、資料和堆疊各要用到記憶體的哪些位置,通過設定段暫存器 cs,ds,ss 來指向這些起始位置。通常是將ds固定,而根據需要修改cs。
16樓:匿名使用者
**段暫存器cs
資料段暫存器ds
堆疊段暫存器ss
主要在**段編寫**
17樓:戲雨南
1.**段暫存器cs:存放當前正在執行的程式**所在段的段基值,表示當前使用的指令**可以從該段暫存器指定的儲存器段中取得,相應的偏移值則由ip提供。
2, 資料段暫存器ds:指出當前程式使用的資料所存放段的最低地址,即存放資料段的段基值。
3, 堆疊段暫存器ss:指出當前堆疊的底部地址,即存放堆疊段的段基值。
18樓:好難搞的
cs **段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,你一般不能隨意修改它
ss 堆疊段地址 聯合sp定義一個堆疊,一旦你確定了堆疊地址,ss也不能隨便改變了
ds 資料段地址 定義一個資料段
如果你是新手的話,有需要的時候,你可以用ds和es,隨著更加深入的學習你會了解具體怎麼用的。
19樓:霹靂遊俠
code segment **段暫存器
data segment 資料段暫存器
堆疊暫存器
請問一下組合語言中cs和ds有啥區別?貌似前者是用來放指令的段地址,後者是資料的段地址?
20樓:北京歡迎你迎你
cs **段地址,聯合ip作為cpu指向當前正在執行的那條指令所使用,你一般不能隨意修改它
ss 堆疊段地址 聯合sp定義一個堆疊,一旦你確定了堆疊地址,ss也不能隨便改變了
ds 資料段地址 定義一個資料段
如果你是新手的話,有需要的時候,你可以用ds和es,隨著更加深入的學習你會了解具體怎麼用的。
21樓:
cs中的內容無法被顯式的更改。
但可以用例如jmp oper ,loop oper,等指令來隱式的更改。(ip)同理。
如果你學過作業系統這門課的話,應該不難理解。
cs中的指令**是(當然也可以有資料)是被存放到系統程序空間裡面的。(程序空間=使用者程序空間+系統程序空間)。
而ds中的資料是被放到使用者程序空間裡的。
指令最少佔用一個位元組。
22樓:匿名使用者
其實暫存器中儲存的都是二進位制
cs:ip 指向的二進位制會被cpu 當做指令而ds 儲存的二進位制會被cpu當做資料
同樣的道理,ss:sp指向棧段的棧頂位置
23樓:來自龍源口脣紅齒白的池杉
計算機內,所有資料都是二進位制資料,不管是資料還是機器指令都是二進位制,也就是說指令和資料在記憶體中是一樣表示的,這樣如果記憶體中存在兩段資料,一段是資料,一段是指令,如果我們指令段的基址寫入cs中那麼計算機就會認為這個段是指令段,反之我們把資料段基址寫入cs中,計算機也會認為資料段是可執行的就會執行,但執行時就會出錯,因為資料段不是我們寫的指令,其結果很難預料,所以計算機分辨指令是根據cs段暫存器來的.區別就看你把段地址裝入哪個暫存器中。
關於組合語言,關於組合語言中的LOOP指令
簡單的說就是 如果時間充裕 先學彙編,因為彙編會極大的幫助你認識晶片的內部,具體在執行的時候它是怎麼工作的。如果時間不充裕 先學c,因為c編寫語言只需要極少的對晶片的瞭解即可。比較 組合語言 程式 效率最高。通俗的說,寫出來的東西佔空間小。缺點 開發週期較長 c語言 程式 效率比較高。通俗的說,佔的...
組合語言中CY能自動清零嗎,組合語言中,出棧後出棧的那個數值在棧中會被清零嗎
cy自動清零,什麼意思?通過相關指令的執行,cy會被清零 組合語言中,出棧後 出棧的那個數值在棧中會被清零嗎?不會被清零。組合語言中,出棧是通過pop指令來實現的,首先看一下intel手冊中對於pop指令的描述 大致意思如下 pop指令從棧頂載入值到目標運算元指定的位置,然後增加棧頂指標。目標運算元...
組合語言中ah和AH代表什麼,請問組合語言中001AH加0026H是多少怎麼算的A和H分別代表什麼呀還有CH什麼意思
ah和ah是一個意思,只是大小寫區分 意思是ax 16位 暫存器的高八位,低八位是al暫存器 al邏輯運算 這部分指令用於執行算術和邏輯運算,包括加法指令add adc 減法指令sub sbb 加一指令inc 減一指令dec 比較操作指令cmp 乘法指令mul imul 除法指令div idiv 符...