組合語言程式設計第六章
6.1在程式碼段中使用資料
dw,即“define word”。是定義字型資料。dw定義了8個字元資料,資料之間以逗號分隔。
因為cs前16個記憶體單元用來存放資料,所以程式應從這16個記憶體單元后開始執行。1.用start:放在程式開始處;2.在最後一個end處加上start(start只是標號,也可以自定字元)。
end start指明程式的入口,被轉化為入口地址,儲存在可執行檔案的描述資訊中,載入時程式從描述資訊中讀到入口地址,設定CS:IP。
6.2在程式碼段中使用棧
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(16個字型資料作為棧段)。將CS:10~CS:2F記憶體單做棧來用,SS:SP指向棧底CS:30。
6.3將資料、程式碼、棧放入不同的段
問題:(1)把他們放到一個段中使程式顯得混亂;
(2)前面程式中處理的資料很少,用到棧的空間也少,加上沒有多長的程式碼,放到一個段裡面沒有問題。但如果資料、程式碼、棧需要的空間超過64KB,就不能放在一個段中。
注意:
(1)不同段要有不同段名
(2)段名相當於一個標號,代表了段地址,是數字形式而非暫存器形式,所以 mov ds,data錯誤
(3)assume是偽指令,cs:code,ds:data,ss:stack,不會將相應暫存器和段code、stack、data連結
注意:
(1)不同段要有不同段名
(2)段名相當於一個標號,代表了段地址,是數字形式而非暫存器形式,所以 mov ds,data錯誤
(3)assume是偽指令,cs:code,ds:data,ss:stack,不會將相應暫存器和段code、stack、data連結