1樓:匿名使用者
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
彙編新手:我明明在**中定義了棧段,為什麼編譯時還有這個link : warning l4021: no stack segment
2樓:匿名使用者
你肯定沒有完整定義,例如:stack1 segment stack.
組合語言的DW是什麼意思,組合語言中的DW怎麼用,能舉個例子說明一下嗎
dw 是定義2位元組空間的意思。dw屬於彙編的一個偽指令,dw定義字型別變數,一個字資料佔2個位元組單元,讀完一個,偏移量加2。db定義位元組型別變數,一個位元組資料佔1個位元組單元,讀完一個,偏移量加1。dd定義雙字型別變數,一個雙字資料佔4個位元組單元,讀完一個,偏移量加4。彙編指令既不控制機器...
彙編子程式的問題,組合語言子程式是如何定義的
這不是返回自己本身迴圈執行,而是跳轉到子程式的第一行迴圈而已,有什麼不可以的,迴圈結構,任何地方都可以的。但有一點,子程式不論迴圈多少次,最終必須執行一行返加指令ret,也就是子程式必須要有一條ret指令,你的子程式最後是缺少一行ret指令的,加上了就可以的。組合語言子程式是如何定義的?這樣定義的 ...
組合語言PUSHCH合法嗎?為什麼
不合法,push語句16位下支援的是字操作,ch是位元組操作,所以是不合法 附 格式 push oprd 功能 實現壓入操作的指令是push指令 說明 1.oprd為16位 字 運算元,可以是暫存器或儲存器運算元.2.push的操作過程是 sp sp 2,sp oprd 即先修改堆疊指標sp 壓入時...