8086彙編 包含多個段的程式

2021-10-10 00:22:52 字數 1573 閱讀 5554

assume cs:code

code segment

dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

start: mov bx,0

mov ax,0

mov cx,8

s: add ax,cs:[bx]

add bx,2

loop s

mov ax,4c00h

int 21h

code ends

end start ;start 指明指令開始位址

;棧空,sp=棧最高位址+1

;資料逆序存放

assume cs:codesg

codesg segment

dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

start: mov ax,cs

mov ss,ax

mov sp,30h

mov bx,0

mov cx,8

s: push cs:[bx]

add bx,2

loop s

mov bx,0

mov cx,8

s0: pop cs:[bx]

add bx,2

loop s0

mov ax,4c00h

int 21h

codesg ends

end start

assume cs:code,ds:data,ss:stack

data segment

dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h

data ends

stack segment

dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

stack ends

code sgement

start: mov ax,stack

mov ss,ax

mov sp,20h ;設定棧頂ss:sp指向stack:20h

mov ax,data

mov ds,ax ;ds指向data段

mov bx,0

s: push ds:[bx]

add bx,2

loop s

mov bx,0

mov cx,8

s0: pop ds:[bx]

add bx,2

loop s0

mov ax,4c00h

int 21h

code ends

end start

段名就相當於乙個標號,代表了段位址

mov ds,data是錯誤的,不可以直接傳立即數

code

data

stack

xx-2

x-1

包含多個段的程式

在前一章我們提到0 200 0 2ff位址空間是相對安全的,但是這段空間的容量只有256個位元組。在作業系統中只要是通過作業系統申請的空間就都是安全的,作業系統負責給程式分配安全的空間。在作業系統允許的情況下,程式可以取得任意數量的空間。按程式獲取所需空間的時間,獲取空間方法可分為兩種 在引導程式的...

組合語言之包含多個段的程式

一 段和資料段同時存在 首先我們編寫乙個程式,將0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h累加並存放在ax中。assume cs code code segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0c...

組合語言 筆記 包含多個段的程式

問題 程式設計計算以下8個資料的和,結果存在ax暫存器中 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h assume cs code code segment dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,...