1. 程式人生 > >彙編筆記_第六章

彙編筆記_第六章


title: 彙編筆記_第六章
date: 2018-12-26 17:44:59
tags:

  • 筆記
    categories:
  • 組合語言

包含多個段的程式

在程式碼段中使用資料

先看程式:

assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0fedh,0cbah,0987h
start:
mov bx,0
mov ax,0
mov cx,8
s:
add ax,cx:[bx]
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
  • dw 的含義是定義字型資料;
  • 程式的第一條指令前加了標號start,這個標號又在end後出現,這樣end除了可以同值編譯器結束程式外,還可以通知編譯器的入口在哪裡,即,若要CPU從何處卡是執行程式,只要在源程式中用end 標號指明就行;

所以程式的框架可以為:

assume cs:code

cdoe segment
...
資料
...
start:
...
程式碼
...
code ends

end start

將資料、程式碼、棧放入不同的段

  • 放到一個段中使得程式很混亂
  • 當處理的資料、棧、程式碼需要的空間超過64KB時,就不能放在一個段中;

偽指令;

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

...

mov ax,stack
mov ss,ax

mov ax,data
mov ds,ax

ss:sp就指向stack:16,CPU把stack段當棧空間用;

把資料段、堆疊段放在程式碼段前,其對應的段地址是x-1、x-2
放在後面緊跟程式碼段後面(貌似)

(end)