組合語言中怎麼樣定義堆疊段和資料段

時間 2021-06-19 16:16:19

1樓:匿名使用者

stacks segment stack ;堆疊段dw 128 dup(?) ;注意這裡只有128個位元組

stacks ends

datas segment ;資料段;請在這裡定義您的資料

datas ends

codes segment ;**段assume cs:codes,ds:datasstart:

mov ax,datas ;初始化mov ds,ax

;請在這裡新增您的**

mov ax,4c00h ;退出程式int 21h

codes ends

end start

2樓:

assume cs:code,ss:stack,ds:data ; 段說明, 自己定義的code對應**段, stack對應堆疊段, data對應資料段

stack segment stack ; 堆疊段的定義byte 64 dup(0)

stack ends

data segment ; 資料段的定義msg byte 'hello world!$'

data ends

code segment ; **段的定義start:

mov ax,data

mov ds,ax

mov dx,offset msg

mov ah,9

int 21h

mov ax,4c00h

int 21h

code ends

end start

;**********===以上是一個常見的定義**********===

masm 5.0 以後也支援簡化定義如 .data 為資料段 .code表示**段, 形式如下:

.model small

.stack 200h ; 定義堆疊段大小.data ; 定義資料段szmsg db 'hello world!',13,10,'$'

.code ; **段的定義start:

mov ax,@data

mov ds,ax

mov es,ax

mov si,0

mov es:[bx+1+si],ah

lea dx,szmsg

mov ah,9

int 21h

;暫停,任意鍵關閉

mov ah,1

int 21h

mov ah,4ch ;結束,可以修改al設定返回碼int 21h

end start

3樓:收集板

棧直接在push pop中就可以使用。

資料段在.data裡面,可以初始化。

組合語言中,為什麼定義堆疊段的時候後面要多加一個stack 如:stack segment s 20

4樓:匿名使用者

assume cs:code,ss:stack,ds:data ; 段說明, 自己定義的code對應**段, stack對應堆疊段, data對應資料段

stack segment stack ; 堆疊段的定義byte 64 dup(0)

stack ends

data segment ; 資料段的定義msg byte 'hello world!$'

data ends

code segment ; **段的定義start:

mov ax,data

mov ds,ax

mov dx,offset msg

mov ah,9

int 21h

mov ax,4c00h

int 21h

code ends

end start

;**********===以上是一個常見的定義**********===

masm 5.0 以後也支援簡化定義如 .data 為資料段 .code表示**段, 形式如下:

.model small

.stack 200h ; 定義堆疊段大小.data ; 定義資料段

szmsg db 'hello world!',13,10,'$'

.code ; **段的定義

start:

mov ax,@data

mov ds,ax

mov es,ax

mov si,0

mov es:[bx+1+si],ah

lea dx,szmsg

mov ah,9

int 21h

;暫停,任意鍵關閉

mov ah,1

int 21h

mov ah,4ch ;結束,可以修改al設定返回碼int 21h

end start

組合語言中**段,資料段,附加段,堆疊段這四個段中哪個是唯一的?

5樓:匿名使用者

這要針對使用的具體記憶體模式而言,不深究的話,可以認為堆疊段是唯一的,阿門。。。

6樓:匿名使用者

附加,資料肯定不是唯一的,然後資料段。

一個段的最大長度為64k,如果**超過64k要定義多個**段,可以通過遠呼叫,或遠跳轉,到...

只有堆疊了

在組合語言中怎樣將資料段全部清零

功能 顯示當前目錄下的文字檔案內容 eof 1ah dseg segment fname db e asm test.bat 0 檔案完整路徑名 error1 db file not found 07h,0 提示資訊 error2 db reading error 07h,0buffer db 1位...

組合語言中sal 算術左移指令)和shl(邏輯左移指令)指令的區別

牧起雲高媼 算術用於帶符號數運算,邏輯用於不帶的。操作沒區別。都是最高位入cf最低位補0 白柏亢泰清 算術左移需要對符號位進行擴充套件,即最高位為符號位時,如果左移高位需要使用符號位的值填充,負數 補碼 就用1填充,正數就用0填充 邏輯左移不考慮符號位,直接在高位補0即可。而右移就不存在這種區別。 ...

怎麼理解彙編中的立即數,組合語言中 立即數 究竟是個什麼東東,時而可以代表

海獅 一樓的第一句是正確 cpu要找的資料就在命令中,是指令的一部分,比如mov al,0fh下面的措辭不當 它與 一起存於 段,這樣的資料稱為立即數,或者直接運算元。應當改為 立即數本身是 的一部分,在 段中可以找到。立即數的限制很多,而且速度很慢,不是很推薦。例如 mov ax,0 往往寫成 x...